一菜单栏:

  动态创建,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);

posted on 2014-08-20 10:36  言止予思  阅读(418)  评论(0编辑  收藏  举报