RogerQ 发表于 2008-5-23 11:02

急!!请教VC问题?

请问如何在子对话框中显示图片,除了使用PICTURE控件外,还有什么方法?因为书上教的都是在主界面中显示图片的,都是在ONPAINT()中加代码,但是子对话框是插入的资源,它的类中没有ONPAINT函数,要怎么办?
   或者使用PICTURE控件,但是图片太大,显示不了图片全部怎么办?

zaijzhgh 发表于 2008-5-23 15:13

先在资源里Import一张图片,ID为IDB_BITMAP1
***Dlg.h(取决于你的工程名)中增加CBrush m_br;//在public中定义
***Dlg.cpp中
在初始化函数OnInitDialog()中加入:
BOOL CTestDlg::OnInitDialog()
{
             CDialog::OnInitDialog();
             CBitmap bmp;
             bmp.LoadBitmap(IDB_BITMAP1);
             m_br.CreatePatternBrush(&bmp);
             bmp.DeleteObject();
            return TRUE;// return TRUEunless you set the focus to a control
}
在打开类向导(不要告诉我你不会,ctrl+w),找到WM_CTLCOLOR消息(注意选择对应的类,不要选错,是C***Dlg),重载得对应函数OnCtlColor(),添加如下:

HBRUSHCTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
               HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
            if (pWnd == this)
             {
                     return m_br;
            }
         return hbr;
}
然后编译运行就可以了.

皇家救星 发表于 2008-5-26 18:40

只要是对话框就能添加ONPAINT函数

可以自己手工添加消息映射

或者按ctrl + w呼出建立类向导,切换到class info页面,将对话框的Message filter改为window
再切回MessageMaps,你就会看到原来被隐藏的消息映射全回来了,随便加吧
页: [1]
查看完整版本: 急!!请教VC问题?