Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекции 4-5.pptx
Скачиваний:
67
Добавлен:
18.02.2023
Размер:
1.46 Mб
Скачать

int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)

{

MSG msg; HWND hwnd;

if(!InitApp(hInstance)) return FALSE;

hInst = hInstance;

hwnd = CreateWindow( szClassName, szWindowTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, 0, 0, hInstance, NULL);

if(!hwnd) return FALSE;

ShowWindow(hwnd, nCmdShow);

UpdateWindow(hwnd);

while(GetMessage(&msg, 0, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

BOOL InitApp(HINSTANCE hInstance)

{

ATOM aWndClass; WNDCLASS wc;

memset(&wc, 0, sizeof(wc));

wc.style = 0;

wc.lpfnWndProc = (WNDPROC) WndProc; wc.cbClsExtra = 0;

wc.cbWndExtra = 0; wc.hInstance = hInstance;

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszMenuName = (LPSTR)NULL;

wc.lpszClassName = (LPSTR)szClassName;

aWndClass = RegisterClass(&wc);

return (aWndClass != 0);

}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

static HWND hComboBox; static HWND hButton;

switch (msg)

{

case WM_CREATE:

{

hComboBox = CreateWindow("combobox", NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD | LBS_WANTKEYBOARDINPUT, 30, 30, 200, 100, hwnd, (HMENU) ID_CBB, hInst, NULL);

SendMessage(hComboBox, WM_SETREDRAW, FALSE, 0L);

SendMessage(hComboBox, CB_ADDSTRING, 0,(LPARAM)(LPSTR)"Зеленый"); SendMessage(hComboBox, CB_ADDSTRING, 0,(LPARAM)(LPSTR)"Красный"); SendMessage(hComboBox, CB_ADDSTRING, 0,(LPARAM)(LPSTR)"Розовый"); SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)(LPSTR)"Пурпурный"); SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)(LPSTR)"Синий"); SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)(LPSTR)"Желтый"); SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)(LPSTR)"Фиолетовый"); SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM)(LPSTR)"Черный"); SendMessage(hComboBox, CB_ADDSTRING, 0,(LPARAM)(LPSTR)"Белый");

SendMessage(hComboBox, WM_SETREDRAW, TRUE, 0L);

InvalidateRect(hComboBox, NULL, TRUE);

hButton = CreateWindow("button", "OK", WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON, 250, 30, 50, 20, hwnd, (HMENU) ID_BUTTON, hInst, NULL);

return 0;

}

case WM_COMMAND:

{

if(wParam == ID_CBB)

{

if(HIWORD(lParam) == (unsigned)LBN_ERRSPACE)

{

MessageBox(hwnd, "Мало памяти", szWindowTitle, MB_OK);

}

}

else if(wParam == ID_BUTTON)

{

int uSelectedItem; char Buffer[256];

uSelectedItem = (int)SendMessage(hComboBox, CB_GETCURSEL, 0, 0L);

if(uSelectedItem != CB_ERR)

{

SendMessage(hComboBox, CB_GETLBTEXT, uSelectedItem, (LPARAM)Buffer);

MessageBox(hwnd, (LPSTR)Buffer, szWindowTitle, MB_OK);

}

}

return 0;

}

case WM_SETFOCUS:

{

SetFocus(hComboBox); return 0;

}

case WM_PAINT:

{

HDC hdc; PAINTSTRUCT ps;

hdc = BeginPaint(hwnd, &ps);

TextOut(hdc, 30, 10,"Выберите цвет и нажмите кнопку 'OK'", 35); EndPaint(hwnd, &ps);

return 0;

}

case WM_DESTROY:

{

PostQuitMessage(0); return 0;

}

}

return DefWindowProc(hwnd, msg, wParam, lParam);

}

http://www.frolov-lib.ru/books/bsp/v12/ch2_6.htm

Следующая

тема:

Графический вывод в окно.

Интерфейс графических устройств

Соседние файлы в папке Лекции