+ -
当前位置:首页 → 问答吧 → BM_SETIMAGE设置按钮位图问题

BM_SETIMAGE设置按钮位图问题

时间:2011-12-11

来源:互联网

WM_CREATE:
hwndSmaller = CreateWindow (TEXT ("BUTTON"), TEXT (""),

WS_CHILD | WS_VISIBLE | BS_OWNERDRAW | BS_BITMAP | BS_ICON ,

0, 0, BTN_WIDTH, BTN_HEIGHT,

hwnd, (HMENU) ID_SMALLER, hInst, NULL) ;

hSmallBitmap=LoadBitmap( ((CREATESTRUCT*)lParam)->hInstance,"SMALL");

WM_LBUTTONDOWN:
hButton=GetDlgItem(hwnd,ID_SMALLER);
SendMessage(hButton,BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hSmallBitmap);

用上面的代码设置按钮上的位图怎么没反应?

作者: desperate_stu   发布时间: 2011-12-11

LoadBitmap成功了?

LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMP_DLG_BG)) // IDB_BMP_DLG_BG为位图资源ID

作者: likang0712   发布时间: 2011-12-11

引用 1 楼 likang0712 的回复:

LoadBitmap成功了?

LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMP_DLG_BG)) // IDB_BMP_DLG_BG为位图资源ID


LoadBitmap成功了,可以用BitBlt显示出来

作者: desperate_stu   发布时间: 2011-12-11

查下hSmallBitmap如为局部变量,其值在函数返回后不再保存。

另可在SendMessage(hButton,BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hSmallBitmap);处加一断点。跟踪看下当前各参数是否正确赋值。

作者: fight_in_dl   发布时间: 2011-12-11

引用 3 楼 fight_in_dl 的回复:

查下hSmallBitmap如为局部变量,其值在函数返回后不再保存。

另可在SendMessage(hButton,BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)hSmallBitmap);处加一断点。跟踪看下当前各参数是否正确赋值。


hSmallBitmap是全局静态的,加了断点看了几个参数都有值啊,而且SendMessage(hButton,BM_CLICK,(WPARAM)0,(LPARAM)0);是有用的。

作者: desperate_stu   发布时间: 2011-12-11