软讯网络 > 网站建设 > 服务器相关 > 程序运行后,立即隐藏到系统栏内 ( 期待更好的解决办法 )。
【标 题】:程序运行后,立即隐藏到系统栏内 ( 期待更好的解决办法 )。
【关键字】:
【来 源】:http://www.cnitblog.com/_skyfly/archive/2006/06/22/12699.html
程序运行后,立即隐藏到系统栏内 ( 期待更好的解决办法 )。
我写了一个程序,每N秒,定时对数据库进行刷新,以修正数据库内的一些数据。我把它放在启动菜单栏里,希望一开机就运行。同时希望程序一运行就隐藏到系统栏,这样不影响我使用其它程序。
本来我是想直接在CMainDlg::OnInitDialog中用ShowWindow(SW_HIDE);的,但是很不幸,程序窗口依然显示。在网上查找一段时间以后没有找到解决办法,只好自行摸索了。
最后我是通过延时发隐藏窗口请求来解决的(先显示窗口,等待一段时间,再隐藏窗口)。我想主窗口在CMainDlg::OnInitDialog中不能隐藏的原因,是该函数运行后,还有一些事件刷新了主窗口,所以我通过延时等待所有的主窗口事件处理完成以后再进行隐藏。
在CMainDlg::OnInitDialog中:
//
?设置定时间隔
SetTimer(IDT_TIMER_TOSYSTRAY,DELAY_TIME
*
1000
);
在CMainDlg::OnTimer中:
switch(wParam)
{
case?IDT_TIMER_TOSYSTRAY:
????//?隐藏窗口到系统栏
????KillTimer(IDT_TIMER_TOSYSTRAY);
????SendMessage(WM_CLOSE);
????break;
case?IDT_TIMER_REFRESH:
????break;
}
真正的处理函数:
LRESULT?CMainDlg::OnClose(UINT?/*uMsg*/,?WPARAM?/*wParam*/,?LPARAM?/*lParam*/,?BOOL&?/*bHandled*/)
{
????//?TODO:?Add?your?message?handler?code?here?and/or?call?default
????if?(IsWindowVisible())
????????ShowWindow(SW_HIDE);
????return?0;
}
【相关文章】
没有相关文章