ͨ¹ýµ÷ÓÃ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; }
¹ØÓÚ±à¼Ä³ÏîµÄÏÔʾ×Ö·û£º£¨ÔÚ±¨±í·ç¸ñÖÐÖ»¶ÔµÚÒ»ÁÐÓÐЧ£©Ê×ÏÈÐèÒªÉèÖÃÁÐ±í¿Ø¼þµÄ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);
Ïà¹ØÍÆ¼ö£º