Новичок
Джуниор
Регистрация: 09.11.2016
Сообщений: 1
|
Не получается послать сообщение ListView
Привет всем! Очень хочу чтобы вы мне помогли с этой проблемой. Я пытаюсь реализовать ListView не в диалоговом окне а в основном.
Вот и сам код
Код:
#include <windows.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <sys\types.h>
#include <sys\stat.h>
#include <errno.h>
#include "resource.h"
#include <commctrl.h>
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
char szWinName[] = "Мое окно"; /* Имя класса окна */
HINSTANCE hInst;
HWND hdwnd;
/*****************/
static HWND hList = NULL; // List View identifier
LVCOLUMN LvCol; // Make Coluom struct for ListView
LVITEM LvItem; // ListView Item struct
LV_DISPINFO lvd;
MSG msg;
/********************/
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode)
{
HWND hwnd;
MSG msg;
WNDCLASS wcl;
////////////////////////
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwICC = ICC_LISTVIEW_CLASSES;
InitCtrls.dwSize = sizeof(INITCOMMONCONTROLSEX);
BOOL bRet = InitCommonControlsEx(&InitCtrls);
/////////////////////////
/*Определить класс окна*/
wcl.hInstance = hThisInst; /*дескриптор данного приложения*/
wcl.lpszClassName = szWinName; /*имя класса окна*/
wcl.lpfnWndProc = WindowFunc; /*функция окна*/
wcl.style = 0; /*стиль по умолчанию*/
wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION); /*стандартная иконка*/
wcl.hCursor = LoadCursor(NULL, IDC_ARROW); /*стандартный курсор*/
wcl.lpszMenuName = "MYMENU"; /*без меню*/
wcl.cbClsExtra = 0; /*без дополнительной*/
wcl.cbWndExtra = 0; /*информации*/
/*заполнение окна белым цветом*/
wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
/*Зарегистрировать класс окна*/
if (!RegisterClass(&wcl))
return 0;
/*Создать окно*/
hwnd = CreateWindow(szWinName, /*имя класса*/
"Демонстрация окон сообщений", /*заголовок*/
WS_OVERLAPPEDWINDOW, /*стиль окна*/
CW_USEDEFAULT, /*Х-координата, определяется Windows*/
CW_USEDEFAULT, /*Y-координата, определяется Windows*/
CW_USEDEFAULT, /*ширина, определяется Windows*/
CW_USEDEFAULT, /*высота, определяется Windows*/
HWND_DESKTOP, /*нет родительского окна*/
NULL, /*нет меню*/
hThisInst, /*дескриптор приложения*/
NULL); /*без дополнительных элементов*/
/*Показать окно и перерисовать содержимое*/
ShowWindow(hwnd, nWinMode);
UpdateWindow(hwnd);
/*Запустить цикл обработки сообщений*/
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg); /*Разрешить использование клавиатуры*/
DispatchMessage(&msg); /*Вернуть управление Windows*/
}
return msg.wParam;
}
int response;
enum pf_mode { pf_pause, pf_cls };
enum rec_st { st_normal, st_deleted };
enum ins_mode { in_before, in_after };
struct rec_base
{
char name[50];
char code[15];
char ed_izm[10];
char call[10];
char prise[30];
char data[12];
}const_spec, *pt_spec, sort;
char init_dialog_mes[50];
int base;
int i = 0;
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT paintstruct;
RECT rcClient;
HWND LIST;
GetClientRect(hwnd, &rcClient);
switch (message)
{
case WM_CREATE:
{
LIST = CreateWindow(WC_LISTVIEW, "", WS_CHILD | WS_VSCROLL | WS_BORDER | WS_VISIBLE | LBS_SORT, 150, 10, 530, 355, hwnd, HMENU(IDM_CODE_SAMPLES), NULL, NULL);
UpdateWindow(hwnd);
}
break;
case WM_INITDIALOG:
{
InitCommonControls();
hList = GetDlgItem(LIST, IDM_CODE_SAMPLES); // get the ID of the ListView
SendMessage(hList, LVM_INSERTCOLUMN, 0, (LPARAM)&LvCol); // Insert/Show the coloum
LvCol.pszText = "Код";
ShowWindow(hwnd, SW_NORMAL);
UpdateWindow(hwnd);
}
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDM_1:
{
strcpy(init_dialog_mes, "Наименование товара");
DialogBox(hInst, "MYDB", hwnd, (DLGPROC)DialogFunc);
}
break;
case IDM_3:
{
strcpy(init_dialog_mes, "Выборка по названию товара");
DialogBox(hInst, "MYDB3", hwnd, (DLGPROC)Dialog3Func);
}
break;
case IDM_10:
{
hdc = GetDC(hwnd);
TextOut(hdc, 1, 1, "123878787878", 8);
ReleaseDC(hwnd, hdc);
}
break;
}
break;
case WM_DESTROY: /*завершение программы*/
PostQuitMessage(0);
break;
default:
/*Все сообщения, не обрабатываемые в данной функции, направляются на обработку по умолчанию*/
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
Вопрос именно по этому участку если кто не понял.
Код:
case WM_CREATE:
{
LIST = CreateWindow(WC_LISTVIEW, "", WS_CHILD | WS_VSCROLL | WS_BORDER | WS_VISIBLE | LBS_SORT, 150, 10, 530, 355, hwnd, HMENU(IDM_CODE_SAMPLES), NULL, NULL);
UpdateWindow(hwnd);
}
break;
case WM_INITDIALOG:
{
InitCommonControls();
hList = GetDlgItem(LIST, IDM_CODE_SAMPLES); // get the ID of the ListView
SendMessage(hList, LVM_INSERTCOLUMN, 0, (LPARAM)&LvCol); // Insert/Show the coloum
LvCol.pszText = "Код";
ShowWindow(hwnd, SW_NORMAL);
UpdateWindow(hwnd);
}
break;
почему не получается послать сообщение ListView.. окно списка постоянно пустое.. Помогите! Очень прошу!
Может я что то не так вызываю.. объясните пжлст
Последний раз редактировалось Jaxmackey; 10.11.2016 в 00:02.
|