使用VC++进行Tray区编程

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

使用VC++进行Tray区编程

1.使用向导建立一个MFC对话框应用程序,假设叫TrayDemo

2.增加消息处理函数

virtual BOOL OnInitDialog();

afx_msg void OnDestroy();

afx_msg void OnSize(UINT nType, int cx, int cy);

afx_msg LRESULT OnTrayNotify(WPARAM wParam,LPARAM lParam); // 手动增加

3.在TrayDemoDlg.h中增加成员

private:

NOTIFYICONDATA m_nfData;

4.在TrayDemoDlg.cpp增加以下语句

在文件前部增加

#define WM_TRAY_NOTIFY WM_USER+100

#define ID_TRAY_ICON 1

在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间手动增加

ON_MESSAGE(WM_TRAY_NOTIFY,OnTrayNotify)

在CTrayDemoDlg::OnInitDialog()函数中增加

m_nfData.cbSize=sizeof(m_nfData);

m_nfData.hWnd=GetSafeHwnd();

m_nfData.uID=ID_TRAY_ICON;

m_nfData.uFlags=NIF_ICON | NIF_TIP | NIF_MESSAGE;

m_nfData.uCallbackMessage=WM_TRAY_NOTIFY;

m_nfData.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

CString strTip("I,Robot");

strcpy(m_nfData.szTip,strTip);

Shell_NotifyIcon(NIM_ADD,&m_nfData); // 启动时,加到Tray区中

m_nfData.uFlags=NIF_TIP;

在CTrayDemoDlg::OnDestroy()函数中增加

Shell_NotifyIcon(NIM_DELETE ,&m_nfData); // 退出时,从Tray区中删除

修改CTrayDemoDlg::OnSize(UINT nType, int cx, int cy)函数为

if(nType==SIZE_MINIMIZED)

{

ShowWindow(SW_HIDE);

}

else

CDialog::OnSize(nType, cx, cy);

增加OnTrayNotify函数

LRESULT CTrayDemoDlg::OnTrayNotify(WPARAM /*wParam*/,LPARAM lParam)

{

if(lParam==WM_LBUTTONDOWN)

{

ShowWindow(SW_RESTORE);

SetForegroundWindow();

}

else if(lParam==WM_RBUTTONDOWN)

{

POINT pos;

CMenu menuPopup;

GetCursorPos(&pos);

menuPopup.LoadMenu(IDR_POPUP);

menuPopup.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pos.x,pos.y,this);

}

return 0;

}

5.增加一个浮动菜单IDR_POPUP

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航