• <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>

            1.如何正確的得到ComBox的指針

            CComboBox *mComb = (CComboBox*)GetDlgItem(IDC_DuanCB);

            CComboBox *mComb = (CComboBox*)::GetDlgItem(m_hWnd,IDC_DuanCB);

            2.CComboBox控件詳解

            CComboBox控件又稱作組合框控件,其有三種形態(tài)可供選擇,1.簡單組合框(Simple)2.下拉組合框(Drop-down)3.下拉列表式組合框(Drop-down list).

            CComboBox控件的常用設置屬性說明:

            type屬性:里面一共有三個選項.就是其三種形式, 我們常用的是后兩種形態(tài),其區(qū)別就是Dropdown的編輯區(qū)為可編輯控件,droplist為靜態(tài)控件.

            Data屬性:當程序初始化的時候,下拉列表將顯示其屬性里面的內(nèi)容,內(nèi)容用分號分隔.其屬性只支持后2中形式,

            Sort 屬性:對添加到下拉列表框中的數(shù)據(jù)自動進行排序,假如你不想他改變你的顯示序列,把他設置成False.

            控件是一個窗口.其基類是為CWnd.所以CComboBox也可以使用CWnd的一些函數(shù),它自己的函數(shù)有30幾種.我寫了一個示范程序,演示了一些常用的函數(shù),你可以參考其代碼看到其功能.

            :m_cbox CComboBox控件的關聯(lián)變量,m_endEDIT控件的關聯(lián)變量

            1.GetCount() 函數(shù):用以獲得列表框中的選項數(shù)目. int GetCount() const;(此乃函數(shù)原型,我會列在每條的后面) 下面的例子是程序中各個按鈕里面的代碼

            int i;

            CString str;

            i=m_cbox.GetCount();

            str.Format ("%d",i);

            m_end="一共有" str "個數(shù)據(jù)";

            UpdateData(FALSE);

            2.GetCurSel() 函數(shù):用以得到用戶選中下拉列表框中數(shù)據(jù)的索引值.返回的值是重0開始的,假如沒有選擇任何選項將會返回-1 Int GetCurSel() const

            int i;

            CString str;

            i=m_cbox.GetCurSel ();

            str.Format ("%d",i 1);

            if (i==-1) m_end="你什么都沒有選";

            else m_end="你選的是第" str "";

            UpdateData(FALSE);

            3.SetCurSel函數(shù):選取列表框中的一個選項,索引從0開始,-1為什么都不選.當你需要把列表框中已經(jīng)選取的內(nèi)容清空時就可以使用這個函數(shù);

            if(m_i<3) m_cbox.SetCurSel (m_i );//m_iint型變量 用以計數(shù)

            else

            {

            m_cbox.SetCurSel (-1);

            m_i=0;

            }

            4.SetEditSel函數(shù):設置編輯區(qū)中藍色選中字段的長度, BOOL SetEditSel( intnStartChar, int nEndChar ); nStartChar是起始的位置,當設置為-1時為不選擇任何字段,nEndChar是結束位置.還有一個對應的函數(shù)GetEditSel是取得其位置,在此不詳解.

            m_cbox.SetEditSel (3,5);//在編輯框中打入一串數(shù)字在按此按鈕就能看到效果

            //其作用就是選中第3到第5個字符作為熱點

            5.Clear() Cut() Paste() Copy() 這四個函數(shù)我放在一起說,因為他們都是針對編輯框中選定的文字進行編輯的函數(shù),很多初學者很不明白這4個函數(shù),使用這些函數(shù)沒有作用,其實不然,這些函數(shù)對于在編輯框中的內(nèi)容不進行處理,他真正處理的是你用鼠標選中的內(nèi)容,對于Clear()函數(shù)很多書中解釋都是有誤的,很多書中對他的解釋是清除當前選中的文本,我認為這樣的解釋是有歧異的,真正的解釋是把你剛選中的文本釋放掉,也就是不選,而不是把選中的刪除,真正的刪除選中的文本的函數(shù)是Cut(),Copy()是復制選中的文本,Paste()是粘貼到光標處.其演示就不寫在程序中,有愛好的朋友可以自己試試.

            6.LimitText()函數(shù).其作用是限制在編輯框中鍵入的文本長度,BOOL LimitText(int nMaxChars); nMaxChars0,不是不能輸入,而是長度最大化為65535字節(jié)

            7.GetLBText()函數(shù).其原型為void GetLBText( int nIndex, CString&rString ).nIndex為列表框中數(shù)據(jù)的索引值,rString 為字符串,其作用就是把索引號為nIndex的數(shù)據(jù)放到rString變量中.與其對應的GetLBTextLen(intnIndex)函數(shù)就是得到索引號為nIndex中數(shù)據(jù)的長度

            m_cbox.GetLBText (2,m_end); // GetLBText按鈕

            UpdateData(0);

            CString str; //GetLBTextLen按鈕

            int i=m_cbox.GetLBTextLen (2);

            str.Format ("%d",i);

            m_end=str;

            UpdateData(FALSE);

            8.AddString() DeleteString() InsertString() ResetContent() 四個函數(shù)放在一起,他們都是針對下拉列表框的處理函數(shù), AddString(LPCTSTR lpszString) 是在列表框的尾巴添加一條數(shù)據(jù),參數(shù)為字符串. DeleteString(UINT nIndex)為刪除指定索引為nIndex的數(shù)據(jù). InsertString(int nIndex, LPCTSTR lpszString)在索引nIndex處插入IpszString的內(nèi)容. ResetContent()是清除列表框中所有的內(nèi)容.

            9.SetDroppedWidth(UINT nWidth) 函數(shù).用于設定下拉列表框的最小寬度,當下拉列表框中的數(shù)據(jù)很長不能完全顯示時,我們可以使用這個函數(shù)把列表框的寬度設置的大些.同樣GetDroppedWidth()是返回列表框的寬度.

            以下為總結了各大論壇中對CCombBox控件使用的問題.并給出了正解.

            1.關于CComboBox在對話框中沒有下拉項目的問題

            : 資源編輯器中對話框中CComboBox組件的垂直范圍拉大了下,就看見字體了,看到那個向下的黑箭頭了嗎,點他下拉,嘿嘿就這么簡單.

            2.請問怎樣能讓CCombobox記住用戶的輸入.下次使用時還有

            : 要記住用戶的輸入必須用到文件讀寫,或者把內(nèi)容添加到注冊表中,我會在以后給出解決辦法.

            3. CCOMBOBOX如何使它只讀,不能編輯

            : 看了本文的介紹也許你現(xiàn)在知道了, CCOMBOBOX有三種類型的,選擇你需要的吧!

            4. 我要讓界面一顯示,就能在Combo框中顯示默認的數(shù)據(jù)

            : 你要在OnInitDialog里面加上我上面所提到的SetCurSel()函數(shù)就行了.

            5. 如何把選好的內(nèi)容賦給變量

            : 先給CCOMBOBOX設置一個CString關聯(lián)變量,再添加事件處理函數(shù)CBN_ Selchange.使用UpdateData(FALSE)就行了.

            6. CComboBox組合框中,條目的對齊方式是左對齊,能設置為對中或者右對齊嗎?

            : 沒有直接的方法,你必須自己對齊, 比如最大長度是10

            posted @ 2008-04-02 18:52 wrh 閱讀(759) | 評論 (0)編輯 收藏

            1.如何讓對話框中的編輯框接收對話框的消息

            ////////////////////////////////////////////////
            // 如何讓對話框中的CEdit控件類接收對話框的消息
            ////////////////////////////////////////////////
            1、在對話框中增加一個ID IDC_EDIT1CEdit1控件
            2、通過ClassWizard 生成一個基于CEdit的新類CMyEdit,
            CMyEdit m_wndEdit;
            3、在對話框OnInitDialog()中,將m_wndEdit子類化,使其能夠接受對話框的消息。
            m_wndEdit.SubclassDlgItem (IDC_EDIT1,this);

            2.如何防止密碼被非法獲取?

            [問題提出]
            這兩天大家比較專注在獲取Edit密碼框的密碼.在盜取時,我們?nèi)绾畏婪赌?/span>?

            [解決方法]
            此方法針對于通過SendMessage向此窗口發(fā)送WM_GETTEXTEM_GETLINE消息來取得密碼.跟我來.

            [程序?qū)崿F(xiàn)]
            方法很簡單,CWnd::DefWindowProc函數(shù)攔截得到的消息(Edit發(fā)的).
            建立名為My的對話框工程.建立一個Edit控件ID=IDC_EDIT1.建一個新類名為CMyProtectEdit,派生于CEdit.
            MyDlg.cpp中聲明全局變量:BOOL g_bIdentity;
            BOOL g_bIdentity;

            MyProtecEdit.cpp:
            extern BOOL g_bIdentity;

            響應CMyProtectEditDefWindowProc函數(shù):
            LRESULT CMyProtectEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
            {
            // TODO: Add your specialized code here and/or call the base class
            // Edit的內(nèi)容獲取必須通過以下兩個消息之一,不對其采用默認的處理:
            if(( message == WM_GETTEXT) || ( message == EM_GETLINE))
            { //檢查是否為合法
            if(!g_bIdentity)
            { //非法獲取,顯示非法信息
            AfxMessageBox(_T("不能讓你看我的密碼,:( !"));
            return 0;
            )
            g_bIdentity = FALSE;//合法獲取
            }

            return CEdit::DefWindowProc(message, wParam, lParam);
            }

            然后在MyDlg.cpp
            void CMyDlg::DoDataExchange(CDataExchange* pDX)
            {
            CDialog::DoDataExchange(pDX);
            //{{AFX_DATA_MAP(CGetPasswordDlg)
            // NOTE: the ClassWizard will add DDX and DDV calls here
            if( pDX->m_bSaveAndValidate)
            {
            g_bIdentity = TRUE;
            }
            //}}AFX_DATA_MAP
            }
            即可.找個程序(盜取)的試試.

            3.如何在編輯控件中以追加的方式添入字符?

            [問題提出]
            SetDlgItemText可以向Edit控件中輸入字符,發(fā)送更新的消息也可是Edit控件顯示與其關聯(lián)的變量的值,但若是向已有的Edit字符后追加字符,該如何做?
            [程序?qū)崿F(xiàn)]
            建立名為My的對話框工程,添加一個Edit和一個Button控件.EditID=IDC_EDIT1,ButtonID=IDC_BUTTON1.建立和IDC_BUTTON1的響應函數(shù):OnButton1()
            void CMyDlg::OnButton1()
            {
            CString pText="你好";
            CEdit *m_Edit=(CEdit *)GetDlgItem(IDC_EDIT1);
            int nLen=m_Edit->GetWindowTextLength();
            m_Edit->SetFocus();
            m_Edit->SetSel(nLen, nLen);
            m_Edit->ReplaceSel(pText);
            }
            Edit控件中輸入字符,想追加時按IDC_BUTTON1按鈕.看看效果.

            4.怎樣實現(xiàn)3D效果?

            在對話框中怎樣實現(xiàn)EditListboxes控件的3D效果?(環(huán)境95/NT VC5.0)

            1). 使用帶WS_EX_CLIENTEDGE標志的::CreateWindowEx來替換::CreateWindow 或者用CWnd::CreateEx替換CWnd::Create.
            2).在建立控件之后,調(diào)用ModifyStyleEx(0, WS_EX_CLIENTEDGE).

            5.RichEdit加入后,對話框打不開

            Dialog(FormView中打開)中加入CRichEdit控件后,這個dialog 為什么打不開如何處理?
            [解決方法]
            在函數(shù):InitInstance的第一句加入AfxInitRichEdit();

            6.Richedit設置背景圖片的辦法

            1:繼續(xù)CRichEditCtrl::OnEraseBkgnd(CDC* pDC)消息事件中,給Richedit控件繪制上背景圖片:m_bmpBackground.DrawDIB(pDC, 0, 0, rc.Width(), rc.Height());當然也可以通過subclass richedit window之后,在回調(diào)函數(shù)中處理WM_ERASEBKGND消息。

            2:設置了Richedit控件的透明屬性;

            3:依照kenwhale所說的,HookGDI32.DLL中的ExtTextOut函數(shù),將RichEdittext-output options去除ETO_OPAQUE style

            。綜上所述,即可實現(xiàn)RichEdit控件的背景圖片效果。

            據(jù)此,我還實現(xiàn)了RichEdit控件背景繪制AVI動畫效果。

            7.改變編輯框的背景色(WM_CTLCOLOR消息)

            首先要明白:WM_CTLCOLOR是一個由控制(Control)發(fā)送給它父窗口的通知消息(Notification message)

            實現(xiàn)步驟:
            生成一個標準的單文檔應用程序框架,假設應用程序的名稱為Color。我將利用它的About對話框做示范。在About dialog中添加兩個Edit control,設定其IDIDC_EDIT1IDC_EDIT2

            第一種方法(對應于IDC_EDIT1): 按照標準的Windows編程,由其父窗口的消息處理函數(shù)負責處理WM_CTLCOLOR消息。

            1. CAboutDlg中添加一個數(shù)據(jù)成員:HBRUSH m_brMine;
            2. 利用向?qū)в成?/span>AboutDlgWM_CTLCOLOR消息,產(chǎn)生函數(shù):HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
            pDCAboutDlg的設備上下文,pWndAboutDlg中發(fā)送該消息的control指針,nCtlColorControl的類型編碼。對其進行如下修改:

            HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
            {
            if ((pWnd->GetDlgCtrlID() == IDC_EDIT1) && (nCtlColor == CTLCOLOR_EDIT))
            {
            COLORREF clr = RGB(255,0,0);
            pDC->SetTextColor(clr); //設置紅色的文本
            clr = RGB(0,0,0);
            pDC->SetBkColor(clr); //設置黑色的背景
            m_brMine = ::CreateSolidBrush(clr);
            return m_brMine; //作為約定,返回背景色對應的刷子句柄
            }
            else
            {
            HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
            return hbr;
            }
            }

            第二種方法(對應于IDC_EDIT2):
            利用MFC 4.0的新特性: Message reflection

            1.利用向?qū)砑右粋€新的類:CColorEdit,基類為CEdit;
            2.CColorEdit中添加一個數(shù)據(jù)成員: HBRUSH m_bkBrush;
            3.利用向?qū)в成?/span>CColorEdit"=WM_CTLCOLOR"消息,產(chǎn)生函數(shù):

            HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor);

            對其進行如下修改:

            HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor)
            {
            COLORREF clr = RGB(0,0,0);
            pDC->SetTextColor(clr); //設置黑色的文本
            clr = RGB(255,0,0);
            pDC->SetBkColor(clr); //設置紅色的背景
            m_bkBrush = ::CreateSolidBrush(clr);
            return m_bkBrush; //作為約定,返回背景色對應的刷子句柄
            }

            4.利用向?qū)?/span>IDC_EDIT2生成一個數(shù)據(jù)成員CColorEdit m_coloredit;
            5.在定義CAboutDlgcolor.cpp文件中加入:#include "coloredit.h"

            posted @ 2008-04-02 18:51 wrh 閱讀(1243) | 評論 (0)編輯 收藏
            僅列出標題
            共25頁: First 17 18 19 20 21 22 23 24 25 

            導航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統(tǒng)計

            常用鏈接

            留言簿(19)

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久久久精品妇女99| 7777久久亚洲中文字幕| 亚洲精品无码久久毛片| 久久午夜免费视频| 久久久精品人妻一区二区三区蜜桃| 久久精品国产69国产精品亚洲 | 久久人妻无码中文字幕| 日产精品久久久一区二区| 国产精品久久久久一区二区三区 | 中文字幕无码久久精品青草 | 国内精品九九久久久精品| 久久久久国色AV免费观看| 久久精品人人做人人爽97| 亚洲精品NV久久久久久久久久 | 99久久成人国产精品免费| 久久久久久国产精品美女| 成人久久久观看免费毛片| 一本大道久久香蕉成人网| 久久综合狠狠综合久久激情 | 亚洲精品tv久久久久| 国产精品九九久久免费视频 | 国产激情久久久久影院| 久久久精品国产sm调教网站| 伊人精品久久久久7777| 久久精品女人天堂AV麻| 色综合久久精品中文字幕首页| 人妻丰满AV无码久久不卡| 99久久综合国产精品免费| 婷婷久久精品国产| 久久久91人妻无码精品蜜桃HD| 国产一久久香蕉国产线看观看| 久久99精品久久久久久久久久| 精品久久久无码21p发布| 久久受www免费人成_看片中文| 国内精品欧美久久精品| 91久久精品无码一区二区毛片| 久久精品国产91久久麻豆自制| 99久久免费国产特黄| 久久精品中文字幕久久| 亚洲一本综合久久| 国产精品综合久久第一页|