• <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 閱讀(1144) 評論(0)  編輯 收藏 引用 所屬分類: C++

            中文精品99久久国产| 色综合久久天天综合| 国内精品久久国产| 伊人久久大香线蕉AV色婷婷色| 思思久久99热只有频精品66| 久久天天躁狠狠躁夜夜网站| 99久久精品免费看国产一区二区三区 | 久久精品人妻中文系列| 97r久久精品国产99国产精| 国产精品久久久久一区二区三区 | 久久久精品久久久久久| 久久福利资源国产精品999| 久久精品国产福利国产秒| 久久亚洲天堂| 91精品国产高清91久久久久久| 久久久这里有精品中文字幕| 亚洲AV日韩AV天堂久久| 久久综合狠狠综合久久97色| 精品少妇人妻av无码久久| 久久久久久久女国产乱让韩 | 久久久久无码精品| 热99re久久国超精品首页| 一本色道久久HEZYO无码| 中文字幕精品久久| 久久www免费人成精品香蕉| 国产精品久久国产精麻豆99网站| 国产激情久久久久久熟女老人 | 18岁日韩内射颜射午夜久久成人| 久久亚洲美女精品国产精品| 久久婷婷人人澡人人爽人人爱| 久久人人爽人爽人人爽av| 精品免费久久久久国产一区| 色综合久久中文色婷婷| 国产日韩欧美久久| 国产视频久久| 久久国产精品无码网站| 久久国产精品免费一区二区三区 | 久久人人爽人人爽人人片AV东京热 | 99久久精品国产麻豆| 国产精品久久久久影院嫩草| 国产精品久久久久9999|