关于OnShowWindow()
程序中,
CMainFrame中
初始化时,建立了两个定时器1和2
SetTimer(1,5*60*1000,NULL);
SetTimer(2,1*60*1000,NULL);
===================
CMainFrame -----成员 CmyDlg----非模式对话框
在OnCreate()中 new Cmydlg 这个对话框变量mydlg
然后mydlg.ShowWindow(SW_HIDE);将其隐藏
OnTimer()中
if(nIDEvent==1)
{
KillTimer(1);
mydlg.ShowWindow(SW_SHOW);
}
if(nIDEvent==2)
{
KillTimer(2);
mydlg.ShowWindow(SW_SHOW);
}
-----------------------------------
CMyDlg类中
有变量m_bOk,初始值FALSE;
对话框上有个编辑框,对应的成员CString m_stredit进行绑定
CMyDlg::OnShowWindow()
{
CDiglog::OnShowWindow();
if(m_bOk)
{
m_stredit="123";
}
else
{
m_stredit="234";
}
updatedata(false);
}
------------------------
这个程序大致想要得作用是:
在5分得时候,CMyDlg对话框上的编辑框显示123
在1分钟的时候,显示234
---------------------------
但实际的情况:
显示的一直是123
-------------------------
我先是怀疑:
CMainFrame中定时器2,没有成功
但是,通过写日志或单步跟踪,两个定时器都已经设置成功
在单步跟踪的过程中发现
当定时器1,即5分钟的时候,能进行CMyDlg::OnShowWindow 中进行单步调试
但是,当定时器2,即1分钟时候,却不能到CMyDlg::OnShowWindow 中单步调试
------------------
这里也没有什么差别,定时器1和2中 OnTimer()中的代码都一样
都调用了mydlg.ShowWindow(SW_SHOW);
那为什么定时器2执行mydlg.ShowWindow(SW_SHOW);
,不能再CMyDlg::OnShowWindow 中单步调试
附注:CMyDlg::OnShowWindow 中设有断点
----------------------------------------------------------