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

            久久精品中文字幕一区| 久久久久亚洲爆乳少妇无| 久久精品aⅴ无码中文字字幕重口| 久久精品亚洲精品国产色婷| 久久se精品一区二区| 久久久精品久久久久特色影视| 国产亚洲美女精品久久久2020| 国产精品青草久久久久婷婷| 伊人久久大香线蕉综合网站| 久久免费国产精品一区二区| 九九精品久久久久久噜噜| 国产精品久久网| 青草国产精品久久久久久| 久久久WWW成人免费精品| 69久久精品无码一区二区| 国产精品久久久久久五月尺| 久久久久久免费一区二区三区 | 久久精品九九亚洲精品天堂| 久久笫一福利免费导航| 99久久人人爽亚洲精品美女| 精品乱码久久久久久久| 国内精品久久久久久久久电影网| 亚洲国产成人久久综合野外| 久久www免费人成看国产片 | 一本大道加勒比久久综合| 久久精品午夜一区二区福利| 色综合久久综合中文综合网| 色婷婷久久久SWAG精品| 色播久久人人爽人人爽人人片aV| 久久福利片| 午夜精品久久久久久| 久久久精品国产Sm最大网站| 久久免费大片| 久久亚洲国产成人影院网站| 久久国产视屏| 亚洲欧美日韩久久精品| 狠狠综合久久综合88亚洲| 波多野结衣AV无码久久一区| 日韩AV无码久久一区二区| AV无码久久久久不卡网站下载| 久久久老熟女一区二区三区|