簡體   English   中英

如何在C ++ Win32 API的對話框中設置圖像?

[英]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的示例:

http://www.programmersheaven.com/mb/mfc_coding/113034/113034/how-do-i-set-a-background-picture-in-a-dialog-box-/

處理WM_INITDIALOG消息時,請使用HWND hImageCtl = GetDlgItem(_hwnd, <image-control-resource-id>)獲取圖像控件的句柄(假定_hwnd是對話框本身的句柄)。

然后使用hImageCtlSTM_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM