请问,如何在对话框的PICTURE控制上显示BMP图片?(我用SDK写的) 有好多人使用MFC写的,请问如果用SDK怎么写啊?《WINDOWS程序设计》上面好像没找到。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用法在VC中都一样啊在资源view中导入你想加的位图在对话框中加入PICTURE控件PICTURE控件属性中的类型选bitmapID选你给位图定义的ID号就可以了 不用picture,在WM_PAINT里面画就行了 LRESULT CALLBACK StaticProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UINT idTimer = 1; static UINT i; static HBITMAP hBmp; switch (message) { case WM_INITDIALOG: hBmp = LoadBitmap(hinst, "OneIco"); //加载位图 SendDlgItemMessage(hDlg, // 对话框句柄 IDB_PIC, // 图片控件ID STM_SETIMAGE, // 设置消息 (WPARAM) IMAGE_BITMAP, // 图象类型 (LPARAM) hBmp); // 位图句柄 return TRUE; case WM_COMMAND: if (wParam == IDOK || wParam == IDCANCEL) { EndDialog(hDlg, TRUE); return TRUE; } return 0; case WM_DESTROY: // clean up return 0; } return FALSE; UNREFERENCED_PARAMETER(lParam); } 主要是这段 hBmp = LoadBitmap(hinst, "OneIco"); //加载位图 SendDlgItemMessage(hDlg, // 对话框句柄 IDB_PIC, // 图片控件ID STM_SETIMAGE, // 设置消息 (WPARAM) IMAGE_BITMAP, // 图象类型 (LPARAM) hBmp); // 位图句柄 BOOL CALLBACK AboutDlgProc(HWND hwnd, UINT message , WPARAM wParam, LPARAM lParam){ HDC hdc,hdcMem; //PAINTSTRUCT ps; static HINSTANCE hInstance;/* static HBITMAP hZYYBitmap; BITMAP zyybitmap; static int picWid,picHei; */ //*************************** switch(message) { case WM_INITDIALOG: //hInstance=((LPCREATESTRUCT)lParam)->hInstance ;//这种写法此处会出错 hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE); //这个正确 hZYYBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_ZYY)); GetObject(hZYYBitmap,sizeof(BITMAP),&zyybitmap); picWid=zyybitmap.bmWidth; picHei=zyybitmap.bmHeight ; return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: EndDialog(hwnd,0); return TRUE; } break; case WM_PAINT: hdc=GetDC(hwnd); hdcMem=CreateCompatibleDC(hdc); SelectObject(hdcMem,hZYYBitmap); //SelectObject(hdcMem,hBitmap); StretchBlt(hdc,50,60,150,186,hdcMem,0,0,picWid,picHei,SRCCOPY); //StretchBlt(hdc,25,30,75,93,hdcMem,0,0,cxSource,cySource,SRCCOPY); DeleteDC(hdcMem); ReleaseDC(hwnd,hdc); break; } return FALSE;} 高手请帮忙,关于内嵌子对话框不响应回车键。。 如何让CHtmlView重新读取注册表中的UserAgent信息? 关于telnet "rageliu(长白山的水怪居然是假的 近期目标是还债!!!等有钱了去)" 请进来接分 如何利用钩子来得到别的程序的全局变量? 从缓冲区中开始执行新的程序 关于多国语言程序设计的方法。 中文/英文 等。 CListCtrl高手请进! 请问如何通过netbios把一个文件传到另外一个机器上去? 程序时不时会出现一个错误 如何让状态栏中工具按钮提示和用户定义的字符串都能显示? 请问在vc中如何通过程序将一幅图片插入到一个word文当中去。
在资源view中导入你想加的位图
在对话框中加入PICTURE控件
PICTURE控件属性中的类型选bitmap
ID选你给位图定义的ID号就可以了
{
UINT idTimer = 1;
static UINT i;
static HBITMAP hBmp;
switch (message)
{
case WM_INITDIALOG:
hBmp = LoadBitmap(hinst, "OneIco"); //加载位图
SendDlgItemMessage(hDlg, // 对话框句柄
IDB_PIC, // 图片控件ID
STM_SETIMAGE, // 设置消息
(WPARAM) IMAGE_BITMAP, // 图象类型
(LPARAM) hBmp); // 位图句柄
return TRUE;
case WM_COMMAND:
if (wParam == IDOK
|| wParam == IDCANCEL)
{
EndDialog(hDlg, TRUE);
return TRUE;
}
return 0;
case WM_DESTROY: // clean up
return 0;
}
return FALSE;
UNREFERENCED_PARAMETER(lParam);
}
SendDlgItemMessage(hDlg, // 对话框句柄
IDB_PIC, // 图片控件ID
STM_SETIMAGE, // 设置消息
(WPARAM) IMAGE_BITMAP, // 图象类型
(LPARAM) hBmp); // 位图句柄
{
HDC hdc,hdcMem;
//PAINTSTRUCT ps;
static HINSTANCE hInstance;/*
static HBITMAP hZYYBitmap;
BITMAP zyybitmap;
static int picWid,picHei;
*/
//***************************
switch(message)
{
case WM_INITDIALOG:
//hInstance=((LPCREATESTRUCT)lParam)->hInstance ;//这种写法此处会出错
hInstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
//这个正确
hZYYBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_ZYY));
GetObject(hZYYBitmap,sizeof(BITMAP),&zyybitmap);
picWid=zyybitmap.bmWidth;
picHei=zyybitmap.bmHeight ;
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
EndDialog(hwnd,0);
return TRUE;
}
break;
case WM_PAINT:
hdc=GetDC(hwnd);
hdcMem=CreateCompatibleDC(hdc);
SelectObject(hdcMem,hZYYBitmap);
//SelectObject(hdcMem,hBitmap);
StretchBlt(hdc,50,60,150,186,hdcMem,0,0,picWid,picHei,SRCCOPY);
//StretchBlt(hdc,25,30,75,93,hdcMem,0,0,cxSource,cySource,SRCCOPY);
DeleteDC(hdcMem);
ReleaseDC(hwnd,hdc);
break;
}
return FALSE;
}