按钮上显示位图?
按钮上如何显示位图呢?
试了半天,还有一些问题,请大家指教
1 先试简单的,让它显示icon
用MSDN里面介绍的:
CButton myButton;
myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_ICON,
CRect(10,10,60,50), pParentWnd, 1);
myButton.SetIcon( ::LoadIcon(NULL, IDI_QUESTION) );
可以,但只能显示系统定制的icon,自己的icon不行,
myButton.SetIcon(::LoadIcon(NULL, IDR_MAINFRAME) );
显示:
F:\VCP32\wlc4\wlc4Dlg.cpp(127) : error C2664: 'LoadIconA' :
cannot convert parameter 2 from 'const int' to 'const char *'
解决,用以下方法解决:
myButton.SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME) );
或者用:
myButton.SetIcon(::LoadIcon(AfxGetInstanceHandle(),
MAKEINTRESOURCE( IDR_MAINFRAME)) );
2 显示位图
用CBitmapButton 类可以轻松实现,不再赘述,参见MSDN
用MSDN关于CButton::SetBitmap的例子:
CButton myButton;
myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_BITMAP,
CRect(10,10,60,50), pParentWnd, 1);
myButton.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CHECK)) );
编译错:
F:\VCP32\wlc4\wlc4Dlg.cpp(125) : error C2065: 'OBM_CHECK' : undeclared identifier
用系统另外图标:
myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_BITMAP,
CRect(10,10,60,50), this, 1);
myButton.SetBitmap( ::LoadBitmap(NULL, MAKEINTRESOURCE(IDI_QUESTION)) );
编译通过,执行时按钮上上无任何显示。
myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_BITMAP,
CRect(10,10,60,50), this, 1);
myButton.SetBitmap( ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_QUESTION)) );
编译通过,执行时按钮上上无任何显示。
突然醒悟,以上两个都是icon,当然不行,换用自己程序中引入的BMP的ID:
myButton.SetBitmap( ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_bit)) );
成功!(但:按钮上不像CBitmapButton那样可以自动sizeto图片的大小)
请大家指教。另:OBM_CHECK是什么?我用的的win2000pro,是不是没有这个定义。