工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2179|回复: 2

急!!请教VC问题?

[复制链接]
发表于 2008-5-23 11:02 | 显示全部楼层 |阅读模式
请问如何在子对话框中显示图片,除了使用PICTURE控件外,还有什么方法?因为书上教的都是在主界面中显示图片的,都是在ONPAINT()中加代码,但是子对话框是插入的资源,它的类中没有ONPAINT函数,要怎么办?
   或者使用PICTURE控件,但是图片太大,显示不了图片全部怎么办?
发表于 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 TRUE  unless you set the focus to a control
}
在打开类向导(不要告诉我你不会,ctrl+w),找到WM_CTLCOLOR消息(注意选择对应的类,不要选错,是C***Dlg),重载得对应函数OnCtlColor(),添加如下:

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

评分

1

查看全部评分

回复

使用道具 举报

发表于 2008-5-26 18:40 | 显示全部楼层
只要是对话框就能添加ONPAINT函数

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

或者按ctrl + w呼出建立类向导,切换到class info页面,将对话框的Message filter改为window
再切回MessageMaps,你就会看到原来被隐藏的消息映射全回来了,随便加吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-30 06:58

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表