我正在开发一个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
答案 0 :(得分:3)
最简单的方法是覆盖窗口的WM_PAINT并在该点(在BeginPaint和EndPaint之间)调用绘制位图
这里有一个基于MFC的示例:
答案 1 :(得分:3)
处理WM_INITDIALOG
消息时,使用HWND hImageCtl = GetDlgItem(_hwnd, <image-control-resource-id>)
来获取图像控件的句柄(假设_hwnd
是对话框本身的句柄)。
然后使用hImageCtl
将STM_SETIMAGE
消息发送到。
答案 2 :(得分:2)
这可以使用多年,因为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,链接在。