我用如下方法隐藏:
LRESULT CBlueComChatDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message==133 )
ShowWindow(SW_HIDE);
return CDialog::DefWindowProc(message, wParam, lParam);
}
我把对话框做成托盘了,想点击托盘菜单,再弹出对话框,但就是不可以LRESULT CBlueComChatDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
.... case IDM_ANIMATE:
ShowWindow(SW_SHOW);
break;
...
}
LRESULT CBlueComChatDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message==133 )
ShowWindow(SW_HIDE);
return CDialog::DefWindowProc(message, wParam, lParam);
}
我把对话框做成托盘了,想点击托盘菜单,再弹出对话框,但就是不可以LRESULT CBlueComChatDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
.... case IDM_ANIMATE:
ShowWindow(SW_SHOW);
break;
...
}
if(message==133 ) //133 == WM_NCPAINT?
ShowWindow(SW_HIDE);执行ShowWindow(SW_SHOW)->处理WM_NCPAINT->ShowWindow(SW_HIDE)。
BOOL CBlueComChatDlg::OnInitDialog()
{
.
.
ShowWindow(SW_HIDE);
.
.
}
switch(message)
{
case MYWM_NOTIFYICON:
//如果是用户定义的消息
{
if(lParam==WM_LBUTTONDBLCLK)
{ //鼠标双击时主窗口出现
AfxGetApp()->m_pMainWnd->
ShowWindow(SW_SHOWMAXIMIZED);
::Shell_NotifyIcon(NIM_DELETE ,&m_tnid);
}
else
if(lParam==WM_RBUTTONDOWN)
{
//鼠标右键单击弹出菜单
CMenu menu;
//载入事先定义的菜单
if (!menu.LoadMenu(IDR_MENU2))//你必须确定资源中有ID为IDR_POPUP的菜单
{
MessageBox("菜单装载错误","错误",MB_ICONEXCLAMATION|MB_OK);
return 0;
} CMenu* pMenu=menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos); // SetForegroundWindow();
pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
}
break;
}
case WM_SYSCOMMAND:
//如果是系统消息
if(wParam==SC_MINIMIZE)
{
//接收到最小化消息时主窗口隐藏
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
::Shell_NotifyIcon(NIM_ADD ,&m_tnid);
return 0;
}
break;
} return CFrameWnd::WindowProc(message, wParam, lParam);
里面实现的功能跟你的要求一样http://www.csdn.net/cnshare/soft/12/12414.shtm
{
....
settimer(0,100,NULL);
}
在OnTimer()中隐藏窗口
{
NOTIFYICONDATA nid;
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_TRAYICON; //icon ID
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage=WM_SYSTEMTRAY;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_TRAYICON));
strcpy(nid.szTip," 侦听中...");//信息提示条为“计划任务提醒”
Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
ShowWindow(SW_HIDE);//隐藏主窗口
}
//define WM_SYSTEMTRAY WM_USER+100(加在XXXdlg.h文件开头)
建立消息响应函数OnShowTask
afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAM lParam);(加在XXXdlg.h文件)
ON_MESSAGE(WM_SYSTEMTRAY,OnShowTask)(加在XXXdlg.cpp文件)
LRESULT CSocketDlg::OnShowTask(WPARAM wParam,LPARAM lParam)
//wParam接收的是图标的ID,而lParam接收的是鼠标的行为
{
if(wParam!=IDR_TRAYICON)
return 1;
switch(lParam)
{
..................................
...................................
case WM_LBUTTONDBLCLK: //双击左键的处理
{
this->ShowWindow(SW_SHOW); //简单的显示主窗口完事儿
}
break;
}
return 0;
}