Я заполнил WNDCLASS и свойство hbrBackground для своего растрового изображения, как
wc.hbrBackground = CreatePatternBrush( LoadBitmap( hInstance, MAKEINTRESOURCE( "grey-texture.bmp" ) ) );
Это, кажется, не меняется вообще, окно белое, как и для значений по умолчанию, поэтому мне нужно выяснить, что здесь происходит. Разве CreatePatternBrush не является правильной функцией, используемой для чего-то подобного? Разве это не может быть сделано таким образом, как это?
hbrBackground = fromimagefile (строковое растровое изображение, плитка bool);
Ваш код должен проверять наличие ошибок на каждом этапе. Ниже приведен только необработанный образец.
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 если вы хотите узнать это с самого начала.
Смотрите следующие страницы:
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 требует физической кисти.
Когда вы вставляете ресурс в свой RC-файл, вы можете назвать его либо строкой, либо int, но внутренне ресурсы обрабатывают свой ресурс с помощью строки. Поэтому, когда вы называете его с помощью int (на самом деле идентификатор, который определен в resource.h
в int), поэтому, когда у вас есть ресурс, который назван с таким идентификатором (целочисленный идентификатор), вы должны использовать MAKEINTRESOURCE
преобразовать этот идентификатор в LPCTSTR
и передать его функции, которая загружает этот ресурс, но в вашем случае вы передаете строку "grey-texture.bmp"
так что не стоит использовать MAKEINTRESOURCE
и запомни, LoadBitmap
предназначен для загрузки ресурсов из файла ‘.res`, который объединен с вашей исполнительной или DLL и не может загружать файлы на диск !!