ÏÔʾºÍÒþ²Ø³ÌÐò²Ëµ¥
CWnd *pWnd=AfxGetMainWnd(); if(b_m) //Òþ²Ø²Ëµ¥ {
pWnd->SetMenu(NULL); pWnd->DrawMenuBar(); b_m=false; } else {
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME); ////ÏÔʾ²Ëµ¥ Ò²¿É¸Ä±ä²Ëµ¥Ïî pWnd->SetMenu(&menu); pWnd->DrawMenuBar(); b_m=true; menu.Detach(); }
»ñÈ¡¿ÉÖ´ÐÐÎļþµÄͼ±ê
HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T(\ if (hIcon &&hIcon!=(HICON)-1) {
pDC->DrawIcon(10,10,hIcon); }
DestroyIcon(hIcon);
´°¿Ú×Ô¶¯¿¿±ß³ÌÐòÑÝʾ
BOOL AdjustPos(CRect* lpRect) {//×Ô¶¯¿¿±ß
int iSX=GetSystemMetrics(SM_CXFULLSCREEN); int iSY=GetSystemMetrics(SM_CYFULLSCREEN); RECT rWorkArea;
BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkAre a, 0);
3
CRect rcWA; if(!bResult)
{//Èç¹ûµ÷Óò»³É¹¦¾ÍÀûÓÃGetSystemMetrics»ñÈ¡ÆÁÄ»Ãæ»ý rcWA=CRect(0,0,iSX,iSY); } else
rcWA=rWorkArea; int iX=lpRect->left; int iY=lpRect->top;
if(iX < rcWA.left + DETASTEP && iX!=rcWA.left) {//µ÷Õû×ó
//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE); lpRect->OffsetRect(rcWA.left-iX,0); AdjustPos(lpRect); return TRUE; }
if(iY < rcWA.top + DETASTEP && iY!=rcWA.top) {//µ÷ÕûÉÏ
//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE); lpRect->OffsetRect(0,rcWA.top-iY); AdjustPos(lpRect); return TRUE; }
if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->W idth()) {//µ÷ÕûÓÒ
//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE); lpRect->OffsetRect(rcWA.right-lpRect->right,0); AdjustPos(lpRect); return TRUE; }
if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect ->Height()) {//µ÷ÕûÏÂ
4
//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE); lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom); return TRUE; }
return FALSE; }
//È»ºóÔÚONMOVEINGʼþÖÐʹÓÃËùϹý³Ìµ÷Óà CRect r=*pRect; AdjustPos(&r); *pRect=(RECT)r;
ϵͳ²Ëµ¥Ìí¼Ó²Ëµ¥Ïî
¸øÏµÍ³²Ëµ¥Ìí¼ÓÒ»¸ö²Ëµ¥ÏîÐèÒª½øÐÐÏÂÊöÈý¸ö²½Ö裺
Ê×ÏÈ£¬Ê¹ÓÃResource Symbols¶Ô»°£¨ÔÚView²Ëµ¥ÖÐÑ¡ÔñResource Symbols£®£®£®¿ÉÒÔÏÔʾ¸Ã¶Ô»°£©¶¨Òå²Ëµ¥ÏîID£¬¸ÃIDÓ¦´óÓÚ0x0F¶øÐ¡ÓÚ0xF000£»
Æä´Î£¬µ÷ÓÃCWnd::GetSystemMenu»ñȡϵͳ²Ëµ¥µÄÖ¸Õë²¢µ÷ÓÃCWnd:: Appendmenu½«²Ëµ¥ÏîÌí¼Óµ½²Ëµ¥ÖС£ÏÂÀý¸øÏµÍ³²Ëµ¥Ìí¼ÓÁ½¸öеÄ
int CMainFrame:: OnCreate (LPCREATESTRUCT lpCreateStruct) { ¡
//Make sure system menu item is in the right range.
ASSERT (IDM_MYSYSITEM &0xFFF0)==IDM_MYSYSITEM) ASSERT (IDM-MYSYSITEM<0xF000) //Get pointer to system menu.
CMenu* pSysmenu=GetSystemmenu (FALSE) ASSERT_VALID (pSysMenu)
//Add a separator and our menu item to system menu. CString StrMenuItem (_T (\pSysMenu->Appendmenu (MF_SEPARATOR)
pSysMenu->AppendMenu (MF_STRING, IDM_MYSYSITEM, strMenuitem) ¡ }
ÏÖÔÚ£¬Ñ¡Ôñϵͳ²Ëµ¥ÏîʱÓû§Ó¦½øÐмì²â¡£Ê¹ÓÃClassWizard´¦ÀíWM_SYSCOMMANDÏûÏ¢²¢¼ì²âÓû§²Ëµ¥µÄnID²ÎÊý£º
5
void CMainFrame:: OnSysCommand (UINT nID,LPARAM lParam) {
//Determine if our system menu item was selected. if ( (nID & 0xFFF0)==IDM_MYSYSITEM) {
//TODO-process system menu item } else
CMDIFrameWnd ::OnSysCommand (nID, lParam) }
×îºó£¬Ò»¸öÉè¼ÆÁ¼ºÃµÄUIÓ¦ÓóÌÐòÓ¦µ±ÔÚϵͳ²Ëµ¥Ïî¼ÓÁÁʱÔÚ״̬ÌõÏÔʾһ¸ö°ïÖúÐÅÏ¢£¬Õâ¿ÉÒÔͨ¹ýÔö¼ÓÒ»¸ö°üº¬ÏµÍ³²Ëµ¥»ùIDµÄ´®±íµÄÈë¿ÚÀ´ÊµÏÖ¡£
¶¯Ì¬Ôö¼Ó»òɾ³ý²Ëµ¥
1¡¢ Ôö¼Ó²Ëµ¥ //Ìí¼Ó
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //µÃµ½Ö÷²Ëµ¥
(mainmenu->GetSubMenu (0))->AppendMenu (MF_SEPARATOR);//Ìí¼Ó·Ö¸ô·û
(mainmenu->GetSubMenu (0))->AppendMenu(MF_STRING,ID_APP_ABOUT,_T(\ &Top\Ìí¼ÓеIJ˵¥Ïî DrawMenuBar(); //ÖØ»²Ëµ¥ 2¡¢ ɾ³ý²Ëµ¥ //ɾ³ý
CMenu *mainmenu;
mainmenu=AfxGetMainWnd()->GetMenu(); //µÃµ½Ö÷²Ëµ¥ CString str ;
for(int i=(mainmenu->GetSubMenu (0))->GetMenuItemCount()-1;i>=0;i--) //È¡µÃ²Ë µ¥µÄÏîÊý¡£ {
(mainmenu->GetSubMenu (0))->GetMenuString(i,str,MF_BYPOSITION); //½«Ö¸¶¨²Ëµ¥ÏîµÄ±êÇ©¿½±´µ½Ö¸¶¨µÄ»º³åÇø¡£MF_BYPOSITIONµÄ½âÊͼûÉÏ¡£ if(str==\Èç¹ûÊǸղÅÎÒÃÇÔö¼ÓµÄ²Ëµ¥ÏÔòɾ³ý¡£
6

