Попробуйте это
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.
Оконная процедура для ваш класс окна "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);
Как вы проверяете, что на WM_CREATE
не звонят? Поскольку BUTTON
не является вашим классом окна (а скорее определен ОС), он владеет WndProc
для окна, а не вы - поэтому WM_CREATE
не должен вызывается для кнопки в вашем коде, потому что BUTTON
не ваш класс.
Если вы хотите получать сообщения для кнопки, вам придется создать подклассы, а затем предоставить свой собственный WndProc
.