程序有两个窗口,我的目的的从父窗口进入子窗口时,子窗口会显示一张图片。由于一进入子窗口便要加载图片,因此我给子窗口增加了一个初始化函数OnInitDialog(),这样当父窗口调用子窗口时便会自动调用该函数(应该没有错吧?),然后我在子窗口的OnInitDialog()函数中再调用ShowPicture(CString mPicPath)(这个函数的功能是加载图片然后显示在子窗口的图片控件上)函数。现在的问题是这一切都做好后子窗口的图片控件中却没有显示图片,调试发现当从父窗口进入子窗口时确实是调用了ShowPicture(CString mPicPath)函数。你现在可能会怀疑是不是这个ShowPicture(CString mPicPath)函数有问题,这个函数完全是正确的,我发现如果在子窗口中增加一个按钮,然后在按钮的事件中直接调用该函数却完全可以显示图片!再后来又发现只要通过事件触发来调用该函数都可以正确显示图片!就是在初始化函数OnInitDialog()中调用时没有显示。说了这么多,现在大家应该清楚我的问题了吧?请各位高抬贵手,帮帮俺...
解决方案 »
- Http 响应头(关于读包发包的小疑问)
- 关于毕业生经验的问题
- 新手想学习WIMDOWS的网络编成,该看些什么书呀!?
- 高手请进,利用匿名管道通信中存在的问题??
- 超级隐藏软件
- 变量
- orge在VS2010配置问题求解:fatal error C1083: 无法打开包括文件:“OIS/OIS.h”
- 我有一程序如下,在滚动视图中要绘制宽80000像素,高3000像素的曲线,怎样用双缓冲技术,使其显示快速平滑,并不只是想解决滚时的闪烁问
- 打听:C++中的汇编&Windows保护
- 大家有谁知道北京目标软件公司么,这个公司怎么样啊!!可能要去,给个意见
- TCP问题急求帮助在线等:send()成功,但是抓包工具抓不到包,服务端也没收到
- 求助:我想做个OUTLOOK这样的邮件收发器要怎么做
========
这个函数执行时,对话框的子控件窗口还没创建好呢!你的ShowPicture()当然起不了作用了。
我copy了一个OnPaint()函数,请问ShowPicture应该放在OnPait()函数的什么地方呢?请原谅我的愚笨...
OnPaint()
{ if (IsIconic())
{
CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
子窗口好像没有自动调用OnPaint()函数呀,我应该在什么时候调用OnPaint()呢?等待中...
通过父窗口的某个按钮?
从你的描述中,感觉挺乱的。另外OnPaint只有在需要重绘时才会调用。比如你移动窗口,窗口上被别的窗口覆盖等等
在OnTimer()中关闭KillTimer(1);//只有一次
然后ShowPicture(CString mPicPath);//可以显示图了。
如果你没有关闭子窗口的话,你在OnPaint绘图应该不会改变的啊。
===============================================================
哈哈,是你拷贝来的吗?应该响应WM_PAINT消息呀,这是消息响应函数。
看见你问在哪儿调用OnPaint了。