RemoveMenu (hMenu, IDM_W00 + i, MF_BYCOMMAND);
/* отрисовка главного окна */
ShowWindow (hMainWnd, (int)s_info.wShowWindow);
return 1;
}
/* вывод сообщения об ошибке */
void error_msg(const TCHAR * msg)
{
MessageBox (hMainWnd, msg, app_name, MB_OK + MB_ICONERROR);
}
/* установка названия и размеров колонок для заданного окна */
void set_columns(const HWND hListWnd, const COLUMN * data)
{
int i=0;
LVCOLUMN lvc;
lvc.mask = LVCF_TEXT + LVCF_WIDTH;
while (data[i].length)
{
lvc.cx = data[i].length;
lvc.pszText = data[i].text;
ListView_SetColumn (hListWnd, i++, &lvc);
}
/*
** Установка ширины ненужных колонок в 0
*/
lvc.mask = LVCF_WIDTH;
lvc.cx = 0;
while (i < columns)
ListView_SetColumn (hListWnd, i++, &lvc);
}
/* добавление ряда элементов в список */
void add_listview_row(const HWND hWnd, const int count, TCHAR ** data)
{
LV_ITEM lvi;
lvi.mask = LVIF_TEXT + LVIF_PARAM;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.pszText = (LPSTR)data[0];
lvi.lParam = 0;
lvi.iItem = (int) SendMessage (hWnd, LVM_INSERTITEM, 0, (LPARAM)&lvi);
lvi.mask = LVIF_TEXT;
for (int i = 1; i < count; i++)
{
lvi.iSubItem = i;
lvi.pszText = (LPSTR)data[i];
SendMessage (hWnd, LVM_SETITEM, 0, (LPARAM)&lvi);
}
LVWnd_t * wnd = (LVWnd_t*) GetWindowLong (hWnd, GWL_USERDATA);
if (wnd)
wnd->rows++;
}
/* возврат номера элемента списка, на котором находится фокус ввода */
int get_focused_item(const HWND hWnd)
{
return (int)SendMessage(hWnd, LVM_GETNEXTITEM, (WPARAM)-1, LVNI_FOCUSED);
}
/* возврат ID выделенного элемента списка */
int get_selected_item_id(int * item_id, const HWND hWnd)
{
LV_ITEM lvi;
TCHAR buf[256];
lvi.iItem = get_focused_item(hWnd);
if (lvi.iItem != -1)
{
lvi.iSubItem = 0;
lvi.mask = LVIF_TEXT;
lvi.pszText = buf;
lvi.cchTextMax = sizeof(buf);
SendMessage(hWnd, LVM_GETITEM, 0, (LPARAM)&lvi);
return (*item_id = atoi(buf));
}
return lvi.iItem;
}
/* добавить элемент в окно выбора значения */
void add_combo_item(const HWND hWnd, const TCHAR * text, int data)
{
int index = (int)SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)text);
SendMessage(hWnd, CB_SETITEMDATA, index, data);
}
/* функция, вызываемая при сортировке результатов поиска */
int CALLBACK compare_func(LPARAM param1, LPARAM param2, LPARAM param_sort)
{
TCHAR buf1[256], buf2[256];
LV_ITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.pszText = buf1;
lvi.cchTextMax = sizeof(buf1);
lvi.iSubItem = (int)param_sort;
SendMessage (hResultsListWnd, LVM_GETITEMTEXT, param1, (LPARAM)&lvi);
lstrcpy (buf2, buf1);
SendMessage (hResultsListWnd, LVM_GETITEMTEXT, param2, (LPARAM)&lvi);
return lstrcmp((LPCTSTR)buf1, (LPCTSTR)buf2);
}
/* сортировка элементов в списке по 1 колонке */
void sort_column(const HWND hWnd, const int column_id)
{
LV_ITEM lvi;
TCHAR ** data;
LV_COLUMN lvc;
lvc.mask = LVCF_WIDTH;
int cols = 0, i, j;
lvi.mask = LVIF_TEXT;
lvi.cchTextMax = 256;
while (ListView_GetColumn(hWnd, cols, &lvc)) cols++;
int cnt = ListView_GetItemCount(hWnd);
data = (TCHAR**)malloc(sizeof(int)*cnt*cols);
for (i=0; i<cnt; i++)
for (j=0; j<cols; j++)
{
data[i*cols + j] = (TCHAR*)malloc(256);
lvi.iItem = i;
lvi.iSubItem = j;
lvi.pszText = (TCHAR*)data[i*cols + j];
ListView_GetItem(hWnd, &lvi);
}
TCHAR * tmp;
bool exchange = true;
while (exchange)
for (i=1, exchange=false; i<cnt; i++)
if (lstrcmp(data[(i-1)*cols + column_id], data[i*cols + column_id])>0)
{
for (j=0; j<cols; j++)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.