MFC中在对话框中使用pictrue control动态加载一张图片。

本人MFC新手,找了很久资料也试了很久还是解决不了这个问题。使用pictrue control空间,将Type属性改为bitmap后,新建的对话框类名为show,show.cpp文件不知如何编写才能够使对话框正确运行以下代码:

CBitmap bitmap;
HBITMAP hBmp;
bitmap.LoadBitmap(IDB_BITMAP4);
hBmp = (HBITMAP)bitmap.GetSafeHandle();
m_canshu.SetBitmap(hBmp);

m_canshu声明为pictrue control的Cstatic变量,当我新建一个botton控件,并且编写botton被按下函数后能够正确显示IDB_BITMAP4图片资源,但是现在我想在显示对话框的时候就完成这一操作,不知道代码要写到哪里,或者编写什么消息函数。

点击button前

点击后

OnBnClickButton2() ---->> OnInitDialog()追问

抱歉。  我改了之后出现了这个问题。

追答

没代码,看不出什么问题。这个提示是句柄为NULL的错误。


其实,如果只是图片框默认显示图片,完全不需要代码,去掉OnInitDialog里面自己加的代码,在资源中设置如下:

追问

静态的我设置Image确实可以,我刚刚那个问题我找出来了,我没有在OnInitDialog函数中调用基类CDialogEx::OnInitDialog();函数,现在我改过来了,但是还是出不来。代码是这样的:

追答

你也太节省了,直接调用按钮函数啊。。。。

BOOL CxxDlg::OnInitDialog()
{
CDialog::OnInitDialog();

//CBitmap bitmap; //Dim As Class Member
bitmap.LoadBitmap(IDB_BITMAP1);
m_canshu.SetBitmap(bitmap);

return TRUE;  // return TRUE  unless you set the focus to a control
}

你的问题有两个。同一个CBitmap不能重复Load,会报错;bitmap的声明应该作为对话框成员变量,这样你只需要在OnInitDialog里面Load一次,以后(在按钮中)只需要调用SetBitmap就可以了。

追问

哈哈,可以了。谢谢啊。

追答

客气。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-28
在OnInitDialog()函数里面放这些代码就可以了
第2个回答  2014-04-28
把代码写OnInitDialog()里
相似回答
大家正在搜