非模态对话框+托盘

在一个地方创建该dialog

			it->second = new CChatDlg();
			it->second->m_szChatRecord = *pChat;
			it->second->m_id = nID;
			it->second->Create(IDD_DIALOG_CHAT);
			it->second->SetWindowTextW(pName);
			it->second->ShowWindow(SW_SHOWNORMAL);



在dialog.cpp中


#define WM_NOTIFYICON WM_USER+99 
NOTIFYICONDATA nd;


自己添加消息响应函数

	ON_MESSAGE(WM_NOTIFYICON, ShowTask)



在OnInitDialog()

	nd.cbSize = sizeof (NOTIFYICONDATA);
	nd.hWnd = m_hWnd;
	nd.uID = IDR_MAINFRAME;
	nd.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
	nd.uCallbackMessage = WM_NOTIFYICON;
	nd.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
	lstrcpy(nd.szTip, _T("我的托盘"));
	Shell_NotifyIcon(NIM_ADD, &nd);



在OnDestroy()

	Shell_NotifyIcon(NIM_DELETE, &nd);


双击响应托盘图标

LRESULT CFriendReqDlg::ShowTask(WPARAM wParam, LPARAM lParam)
{
	if (wParam != IDR_MAINFRAME)
		return 1;
	switch (lParam)
	{
		case WM_LBUTTONDBLCLK://双击左键的处理
		{
			this->ShowWindow(SW_SHOWNORMAL);//简单的显示主窗口
		}
		break;
	}
	return 0;
}







你可能感兴趣的:(windows)