• <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>
            穩定盈利的期貨交易方法-量化趨勢交易

            alantop -專業量化投資者

            愛好:量化投資,逆向工程,滲透
            隨筆 - 595, 文章 - 0, 評論 - 921, 引用 - 0
            數據加載中……

            修改控件style的方法

            簡單的說:

            After the control has been created, these styles cannot be modified, except as noted.


            修改控件風格
            ( )

            CWnd* pWnd 為你控件的指針 ,LPCTSTR lpszClassName 是你控件的類名 , 比如編輯框是 "Edit", 按鈕是 "Button", 詳情可以使用 SPY++ 查看 .

            ?

            BOOL ModifyControlStyle(CWnd* pWnd,LPCTSTR lpszClassName,DWORD dwRemove,DWORD dwAdd,DWORD dwRemoveEx,DWORD dwAddEx)

            {

            ?CWnd* pParentWnd = pWnd->GetParent();

            ?

            ?CFont* pFont = pWnd->GetFont();

            ?

            ?CString strText;

            ?pWnd->GetWindowText(strText);

            ?

            ?{

            ? // 在此添加保存控件其他屬性的代碼 , 我只保存了字體和文字

            ?}

            ?

            ?CRect rcWindow;

            ?pWnd->GetWindowRect(&rcWindow);

            ?pParentWnd->ScreenToClient(rcWindow);

            ?

            ?DWORD dwNewStyle = (pWnd->GetStyle() & ~dwRemove) | dwAdd;

            ?DWORD dwNewStyleEx = (pWnd->GetExStyle() & ~dwRemoveEx) | dwAddEx;

            ?

            ?UINT nID = pWnd->GetDlgCtrlID();

            ?

            ?pWnd->ShowWindow(SW_HIDE);

            ?pWnd->DestroyWindow();

            ?

            ?BOOL bResult = pWnd->CreateEx(dwNewStyleEx,lpszClassName,strText,dwNewStyle,rcWindow,pParentWnd,nID);

            ?

            ?pWnd->SetFont(pFont);

            ?

            ?return bResult;

            }

            ?

            測試代碼 :

            ?

            void CAboutDlg::OnButton()

            {

            ?CWnd* pWnd = GetDlgItem(IDC_EDIT1);

            ?

            ?if(pWnd->GetStyle() & ES_PASSWORD)

            ?{

            ? ModifyControlStyle(pWnd,"Edit",ES_PASSWORD,0,0,0);

            ?}

            ?else

            ?{

            ? ModifyControlStyle(pWnd,"Edit",0,ES_PASSWORD,0,0);

            ?}

            }

            ?

            修改控件風格的第二種方法:

            Changing Edit Control Styles at Runtime

            It is not possible to change all the styles of an Edit Control at runtime using ModifyStyle() or ModifyStyleEx(). If you have the need to change the text alignment at runtime, for example, it is best to construct the Edit Control by calling new and CreateEx, then deleting it and creating a new one when the style is to be changed. Alternatively, you can have 2 Edit Controls superimposed and hide the one with the incorrect style.

            ?

            In the demo, I use CreateEx to create the Edit Control, because then the extended style WS_EX_CLIENTEDGE can be used to give the 3D border for the control.

            ?

            ??? m_pFlyEdit->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"),

            ??????? "", dwStyle, rc, this, IDC_EDIT6);

            You will note the two lines that are commented out. If you enable those and comment out the above line, you will get a flat Edit Control (without border, unless you also uncomment the WS_BORDER style). The control remains flat because WS_EX_CLIENTEDGE is one of the styles that cannot be changed after creation.

            ?

            //??? m_pFlyEdit->Create( dwStyle, rc, this, IDC_EDIT6 );

            //??? m_pFlyEdit->ModifyStyleEx( 0, WS_EX_CLIENTEDGE );

            In the demo, the Edit Controls headed 'Text Alignment test' change the alignment style. The code deletes the old Edit Control and creates a new one each time the radio buttons are clicked. ModifyStyle() is called for m_Edit3 but as you will note, it has no effect.

            ?

            void CEditCtrlTutorialDlg::OnAlignmentChange(UINT nID)

            {

            ??? UpdateData();

            ??? TRACE("CEditCtrlTutorialDlg::OnAlignmentChange( %d )\n",

            ???????????????????????????????????????????????? m_nAlignment);

            ??? DWORD dwStyle =

            ????? WS_CHILD|WS_VISIBLE|WS_TABSTOP/*|WS_BORDER*/|ES_AUTOHSCROLL;

            ?

            ??? switch( m_nAlignment )

            ??? {

            ??? case 1:

            ??????? dwStyle |= ES_CENTER;

            ??????? m_Edit3.ModifyStyle(ES_RIGHT|ES_LEFT,ES_CENTER);

            ??????? break;

            ??? case 2:

            ??????? dwStyle |= ES_RIGHT;

            ??????? m_Edit3.ModifyStyle(ES_CENTER|ES_LEFT,ES_RIGHT);

            ??????? break;

            ??? default:

            ??????? dwStyle |= ES_LEFT;

            ??????? m_Edit3.ModifyStyle(ES_CENTER|ES_RIGHT,ES_LEFT);

            ??????? break;

            ??? }

            ??? m_Edit3.Invalidate();

            ?

            ??? CString str = _T("");

            ??? if( m_pFlyEdit )

            ??? {

            ??????? m_pFlyEdit->GetWindowText( str );

            ??????? delete m_pFlyEdit;

            ??? }

            ?

            ??? CRect rc;

            ??? m_Template.GetWindowRect( &rc );

            ??? ScreenToClient( &rc );

            ??? m_pFlyEdit = new CEdit;

            //??? m_pFlyEdit->Create( dwStyle, rc, this, IDC_EDIT6 );

            //??? m_pFlyEdit->ModifyStyleEx( 0, WS_EX_CLIENTEDGE );

            ??? m_pFlyEdit->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"),

            ?????????????????????????? "", dwStyle, rc, this, IDC_EDIT6);

            ??? // set font same as dialog to be sure they are the same

            ??? m_pFlyEdit->SetFont( GetFont() );

            ??? m_pFlyEdit->SetWindowText( str );

            ?

            ??? UpdateData(FALSE);

            }

            ES_UPPERCASE and ES_LOWERCASE styles need to be treated in the same way. ES_READONLY style can be changed by calling the SetReadOnly() member function as shown in the demo.

            ?

            void CEditCtrlTutorialDlg::OnReadOnly()

            {

            ??? UpdateData();

            ??? m_Edit2.SetReadOnly( m_bReadOnly );

            }

            The ES_NUMBER style can also be changed at runtime using ModifyStyle(). It is handy where an Edit Control is used for multiple purposes and also to turn the style in case it was forgotten in the RC script. The code below will actually toggle the style:

            ?

            void CEditCtrlTutorialDlg::OnNumbersOnly()

            {

            ??? UpdateData();

            ??? m_Edit7.SetSel(0,-1);??????? // select all the text

            ??? m_Edit7.Clear();??????????? // delete selection

            ??? m_Edit7.ModifyStyle(ES_NUMBER*(m_bNumbersOnly==FALSE),

            ?????????????????????????? ??ES_NUMBER*(m_bNumbersOnly==TRUE));

            }

            In this example, the Edit Control is also cleared while the style is changed. A number-only Edit Control can have non-numeric characters in it. It just won't permit them to be entered from the keyboard.

            ?

            posted on 2006-05-24 20:16 AlanTop 閱讀(1152) 評論(0)  編輯 收藏 引用 所屬分類: C++

            久久超乳爆乳中文字幕| 久久久久久久久久免免费精品 | 精品国产乱码久久久久久浪潮| 久久亚洲精品中文字幕三区| 色综合久久久久网| 久久国产热精品波多野结衣AV| 怡红院日本一道日本久久| 久久久久国产日韩精品网站| 久久精品国产第一区二区三区| 亚洲国产高清精品线久久| 国产精品成人99久久久久91gav | 亚洲国产精品久久久久婷婷老年 | 中文字幕无码精品亚洲资源网久久| 久久成人国产精品| 久久青青草原国产精品免费 | 亚洲国产成人久久一区WWW| 国产精品久久久99| 久久精品中文字幕一区| 久久久久亚洲AV无码专区网站| 国产成人久久久精品二区三区| 99久久国产综合精品五月天喷水| 久久综合丝袜日本网| 久久久91人妻无码精品蜜桃HD| 人妻无码久久精品| 伊人久久大香线蕉综合Av | 国产伊人久久| 中文字幕无码久久精品青草 | 久久精品国内一区二区三区| 久久996热精品xxxx| 久久久无码人妻精品无码| 久久精品九九亚洲精品天堂| 欧美国产成人久久精品| 久久久无码精品亚洲日韩按摩| 欧美一区二区精品久久| 亚洲婷婷国产精品电影人久久| 久久精品国产清高在天天线| 精品免费久久久久国产一区| 国产精品毛片久久久久久久| 国产精品gz久久久| 一本一道久久a久久精品综合 | 精品久久久久国产免费|