请教各位大虾:
我需要在我的窗口(对话框)显示完成之后执行一个功能。
问题是:我怎么知道我的窗口已经完全显示了呢?
在显示完窗口之后,windows会不会发个事件通知一下?
thanks.
我需要在我的窗口(对话框)显示完成之后执行一个功能。
问题是:我怎么知道我的窗口已经完全显示了呢?
在显示完窗口之后,windows会不会发个事件通知一下?
thanks.
解决方案 »
- 怎么将我的窗口设置成外部软件的父窗口
- 静态调用Lib后,还需要dll文件吗?
- ATL中在测试容器中调用接口函数失败!!!!!!!!大家帮我看看是什么问题,郁闷了很久!!!!!
- 在window 2000下用_outp和_inp的问题,向各位大虾求援?200分不够,可再加
- 关于一个结构体类型的指针的释放问题,请高手帮忙?
- 请问:如何指定MM_ANISOTROPIC映象方式的坐标增长方式,使X轴向右为正向,Y轴向上为正!谢谢!
- 发布LittleAngle源码(一个桌面应用程序),要得进来留Email
- 求版主速回,在线等。MFC 扩展dll 显式链接 导出类
- 增加记录AddNew()的问题
- MDI单文档多视图,不同的视图都使用同一个CChildFrame,现在想让其中A视图的窗口一启动就最大化并且去掉最小化按钮,而别的图的窗口打开时不最大化,请问能否实现?
- 菜菜的问题:如何使用别人的控件和他人开发的软件包,有dll文件,还有lib文件
- 树状结构中如何一次选中多个节点呢?
的return TRUE之前
这个事件执行的过程中window是不会显示的。我现在能想到的办法是
1.使用Timer
2.处理WM_PAINT在第一次显示完成之后处理。该方法能达到效果。但总是看着难受。
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
TRACE("message = 0x%X\n", pMsg->message);
return CDialog::PreTranslateMessage(pMsg);
}我发现对话框总是会收到一个0x113的消息,这个消息产生于对话框完全显示之后。
经过查阅源代码发现0x113对应WM_TIMER,由于我从未设置定时器,所以这个应该是windows默认的逻辑之一,我的想法是处理这个消息,但是由于自定义的WM_TIMER消息也是由PreTranslateMessage派发,所以处理为:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
static BOOL bFirst = TRUE;
if (bFirst)
{
switch (pMsg->message)
{
case WM_TIMER:
bFirst = FALSE;
// 要加的处理代码
}
}
return CDialog::PreTranslateMessage(pMsg);
}但是如果在OnInitDialog中设置了定时器这个方法可能会有问题。
效果还行。
但总感觉的不是很爽。不知道window显示完成之后有没有个通知的。