Отображение битового массива на окне класса “КНОПКИ” в WIN32

Попробуйте это

var img = Buffer.from(base64.substr(23), 'base64');
var dimensions = sizeOf(img);
console.log(dimensions.width, dimensions.height);

substr(23) обрезает data:image/jpeg;base64,, что необходимо для правильного создания Buffer из ваших данных base64.

5
задан tyler 9 May 2009 в 22:51
поделиться

2 ответа

Оконная процедура для ваш класс окна "a" вызывается с помощью WM_CREATE , когда создается окно этого класса. Это во время вашего первого вызова CreateWindow , то есть перед созданием дочернего окна BUTTON . WM_CREATE означает «вы создаете» - это не означает, что «создается дочерний элемент».

Решение состоит в том, чтобы вызвать d = CreateWindow (L "BUTTON" ... ) в обработчике WM_CREATE для класса «a»:

case WM_CREATE:
    d = CreateWindow(L"BUTTON", NULL, WS_CHILD | WS_VISIBLE | BS_BITMAP, 
                     10, 10, 180, 180, hwnd, 200, hInstance, 0);
    hbit = LoadBitmap(hInstance, L"Bit");
    SendMessage(d, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hbit);
4
ответ дан 15 December 2019 в 01:10
поделиться

Как вы проверяете, что на WM_CREATE не звонят? Поскольку BUTTON не является вашим классом окна (а скорее определен ОС), он владеет WndProc для окна, а не вы - поэтому WM_CREATE не должен вызывается для кнопки в вашем коде, потому что BUTTON не ваш класс.

Если вы хотите получать сообщения для кнопки, вам придется создать подклассы, а затем предоставить свой собственный WndProc .

0
ответ дан 15 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: