VC³£ÓòÙ×÷Ô´Âë»ã×Ü

2026/4/30 1:32:09

ÏÔʾºÍÒþ²Ø³ÌÐò²Ëµ¥

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


VC³£ÓòÙ×÷Ô´Âë»ã×Ü.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ
ËÑË÷¸ü¶à¹ØÓÚ£º VC³£ÓòÙ×÷Ô´Âë»ã×Ü µÄÎĵµ
Ïà¹ØÍÆ¼ö
Ïà¹ØÔĶÁ
¡Á ÓοͿì½ÝÏÂÔØÍ¨µÀ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩

ÏÂÔØ±¾ÎĵµÐèÒªÖ§¸¶ 10 Ôª

Ö§¸¶·½Ê½£º

¿ªÍ¨VIP°üÔ»áÔ± ÌØ¼Û£º29Ôª/ÔÂ

×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£ºxuecool-com QQ£º370150219