2012-10-13 46 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`文件中的資源,加載磁盤上的文件!

相關問題