基于Dialog的MFC程序在启动时隐藏为托盘程序(一)
现在感觉敲MFC还是手生。。
首先要在启动时隐藏掉dialog。。
由于基于dialog的mfc程序在启动时要比sdi/mdi的诡异一点。。所以在OnInitDialog是我设置ShowWindow(SW_HIDE);无效。。google了一下。。发现可以用定时器解决。。目前也采用这个方法。。
1. 在OnInitDialog中setTimer;
SetTimer(1 , 55 , NULL); // 第一个参数是id..等下onTimer要用到;
// 第二个参数是间隔时间,单位毫秒。。我记得win好像是55毫秒级的;
2. 添加WM_TIMER消息宏;
BEGIN_MESSAGE_MAP(CDesktopDlg, CDialog)
........
ON_WM_TIMER() // 其他的我拿掉了。。这个添加到这个位置。。
END_MESSAGE_MAP()
3. 添加响应事件;
// .h
// .cpp
ok..下一步要把托盘搞出来。。
首先要在启动时隐藏掉dialog。。
由于基于dialog的mfc程序在启动时要比sdi/mdi的诡异一点。。所以在OnInitDialog是我设置ShowWindow(SW_HIDE);无效。。google了一下。。发现可以用定时器解决。。目前也采用这个方法。。
1. 在OnInitDialog中setTimer;
SetTimer(1 , 55 , NULL); // 第一个参数是id..等下onTimer要用到;
// 第二个参数是间隔时间,单位毫秒。。我记得win好像是55毫秒级的;
2. 添加WM_TIMER消息宏;
BEGIN_MESSAGE_MAP(CDesktopDlg, CDialog)
........
ON_WM_TIMER() // 其他的我拿掉了。。这个添加到这个位置。。
END_MESSAGE_MAP()
3. 添加响应事件;
// .h
1
protected:
2
.
3
afx_msg void OnTimer(UINT nIDEvent); // 声明
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/dot.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
// .cpp
1
void CDesktopDlg::OnTimer(UINT nIDEvent)
2
{
3
if (nIDEvent == 1)
4
{
5
KillTimer(1); // 这个貌似应该有DeleteTimer之类的。。不过我没找到。。
6
ShowWindow(SW_HIDE); // 隐掉它。。
7
}
8
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
ok..下一步要把托盘搞出来。。