• <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  評論-173  文章-70  trackbacks-0

            發(fā)現(xiàn)的一個道理是:
            不僅僅是控件可以和值相關聯(lián),而且可以建立控件和一個類的關聯(lián)。
            具體來說就是,如果控件和一個值相關聯(lián),比如和CString類型的值,或者int,或者float等等,那么就會相應的將控件的內容轉化成對應的類型。
            但是,如果將控件和類類型關聯(lián),就是一種映射,此時,這個關聯(lián)的名字,就是這個控件的別名,而且,由于對應的控件,所以會有相應的類函數(shù)。比如是CEdit類型的控件,對應的就是CEdit類型的變量,此時,就會有相應的方法。而如果是對應的基本類型,比如CString,int,則不會有這個類型的函數(shù)可以提供操作。
            于是,更多的,就是使用這個別名的類型,因為對于一個類類型的變量,是可以調用相應的很多的方法的,從而利用提供的API函數(shù),完成更多的功能。
            不懂的內容可以查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();
            }


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

            第二個就是ListBox地址控件的操作:

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


            void CTest18Dlg::OnDelete() 
            {
                
            // TODO: Add your control notification handler code here
                int index;
                index 
            = m_ListBox.GetCurSel(); //獲得當前的索引項
                m_ListBox.DeleteString(index); //刪除這個索引項
                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() //響應鼠標選擇ListBox控件的動作,
                                            
            //具體來說就是當選擇了某一項的時候,在姓名和對于的對話框中顯示信息,對于的姓名和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);
            }

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

            最后一個就是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();
            }

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




            閱讀MFC程序的幾點體會:

            首先,切換到類屬性圖中,看看有那些成員,此時特別要注意的就是沒有見過的成員,因為這個很可能就是用戶添加的,進入到這些函數(shù),就可以弄清楚他們的具體作用。
            其次,看看里面有哪些成員,就是以m_開頭的成員變量,因為它們很可能就是用戶添加的標志位,或者是為控件捆綁的變量名,要么是值捆綁(value),要么是控制捆綁(control)
            此時如果相確認,就要到ClassWizard中查看。
            至于具體的函數(shù),則可以查詢API,不要看程序很多,實際的代碼,用戶添加的代碼,不是很多的。。。。


            posted on 2010-02-06 18:18 deercoder 閱讀(724) 評論(0)  編輯 收藏 引用
            久久精品国产免费| 久久影院午夜理论片无码 | 国产精品久久久久蜜芽| 国内精品久久久久久久久| 久久免费视频一区| 乱亲女H秽乱长久久久| 久久91精品综合国产首页| 国产精品久久久久免费a∨| 精品久久久久久国产91| 久久久受www免费人成| 久久午夜伦鲁片免费无码| 久久精品成人免费观看97| 久久精品国产久精国产一老狼| 久久精品国产亚洲AV电影 | 久久WWW免费人成一看片| 精品人妻久久久久久888| 一本大道久久东京热无码AV| 久久精品无码一区二区无码 | 99久久精品免费观看国产| 久久只有这里有精品4| 成人午夜精品久久久久久久小说| 怡红院日本一道日本久久| 国产69精品久久久久9999APGF| 色综合合久久天天综合绕视看 | 亚洲国产精品久久久久| 国内精品九九久久精品| 久久久久亚洲av毛片大| 情人伊人久久综合亚洲| 国产午夜免费高清久久影院| 久久久午夜精品| 久久久久久综合网天天| 中文字幕精品无码久久久久久3D日动漫| 久久99精品国产麻豆宅宅| 国产午夜精品久久久久免费视 | 欧美国产精品久久高清| 成人午夜精品久久久久久久小说| 国产精品久久久久9999| 久久免费美女视频| 91亚洲国产成人久久精品网址| 久久综合九色综合97_久久久| 国内精品久久国产大陆|