µÚÒ»·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

£¨ÊʺϳõѧÕߣ©MFC»ù´¡½Ì³Ì

À´Ô´£ºÓû§·ÖÏí ʱ¼ä£º2025/9/22 3:04:08 ±¾ÎÄÓÉloading ·ÖÏí ÏÂÔØÕâÆªÎĵµÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:xxxxxxx»òQQ£ºxxxxxx ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣

ͨ¹ýµ÷ÓÃint InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat , int nWidth, int nSubItem);¿ÉÒÔ²åÈëÁС£iColΪÁеÄλÖ㬴ÓÁ㿪ʼ£¬lpszColumnHeadingΪÏÔʾµÄÁÐÃû£¬nFormatΪÏÔʾ¶ÔÆë·½Ê½£¬nWidthΪÏÔʾ¿í¶È£¬nSubItemΪ·ÖÅ䏸¸ÃÁеÄÁÐË÷Òý¡£

ÔÚÓжàÁеÄÁÐ±í¿Ø¼þÖоÍÐèҪΪÿһÏîÖ¸Ã÷ÆäÔÚÿһÁÐÖеÄÏÔʾ×Ö·û£¬Í¨¹ýµ÷Óà BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );¿ÉÒÔÉèÖÃÿÁеÄÏÔʾ×Ö·û¡£nItemΪÉèÖõÄÏîµÄλÖã¬nSubItemΪÁÐλÖã¬lpszTextΪÏÔʾ×Ö·û¡£ÏÂÃæµÄ´úÂëÑÝʾÁËÈçºÎÉèÖöàÁв¢²åÈëÊý¾Ý£º

m_list.SetImageList(&m_listSmall,LVSIL_SMALL);//ÉèÖÃImageList m_list.InsertColumn(0,\ÉèÖÃÁÐ m_list.InsertColumn(1,\m_list.InsertColumn(2,\

m_list.InsertItem(0,\²åÈëÐÐ

m_list.SetItemText(0,1,\ÉèÖøÃÐеIJ»Í¬ÁеÄÏÔʾ×Ö·û m_list.SetItemText(0,2,\

´ËÍâCListCtrl»¹ÌṩÁËһЩº¯ÊýÓÃÓڵõ½/Ð޸ĿؼþµÄ״̬¡£

COLORREF GetTextColor( )/BOOL SetTextColor( COLORREF cr );ÓÃÓڵõ½/ÉèÖÃÏÔʾµÄ×Ö·ûÑÕÉ«¡£

COLORREF GetTextBkColor( )/BOOL SetTextBkColor( COLORREF cr );ÓÃÓڵõ½/ÉèÖÃÏÔʾµÄ±³¾°ÑÕÉ«¡£

void SetItemCount( int iCount );ÓÃÓڵõ½Ìí¼Ó½øÁбíÖÐÏîµÄÊýÁ¿¡£

BOOL DeleteItem(int nItem);ÓÃÓÚɾ³ýijһÏBOOL DeleteAllItems( );½«É¾³ýËùÓÐÏî¡£ BOOL SetBkImage(HBITMAP hbm, BOOL fTile , int xOffsetPercent, int yOffsetPercent);ÓÃÓÚÉèÖñ³¾°Î»Í¼¡£

CString GetItemText( int nItem, int nSubItem );ÓÃÓڵõ½Ä³ÏîµÄÏÔʾ×Ö·û¡£ ÁÐ±í¿Ø¼þµÄÏûÏ¢Ó³ÉäͬÑùʹÓÃON_NOTIFYºê£¬ÐÎʽÈçͬ£ºON_NOTIFY( wNotifyCode, id, memberFxn )£¬wNotifyCodeΪ֪ͨ´úÂ룬idΪ²úÉú¸ÃÏûÏ¢µÄ´°¿ÚID£¬memberFxnΪ´¦Àíº¯Êý£¬º¯ÊýµÄÔ­ÐÍÈçͬvoid OnXXXList(NMHDR* pNMHDR, LRESULT* pResult)£¬ÆäÖÐpNMHDRΪһÊý¾Ý½á¹¹£¬ÔÚ¾ßÌåʹÓÃʱÐèҪת»»³ÉÆäËûÀàÐ͵Ľṹ¡£¶ÔÓÚÁÐ±í¿Ø¼þ¿ÉÄÜȡֵºÍ¶ÔÓ¦µÄÊý¾Ý½á¹¹Îª£º

? ? ?

LVN_BEGINLABELEDIT ÔÚ¿ªÊ¼Ä³Ïî±à¼­×Ö·ûʱ·¢ËÍ£¬ËùÓýṹ£ºNMLVDISPINFO LVN_ENDLABELEDIT ÔÚ½áÊøÄ³Ïî±à¼­×Ö·ûʱ·¢ËÍ£¬ËùÓýṹ£ºNMLVDISPINFO LVN_GETDISPINFO ÔÚÐèÒªµÃµ½Ä³ÏîÐÅϢʱ·¢ËÍ£¬£¨ÈçµÃµ½Ä³ÏîµÄÏÔʾ×Ö·û£©ËùÓýṹ£ºNMLVDISPINFO

¹ØÓÚON_NOTIFYÓкܶàÄÚÈÝ£¬½«ÔÚÒÔºóµÄÄÚÈÝÖнøÐÐÏêϸ½²½â¡£

¹ØÓÚ¶¯Ì¬Ìṩ½áµãËùÏÔʾµÄ×Ö·û£ºÊ×ÏÈÄãÔÚÏîʱÐèÒªÖ¸Ã÷lpszItem²ÎÊýΪ£º

LPSTR_TEXTCALLBACK¡£ÔڿؼþÏÔʾ¸Ã½áµãʱ»áͨ¹ý·¢ËÍTVN_GETDISPINFOÀ´È¡µÃËùÐèÒªµÄ×Ö·û£¬ÔÚ´¦Àí¸ÃÏûϢʱÏȽ«²ÎÊýpNMHDRת»»ÎªLPNMLVDISPINFO£¬È»ºóÌî³äÆäÖÐitem.pszText¡£Í¨¹ýitemÖеÄiItem,iSubItem¿ÉÒÔÖªµÀµ±Ç°ÏÔʾµÄΪÄÇÒ»Ïî¡£ÏÂÃæµÄ´úÂëÑÝʾÁËÕâÖÖ·½·¨£º

char szOut[8][3]={\

//Ìí¼Ó½áµã

m_list.InsertItem(LPSTR_TEXTCALLBACK,...) m_list.InsertItem(LPSTR_TEXTCALLBACK,...) //´¦ÀíÏûÏ¢

void CParentWnd::OnGetDispInfoList(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pLVDI = (LV_DISPINFO*)pNMHDR; pLVDI->item.pszText=szOut[pTVDI->item.iItem]; //ͨ¹ýiItemµÃµ½ÐèÒªÏÔʾµÄ×Ö·ûÔÚÊý×éÖеÄλÖà *pResult = 0; }

¹ØÓڱ༭ijÏîµÄÏÔʾ×Ö·û£º£¨ÔÚ±¨±í·ç¸ñÖÐÖ»¶ÔµÚÒ»ÁÐÓÐЧ£©Ê×ÏÈÐèÒªÉèÖÃÁÐ±í¿Ø¼þµÄLVS_EDITLABELS·ç¸ñ£¬ÔÚ¿ªÊ¼±à¼­Ê±¸Ã¿Ø¼þ½«»á·¢ËÍLVN_BEGINLABELEDIT£¬Äã¿ÉÒÔͨ¹ýÔÚ´¦Àíº¯ÊýÖзµ»ØTRUEÀ´È¡Ïû½ÓÏÂÀ´µÄ±à¼­£¬Ôڱ༭Íê³Éºó»á·¢ËÍLVN_ENDLABELEDIT£¬ÔÚ´¦Àí¸ÃÏûϢʱÐèÒª½«²ÎÊýpNMHDRת»»ÎªLPNMLVDISPINFO£¬È»ºóͨ¹ýÆäÖеÄitem.pszTextµÃµ½±à¼­ºóµÄ×Ö·û£¬²¢ÖØÖÃÏÔʾ×Ö·û¡£Èç¹û±à¼­ÔÚÖÐ;ÖÐÈ¡Ïû¸Ã±äÁ¿ÎªNULL¡£ÏÂÃæµÄ´úÂë˵Ã÷ÈçºÎ´¦ÀíÕâЩÏûÏ¢£º

//´¦ÀíÏûÏ¢ LVN_BEGINLABELEDIT

void CParentWnd::OnBeginEditList(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pLVDI = (LV_DISPINFO*)pNMHDR; if(pLVDI->item.iItem==0);//ÅжÏÊÇ·ñÈ¡Ïû¸Ã²Ù×÷ *pResult = 1; else *pResult = 0; }

//´¦ÀíÏûÏ¢ LVN_BEGINLABELEDIT

void CParentWnd::OnBeginEditList(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pLVDI = (LV_DISPINFO*)pNMHDR; if(pLVDI->item.pszText==NULL);//ÅжÏÊÇ·ñÒѾ­È¡ÏûÈ¡Ïû±à¼­ m_list.SetItemText(pLVDI->item.iItem,0,pLVDI->pszText); //ÖØÖÃÏÔʾ×Ö·û

}

*pResult = 0;

ÉÏÃæ½²ÊöµÄ·½·¨Ëù½øÐеÄÏûÏ¢Ó³É䱨ÐëÔÚ¸¸´°¿ÚÖнøÐУ¨Í¬ÑùWM_NOTIFYµÄËùÓÐÏûÏ¢¶¼ÐèÒªÔÚ¸¸´°¿ÚÖд¦Àí£©¡£

ÈçºÎµÃµ½µ±Ç°Ñ¡ÖÐÏîλÖãºÔÚÁÐ±í¿Ø¼þÖÐûÓÐÒ»¸öÀàËÆÓÚListBoxÖÐGetCurSel()µÄº¯Êý£¬µ«ÊÇ¿ÉÒÔͨ¹ýµ÷ÓÃGetNextItem( -1, LVNI_ALL | LVNI_SELECTED);µÃµ½Ñ¡ÖÐÏîλÖᣠ·µ»ØÊ×Ò³

4.9 Tab Ctrl

TabÊôÐÔÒ³¿Ø¼þ¿ÉÒÔÔÚÒ»¸ö´°¿ÚÖÐÌí¼Ó²»Í¬µÄÒ³Ãæ£¬È»ºóÔÚҳѡÔñ·¢Éú¸Ä±äʱµÃµ½Í¨Öª¡£MFCÖÐʹÓÃCTabCtrlÀàÀ´·â×°ÊôÐÔÒ³¿Ø¼þµÄ¸÷ÖÖ²Ù×÷¡£Í¨¹ýµ÷ÓÃ

BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );´´½¨Ò»¸ö´°¿Ú£¬dwStyleÖпÉÒÔʹÓÃÒÔÏÂһЩÊôÐÔÒ³¿Ø¼þµÄרÓ÷ç¸ñ£º

? ? ?

TCS_BUTTONS ʹÓð´Å¥À´±íʾҳѡÔñλÖà TCS_MULTILINE ·ÖÐÐÏÔʾҳѡÔñλÖà TCS_SINGLELINE ֻʹÓÃÒ»ÐÐÏÔʾҳѡÔñλÖÃ

Ôڿؼþ´´½¨ºó±ØÐèÏòÆäÖÐÌí¼ÓÒ³Ãæ²Å¿ÉÒÔʹÓã¬Ìí¼ÓÒ³ÃæµÄº¯ÊýΪ£º

BOOL InsertItem( int nItem, LPCTSTR lpszItem );nItemΪλÖ㬴ÓÁ㿪ʼ£¬lpszItemΪҳѡÔñλÖÃÉÏÏÔʾµÄÎÄ×Ö¡£Èç¹ûÄãÏ£ÍûÔÚҳѡÔñλÖô¦ÏÔʾһ¸öͼ±ê£¬Äã¿ÉÒÔµ÷Óà BOOL InsertItem( int nItem, LPCTSTR lpszItem, int nImage );nImageÖ¸Ã÷ËùʹÓõÄͼƬλÖᣣ¨ÔÚ´Ë֮ǰ±ØÐëµ÷ÓÃCImageList * SetImageList( CImageList * pImageList );ÉèÖÃÕýÈ·µÄImageList£©

´ËÍâCTabCtrl»¹ÌṩÁËһЩº¯ÊýÓÃÓڵõ½/Ð޸ĿؼþµÄ״̬¡£

int GetCurSel( )/int SetCurSel( int nItem );ÓÃÓڵõ½/ÉèÖõ±Ç°±»Ñ¡ÖеÄҳλÖᣠBOOL DeleteItem( int nItem )/BOOL DeleteAllItems( );ÓÃÓÚɾ³ýÖ¸¶¨/ËùÓÐÒ³Ãæ¡£ void RemoveImage( int nImage );ÓÃÓÚɾ³ýijҳѡÔñλÖÃÉϵÄͼ±ê¡£

ÊôÐÔÒ³¿Ø¼þµÄÏûÏ¢Ó³ÉäͬÑùʹÓÃON_NOTIFYºê£¬ÐÎʽÈçͬ£ºON_NOTIFY( wNotifyCode, id, memberFxn )£¬wNotifyCodeΪ֪ͨ´úÂ룬idΪ²úÉú¸ÃÏûÏ¢µÄ´°¿ÚID£¬memberFxnΪ´¦Àíº¯Êý£¬º¯ÊýµÄÔ­ÐÍÈçͬvoid OnXXXTab(NMHDR* pNMHDR, LRESULT* pResult)£¬ÆäÖÐpNMHDRΪһÊý¾Ý½á¹¹£¬ÔÚ¾ßÌåʹÓÃʱÐèҪת»»³ÉÆäËûÀàÐ͵Ľṹ¡£¶ÔÓÚÁÐ±í¿Ø¼þ¿ÉÄÜȡֵºÍ¶ÔÓ¦µÄÊý¾Ý½á¹¹Îª£º

? ?

TCN_SELCHANGE ÔÚµ±Ç°Ò³¸Ä±äºó·¢ËÍ£¬ËùÓýṹ£ºNMHDR

TCN_SELCHANGING ÔÚµ±Ç°Ò³¸Ä±äʱ·¢ËÍ¿ÉÒÔͨ¹ý·µ»ØTRUEÀ´½ûÖ¹Ò³ÃæµÄ¸Ä±ä£¬ËùÓýṹ£ºNMHDR

Ò»°ãÀ´½²ÔÚµ±Ç°Ò³·¢Éú¸Ä±äʱÐèÒªÒþ²Øµ±Ç°µÄһЩ×Ó´°¿Ú£¬²¢ÏÔʾÆäËüµÄ×Ó´°¿Ú¡£ÏÂÃæµÄα´úÂëÑÝʾÁËÈçºÎʹÓÃÊôÐÔÒ³¿Ø¼þ£º

CParentWnd::OnCreate(...) { m_tab.Create(...); m_tab.InsertItem(0,\ m_tab.InsertItem(1,\ Create a edit box as the m_tab's Child Create a static box as the m_tab's Child edit_box.ShowWindow(SW_SHOW); // edit boxÔÚÊôÐÔÒ³µÄµÚÒ»Ò³ static_box.ShowWindow(SW_HIDE); // static boxÔÚÊôÐÔÒ³µÄµÚ¶þÒ³ }

void CParentWnd::OnSelectChangeTab(NMHDR* pNMHDR, LRESULT* pResult) {//´¦ÀíҳѡÔñ¸Ä±äºóµÄÏûÏ¢ if(m_tab.GetCurSel()==0) {//¸ù¾Ýµ±Ç°Ò³ÏÔʾ/Òþ²Ø²»Í¬µÄ×Ó´°¿Ú edit_box.ShowWindow(SW_SHOW); static_box.ShowWindow(SW_HIDE); } else {// edit_box.ShowWindow(SW_HIDE); static_box.ShowWindow(SW_SHOW); } }

·µ»ØÊ×Ò³

4.A Tool Bar

¹¤¾ßÌõÒ²Êdz£ÓõĿؼþ¡£MFCÖÐʹÓÃCToolBarÀàÀ´·â×°¹¤¾ßÌõ¿Ø¼þµÄ¸÷ÖÖ²Ù×÷¡£Í¨¹ýµ÷Óà BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR );´´½¨Ò»¸ö´°¿Ú£¬dwStyleÖпÉÒÔʹÓÃÒÔÏÂһЩ¹¤¾ßÌõ¿Ø¼þµÄרÓ÷ç¸ñ£º

? ? ?

CBRS_TOP ¹¤¾ßÌõÔÚ¸¸´°¿ÚµÄ¶¥²¿ TCBRS_BOTTOM ¹¤¾ßÌõÔÚ¸¸´°¿ÚµÄµ×²¿ CBRS_FLOATING ¹¤¾ßÌõÊǸ¡¶¯µÄ

´´½¨Ò»¸ö¹¤¾ßÌõµÄ²½ÖèÈçÏ£ºÏÈʹÓÃCreate´´½¨´°¿Ú£¬È»ºóʹÓÃBOOL LoadToolBar( LPCTSTR lpszResourceName );Ö±½Ó´Ó×ÊÔ´ÖÐ×°È빤¾ßÌõ£¬»òÕßͨ¹ý×°Èëλͼ²¢Ö¸Ã÷ÿ¸ö°´Å¥µÄID£¬¾ßÌå´úÂëÈçÏ£º

UINT uID[5]={IDM_1,IDM_2,IDM_3,IDM_4,IDM_5}; m_toolbar.Create(pParentWnd);

m_toolbar.LoadBitmap(IDB_TOOLBAR);

m_toolbar.SetSizes(CSize(20,20),CSize(16,16));//ÉèÖð´Å¥´ó³ß´çºÍ°´Å¥ÉÏλͼµÄ³ß´ç

m_toolbar.SetButtons(uID,5);

AppWizardÔÚÉú³É´úÂëʱҲ»áͬʱÉú³É¹¤¾ßÌõµÄ´úÂ룬ͬʱ»¹¿ÉÒÔÖ§³ÖÍ£¿¿¹¦ÄÜ¡£ËùÒÔÒ»°ãÊDz»ÐèÒªÖ±½Ó²Ù×÷¹¤¾ßÌõ¶ÔÏó¡£

¹¤¾ßÌõÉϵİ´Å¥±»°´ÏÂʱ·¢Ë͸ø¸¸´°¿ÚµÄÏûÏ¢ºÍ²Ëµ¥ÏûÏ¢Ïàͬ£¬ËùÒÔ¿ÉÒÔʹÓÃON_COMMANDºê½øÐÐÓ³É䣬ͬÑù¹¤¾ßÌõÖеİ´Å¥Ò²Ö§³ÖON_UPDATE_COMMAND_UIµÄÏà¹Ø²Ù×÷£¬ÈçSetCheck,Enable£¬Äã¿ÉÒÔ½«°´Å¥µÄµ±×÷²Ëµ¥ÉϵÄÒ»¸ö¾ßÓÐÏàͬID²Ëµ¥Ïî¡£

ÔÚÒÔºóµÄÕ½Ú4.D ÀûÓÃAppWizard´´½¨²¢Ê¹ÓÃToolBar StatusBar Dialog Bar»á¸ø³öʹÓõķ½·¨¡£

·µ»ØÊ×Ò³

4.B Status Bar

״̬ÌõÓÃÓÚÏÔʾһЩÌáʾ×Ö·û¡£MFCÖÐʹÓÃCStatusBarÀàÀ´·âװ״̬Ìõ¿Ø¼þµÄ¸÷ÖÖ²Ù×÷¡£Í¨¹ýµ÷ÓÃ

BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM, UINT nID = AFX_IDW_STATUS_BAR );´´½¨Ò»¸ö´°¿Ú£¬dwStyleÖпÉÒÔʹÓÃÒÔÏÂһЩ״̬Ìõ¿Ø¼þµÄרÓ÷ç¸ñ£º

? ?

CBRS_TOP ״̬ÌõÔÚ¸¸´°¿ÚµÄ¶¥²¿ TCBRS_BOTTOM ״̬ÌõÔÚ¸¸´°¿ÚµÄµ×²¿

´´½¨Ò»¸ö״̬ÌõµÄ²½ÖèÈçÏ£ºÏÈʹÓÃCreate´´½¨´°¿Ú£¬È»ºóµ÷ÓÃBOOL SetIndicators( const UINT* lpIDArray, int nIDCount );ÉèÖÃ״̬ÌõÉϸ÷²¿·ÖµÄID£¬¾ßÌå´úÂëÈçÏ£º

UINT uID[2]={ID_SEPARATOR,ID_INDICATOR_CAPS}; m_stabar.Create(pParentWnd); m_stabar.SetIndicators(uID,2);

ËÑË÷¸ü¶à¹ØÓÚ£º £¨ÊʺϳõѧÕߣ©MFC»ù´¡½Ì³Ì µÄÎĵµ
£¨ÊʺϳõѧÕߣ©MFC»ù´¡½Ì³Ì.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.diyifanwen.net/c1lv6k057hm83uyx977cs_10.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©
ÈÈÃÅÍÆ¼ö
Copyright © 2012-2023 µÚÒ»·¶ÎÄÍø °æÈ¨ËùÓÐ ÃâÔðÉùÃ÷ | ÁªÏµÎÒÃÇ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£ºxxxxxx ÓÊÏ䣺xxxxxx@qq.com
ÓåICP±¸2023013149ºÅ
Top