重庆加工贸易困境:pic

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 22:08:57

所谓的静态有两种,一种是在picture属性中直接加载(type选择bitmap,image选择已加载到资源中的位图),另一种是通过编程加载,这两种的前提都要我们先把位图导入到资源中去,下面说下后一种。

001:新建对话框工程,加入picture控件,关联变量为m_Bmp(类型为control),ID也要改一下,因为采用默认的,有重名,在关联变量的时候找不到picture项,再拖一个按钮上去,我们要实现的结果是,单击一下按钮,就会显示出位图

002:双击按钮,在消息处理函数中添加

HBITMAP hBitmap;
hBitmap = ::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));
m_Bmp.SetBitmap(hBitmap);                 /***IDB_BITMAP1是你载入资源中位图的ID号***/

003:此时运行的话,图片却没有出来,这是因为你还没有把picture控件中的type设置为bitmap类型,设置一下,一切ok!简简单单!

下面说下动态载入,动态载入就是不用事先把位图导入资源,直接在程序运行的时候,弹出一个文件选择对话框,选择你想要显示的对话框即可。此列中依旧要把picture控件中的type设置为bitmap类型,否则会出现图片显示不出来的问题。

和以上静态显示唯一的区别只体现在按钮的消息处理函数中,此列中的消息处理函数内容为

CString m_strfile; /***你在文件选择对话框中选中的文件名***/
CRect r;
GetClientRect(&r);
    CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
   "Bmp files(*.bmp)|*.bmp|",NULL);
    if(dlg.DoModal ())
{
   m_strfile=dlg.GetPathName ();
}

HBITMAP hbitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),
           m_strfile,
           IMAGE_BITMAP,
           r.Width()/2,
           r.Height()/2,
           LR_LOADFROMFILE);   
m_Bmp.SetBitmap(hbitmap);