一菜单栏:
动态创建,BOOL CreateMenu();
BOOL CreatePopupMenu();
Bool AppendMenu(UINT nFlages,UINT nIDNewItem=0,LPCTSTR lpszNewItem=NULL(const CBitmap * pBmp));
Bool SetMenu(HMENU menu);
EnableMenuItem(UINT nIDEnableItem,UINT nEnable);//禁用菜单 MF_DISABLED,启用MF_ENABLED
弹出式:TrackPopupMenu();
BOOL LoadMenu();
SetMenuInfo(HMENU hmenu,LPCMENUINFO lpcmi);
MENUINFO结构,可以设置菜单颜色等
SetMenuItemBitmaps();//设置菜单位图
二工具栏
CToolBar m_Toolbar;
m_Toolbar.Create(this);
m_Toolbar.LoadToolBar(IDB_BITMAP1);
RepositionBars(ARX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
动态创建
三状态栏
CstatusBar m_Statusbar;
四托盘
CMenu m_TrayMenu;
NOTIFYICONDATA m_NotifyData;
#define WM_TRARMESSAGE WM_USER+10
对话框初始化中添加代码:
m_TrayMenu.LoadMenu(IDR_TRAYMENU);
m_NotifyData.cbSize=sizeof(NOTIFYICONDATA);
m_NotifyData.hIcon=AfxGetApp()->LoadIcon(IDI_TRAYICON);
m_NotifyData.hWnd=m_hWnd;
char *szTrayText="这是托盘";
strncpy(m_NotifyData.szTip,szTrayText,strlen(szTrayText)+1);
m_NotifyData.uCallbackMessage=WM_TRARMESSAGE;
m_NotifyData.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
在OnSysCommand方法中截获最小化消息
if((nID&0xfff0)==SC_MINIMIZE)
{
ShowWindow(0);
shell_notifyIcon(NIM_ADD,&m_NotifyData);
}
在OnTrayMessage自定义消息处理函数中
if(lparam== WM_LBUTTONDOWN)
{
ShowWindow(SW_RESTORE);
}
else if(lparam==WM_RBUTTONDOWN)
{
CPoint curPT;
GetCursorPos(&curPT);
CMenu *pSumMenu=m_TrayMenu.GetSubMenu(0);
pSumMenu->TrackPopupMenu(TPM_LEFTALIGH|TPM_RIGHTBUTTON,curPT.x,curPT.y,AfxGetApp()->m_pMainWnd,TMP_LEFTALIGH);
}
映射消息
ON_MESSAGE(WM_TRARMESSAGE,OnTrayMessage)
对话框关闭时,删除托盘
Shell_NotifyIcon(NIM_DELETE,&m_NotifyData);