Редактировать: Я думаю, что сообщение WM_CREATE не отправляется при создании дочерних окон (а именно, моей кнопки). Поэтому, вызывая SendMessage во время WM_CREATE, я отправляю сообщение в окно, которое еще не было создано. Решением на данный момент является вызов SendMessage () во время сообщения WM_SHOWWINDOW. Дочерние окна отправляют сообщения WM_CREATE при создании?
Почему растровое изображение не отображается на кнопке? Растровое изображение имеет размер 180x180 пикселей.
У меня есть файл ресурсов с:
Bit BITMAP bit.bmp
Затем я создаю главное окно и дочернее окно «КНОПКА» с:
HWND b, d;
b = CreateWindow(L"a", NULL, WS_OVERLAPPEDWINDOW, 0, 0, 500, 500, 0, 0,
hInstance, 0);
d = CreateWindow(L"BUTTON", NULL, WS_CHILD | WS_VISIBLE | BS_BITMAP,
10, 10, 180, 180, b, 200, hInstance, 0);
Затем в моей процедуре Windows я посылаю окну «КНОПКА» сообщение «BM_SETIMAGE» с:
HBITMAP hbit;
case WM_CREATE: // It works if I change this to: case WM_SHOWWINDOW
hbit = LoadBitmap(hInstance, L"Bit");
SendMessage(d, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hbit);
LoadBitmap () возвращает действительный дескриптор, поскольку он не возвращает NULL, и я могу отобразить растровое изображение в клиентской области с помощью функции BitBlt (). Поэтому я либо неправильно отправляю сообщение, либо неправильно создаю окно "КНОПКА".
Что я делаю не так?
Спасибо!