• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評(píng)論-173  文章-70  trackbacks-0

            發(fā)現(xiàn)的一個(gè)道理是:
            不僅僅是控件可以和值相關(guān)聯(lián),而且可以建立控件和一個(gè)類的關(guān)聯(lián)。
            具體來說就是,如果控件和一個(gè)值相關(guān)聯(lián),比如和CString類型的值,或者int,或者float等等,那么就會(huì)相應(yīng)的將控件的內(nèi)容轉(zhuǎn)化成對應(yīng)的類型。
            但是,如果將控件和類類型關(guān)聯(lián),就是一種映射,此時(shí),這個(gè)關(guān)聯(lián)的名字,就是這個(gè)控件的別名,而且,由于對應(yīng)的控件,所以會(huì)有相應(yīng)的類函數(shù)。比如是CEdit類型的控件,對應(yīng)的就是CEdit類型的變量,此時(shí),就會(huì)有相應(yīng)的方法。而如果是對應(yīng)的基本類型,比如CString,int,則不會(huì)有這個(gè)類型的函數(shù)可以提供操作。
            于是,更多的,就是使用這個(gè)別名的類型,因?yàn)閷τ谝粋€(gè)類類型的變量,是可以調(diào)用相應(yīng)的很多的方法的,從而利用提供的API函數(shù),完成更多的功能。
            不懂的內(nèi)容可以查MSDN,特別是對于CEdit類型,有很多提供的API可以供查詢。
            貼代碼:

            void CTest16Dlg::OnCopy() 
            {
             
            // TODO: Add your control notification handler code here
             m_edit1.SetSel(0,-1);
             m_edit1.Copy();
             m_edit2.SetSel(
            0,-1);
             m_edit2.ReplaceSel(
            "");
             m_edit2.Paste();
            }


            void CTest16Dlg::OnCut() 
            {
             
            // TODO: Add your control notification handler code here
             m_edit1.SetSel(0,-1);
             m_edit1.Copy();
             m_edit1.ReplaceSel(
            "");
             m_edit2.SetSel(
            0,-1);
             m_edit2.ReplaceSel(
            "");
             m_edit2.Paste();
            }


            void CTest16Dlg::OnExit() 
            {
             
            // TODO: Add your control notification handler code here
             CDialog::OnCancel();
            }


            void CTest16Dlg::OnClear() 
            {
             
            // TODO: Add your control notification handler code here
             m_edit1.SetSel(0,-1);
             m_edit1.ReplaceSel(
            "");
             m_edit2.SetSel(
            0,-1);
             m_edit2.ReplaceSel(
            "");
            }


            void CTest16Dlg::OnUndo() 
            {
             
            // TODO: Add your control notification handler code here
             m_edit1.Undo();
             m_edit2.Undo();
            }


            主要的幾個(gè)函數(shù)就是如上,關(guān)鍵的要理解控件的關(guān)聯(lián)。。。

            第二個(gè)就是ListBox地址控件的操作:

            void CTest18Dlg::OnAdd() 
            {
                
            // TODO: Add your control notification handler code here
                int index,test;
                UpdateData(TRUE);    
            //將控件的內(nèi)容寫入變量中
                test = m_ListBox.FindStringExact(-1,m_name);    //查找是否有和m_name同名的項(xiàng)
                if(test != LB_ERR)    //含有同名的,返回值test為索引值,否則為LB_ERR
                    return ;    //此處返回的如果不是LB_ERR,那么就含有同名的,添加失敗,直接返回
                index = m_ListBox.AddString(m_name);
                m_ListBox.SetItemData(index,m_id);    
            //將相應(yīng)的索引值和一個(gè)id綁定關(guān)聯(lián)
                UpdateData(FALSE);    //變量的內(nèi)容寫入控件    
                GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);    //使刪除鍵可以用
            }


            void CTest18Dlg::OnDelete() 
            {
                
            // TODO: Add your control notification handler code here
                int index;
                index 
            = m_ListBox.GetCurSel(); //獲得當(dāng)前的索引項(xiàng)
                m_ListBox.DeleteString(index); //刪除這個(gè)索引項(xiàng)
                index = m_ListBox.GetCurSel();
                
            if(index == LB_ERR)    //如果為空,則使得刪除鍵不可用
                    GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
            }


            void CTest18Dlg::OnExit() 
            {
                
            // TODO: Add your control notification handler code here
                CDialog::OnCancel();
            }
                



            void CTest18Dlg::OnSelchangeList() //響應(yīng)鼠標(biāo)選擇ListBox控件的動(dòng)作,
                                            
            //具體來說就是當(dāng)選擇了某一項(xiàng)的時(shí)候,在姓名和對于的對話框中顯示信息,對于的姓名和id。
            {
                
            // TODO: Add your control notification handler code here
                int nIndex = m_ListBox.GetCurSel();
                m_ListBox.GetText(nIndex,m_name);
                m_id 
            = m_ListBox.GetItemData(nIndex);
                UpdateData(FALSE);
            }

            功能就是:
            一個(gè)是使用ListBox,通過添加姓名和學(xué)號(hào)來向表項(xiàng)中添加姓名,同時(shí),對于一個(gè)對應(yīng)的姓名,當(dāng)選擇的時(shí)候,顯示對應(yīng)的ID和姓名。
            實(shí)現(xiàn)ListBox和右邊的編輯框的同步。

            最后一個(gè)就是IP控件的使用:
            void CTest17Dlg::OnButton1() 
            {
                
            // TODO: Add your control notification handler code here
                BYTE nField0;
                BYTE nField1;
                BYTE nField2;
                BYTE nField3;
                CString show_IP;
                
            int num;
                
            if(m_IPCtrl.IsBlank())
                    MessageBox(
            "請輸入IP地址");
                
            else{
                    num 
            = m_IPCtrl.GetAddress(nField0,nField1,nField2,nField3);
                    
            if(num == 4){
                        show_IP.Format(
            "%d.%d.%d.%d.",nField0,nField1,nField2,nField3);
                        MessageBox(show_IP);
                    }

                    
            else{
                        MessageBox(
            "請輸入完整的IP地址!");
                    }

                }

            }


            void CTest17Dlg::OnButton2() 
            {
                
            // TODO: Add your control notification handler code here
                CDialog::OnCancel();
            }

            其實(shí)控件的使用,API的查詢,很大程度上都是需要自己去摸索的,于是,很多時(shí)候不是什么記憶,而是練習(xí)才是最重要的。
            這里寫下來這些,一則是為了熟悉,二則是為了怕以后忘記而寫下點(diǎn)體會(huì)。雖然很淺陋,不過作為學(xué)習(xí)過程的體會(huì),還是多多益善啊!




            閱讀MFC程序的幾點(diǎn)體會(huì):

            首先,切換到類屬性圖中,看看有那些成員,此時(shí)特別要注意的就是沒有見過的成員,因?yàn)檫@個(gè)很可能就是用戶添加的,進(jìn)入到這些函數(shù),就可以弄清楚他們的具體作用。
            其次,看看里面有哪些成員,就是以m_開頭的成員變量,因?yàn)樗鼈兒芸赡芫褪怯脩籼砑拥臉?biāo)志位,或者是為控件捆綁的變量名,要么是值捆綁(value),要么是控制捆綁(control)
            此時(shí)如果相確認(rèn),就要到ClassWizard中查看。
            至于具體的函數(shù),則可以查詢API,不要看程序很多,實(shí)際的代碼,用戶添加的代碼,不是很多的。。。。


            posted on 2010-02-06 18:18 deercoder 閱讀(726) 評(píng)論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产精品综合久久第一页| 久久综合视频网站| 香蕉久久永久视频| 亚洲精品NV久久久久久久久久| 99re久久精品国产首页2020| 久久99热国产这有精品| 国内精品久久久久国产盗摄| a级毛片无码兔费真人久久| 久久精品国产欧美日韩| 亚洲国产精品无码久久久蜜芽| 久久久无码一区二区三区| 国产精品一区二区久久| 亚洲精品99久久久久中文字幕| 久久久久99精品成人片直播| 久久久精品国产亚洲成人满18免费网站 | 亚洲午夜福利精品久久| 国产三级久久久精品麻豆三级| 久久久一本精品99久久精品66| 国产成人精品综合久久久| 无码人妻久久一区二区三区免费丨| 久久99国产亚洲高清观看首页| 欧美性猛交xxxx免费看久久久| 亚洲色欲久久久综合网东京热| 香蕉久久久久久狠狠色| 欧美与黑人午夜性猛交久久久| 久久综合香蕉国产蜜臀AV| 色婷婷久久久SWAG精品| 久久人人超碰精品CAOPOREN| 久久久91人妻无码精品蜜桃HD| 免费观看久久精彩视频| 久久久亚洲精品蜜桃臀| 青青热久久国产久精品| 亚洲va国产va天堂va久久| 久久久久青草线蕉综合超碰 | 精品国产乱码久久久久久郑州公司 | 精品乱码久久久久久夜夜嗨| 51久久夜色精品国产| 久久综合一区二区无码| 久久天天躁狠狠躁夜夜96流白浆| 久久精品中文闷骚内射| 久久影视综合亚洲|