Как я могу заставить WNDCLASS иметь растровое изображение в качестве фона?

Я заполнил WNDCLASS и свойство hbrBackground для своего растрового изображения, как

wc.hbrBackground = CreatePatternBrush( LoadBitmap( hInstance, MAKEINTRESOURCE( "grey-texture.bmp" ) ) );

Это, кажется, не меняется вообще, окно белое, как и для значений по умолчанию, поэтому мне нужно выяснить, что здесь происходит. Разве CreatePatternBrush не является правильной функцией, используемой для чего-то подобного? Разве это не может быть сделано таким образом, как это?

hbrBackground = fromimagefile (строковое растровое изображение, плитка bool);

2

Решение

Ваш код должен проверять наличие ошибок на каждом этапе. Ниже приведен только необработанный образец.

HBITMAP hbmp = LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
if(NULL == hbmp)
{
MessageBox(NULL,"BitMap Loading Failed.","Error",MB_ICONEXCLAMATION | MB_OK);
}
else
{
HBRUSH hbr = CreatePatternBrush(hbmp);
if(NULL == hbr)
{
MessageBox(NULL,"Brush Creation Failed.","Error",MB_ICONEXCLAMATION | MB_OK);
}
else
{
wc.hbrBackground = hbr;
}
}

Затем ответьте еще раз с результатом. Я не уверен, если ваш LoadBitmap функция будет работать. Как Большой босс сказали, что мы обычно используем resource.h для обработки этих вещей.
Предлагаю прочитать Учебники по Forger если вы хотите узнать это с самого начала.

0

Другие решения

Смотрите следующие страницы:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd162462(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/dd183508(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633576(v=vs.85).aspx

Есть два типа кистей, логические и физические. CreatePatternBrush создает логическую кисть, но RegisterClass требует физической кисти.

2

Когда вы вставляете ресурс в свой RC-файл, вы можете назвать его либо строкой, либо int, но внутренне ресурсы обрабатывают свой ресурс с помощью строки. Поэтому, когда вы называете его с помощью int (на самом деле идентификатор, который определен в resource.h в int), поэтому, когда у вас есть ресурс, который назван с таким идентификатором (целочисленный идентификатор), вы должны использовать MAKEINTRESOURCE преобразовать этот идентификатор в LPCTSTR и передать его функции, которая загружает этот ресурс, но в вашем случае вы передаете строку "grey-texture.bmp" так что не стоит использовать MAKEINTRESOURCE и запомни, LoadBitmap предназначен для загрузки ресурсов из файла ‘.res`, который объединен с вашей исполнительной или DLL и не может загружать файлы на диск !!

1