[英]how to set image in dialogbox in c++ win32 API?
我正在開發一個C ++ Api項目。
我將使用dialogboxparam創建一個對話框...
我已經完成創建和設置文本框,標簽和按鈕的工作了。
現在我想在對話框頂部添加圖像...
我確實在WM_INITDIALOG中使用此代碼:
HBITMAP hImage= (HBITMAP)LoadImage(NULL,L"C:\\WINDOWS\\system32\\BMA-Images\\login-header",IMAGE_BITMAP,LR_DEFAULTSIZE ,LR_DEFAULTSIZE ,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
SendMessage(_hwnd,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hImage);
但這沒有用...誰能幫助解決這個問題...在此先感謝Sonu
最簡單的方法是為窗口覆蓋WM_PAINT並在該點(在BeginPaint和EndPaint之間)調用繪制位圖
這里有一個基於MFC的示例:
處理WM_INITDIALOG
消息時,請使用HWND hImageCtl = GetDlgItem(_hwnd, <image-control-resource-id>)
獲取圖像控件的句柄(假定_hwnd
是對話框本身的句柄)。
然后使用hImageCtl
將STM_SETIMAGE
消息發送到。
自Windows 98對我以來,這已經有效了多年:
//globals
HBRUSH hbr;
PAINTSTRUCT wcd;
LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam,
LPARAM lParam )
{
switch( msg ) {
case WM_PAINT:
if (GetUpdateRect(hWnd,r,0)) {
BeginPaint(hWnd,&wcd);
if (wParam == NULL) FillRect(wcd.hdc,&wcd.rcPaint,hbr);
EndPaint(hWnd,&wcd);
}
break;
case WM_COMMAND:
///your code
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int Show)
{
ghInstance = hInstance;
//Prepare brush for background
hbr=CreatePatternBrush(LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_BGROUND)));
///your code
DialogBox(hInstance,"MAIN", NULL,(DLGPROC)MainWndProc);
///your code
return(FALSE);
}
IDB_BGROUND-鏈接到的圖像資源的ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.