2012-10-13 44 views
2

我填写了WNDCLASS和该看一看hbrBackground属性,以我的位图像我怎样才能让WNDCLASS有一个位图图像作为背景?

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

这似乎并没有做任何改动,窗口为白色喜欢它是默认的,所以我需要找到了解这里发生了什么。 CreatePatternBrush不是正确的函数用于这样的事情吗?难道不能以这样的方式完成吗?

hbrBackground = fromimagefile(string bitmap,bool tile);

+0

你检查了返回值吗?检查它是否为NULL。 – Deamonpog

回答

0

你的代码应该在每一步检查错误。以下只是一个原始样本。

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函数是否可以使用。就像BigBoss告诉我们的,我们通常使用resource.h来处理这些事情。 如果你想从头开始学习,我建议你阅读Forger's Tutorials

1

在RC文件中插入资源时,可以使用字符串或int命名,但内部资源使用字符串处理其资源。所以当你用一个int(实际上是一个在resource.h中定义的ID为int)的名称来命名它时,所以当你有一个以这样的ID(整数ID)命名的资源时,你必须使用MAKEINTRESOURCE将该ID转换为LPCTSTR,将它传递到加载资源的函数,但在你的情况下,你传递一个字符串"grey-texture.bmp",所以你不应该使用MAKEINTRESOURCE并记住,LoadBitmap被设计用来加载合并到你的执行程序或DLL中的'.res`文件中的资源,加载磁盘上的文件!

相关问题