- •Лекции 4- 5
- •Элементы
- •Основные стандартные
- •Создание
- •Кнопки – класс “button”
- •BS_LEFTTEXT
- •Кнопки могут находиться в двух состояниях: нажатом и отжатом. Для управления этими состояниями
- •Кнопки стилей BS_3STATE, BS_CHECKBOX, BS_RADIOBUTTON не перерисовываются при их переключении. Для выполнения этого
- •Статический элемент
- •SS_BLACKFRAME
- •Редактор текста –
- •ES_AUTOHSCROLL
- •Сообщения для редактора текста
- •Младшее слово wParam – идентификатор.
- •Пример
- •Функции StrToInt и IntToStr() для перевода строки в целое число и обратно.
- •LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
- •case WM_COMMAND:
- •Пример работы программы
- •Списки строк –
- •Список со стиле LBS_NOTIFY посылает в окно сообщение MW_COMMAND. При этом младшее слово
- •Сообщения для списка строк
- •Сообщения для списка строк
- •Пример
- •int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {
- •//Функция InitApp
- •LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- •case WM_COMMAND:
- •// Когда главное окно приложения получает фокус ввода, отдаем фокус списку case WM_SETFOCUS:
- •http://www.frolov-lib.ru/books/bsp/v12/ch2_5.htm
- •Комбинированный
- •Сообщения от комбинированного списка
- •Сообщения для комбинированного списка
- •Сообщения для комбинированного списка
- •Пример
- •int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
- •BOOL InitApp(HINSTANCE hInstance)
- •LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- •case WM_COMMAND:
- •case WM_SETFOCUS:
- •http://www.frolov-lib.ru/books/bsp/v12/ch2_6.htm
- •Следующая
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
Следующая
тема:
Графический вывод в окно.
Интерфейс графических устройств