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

            中文精品久久久久国产网址| 久久久国产99久久国产一| 久久久久成人精品无码中文字幕| 国产成人精品综合久久久久| 伊人久久大香线蕉AV色婷婷色| 国内精品久久人妻互换| 久久毛片一区二区| 嫩草影院久久99| 偷偷做久久久久网站| 国产成人久久777777| 久久丫精品国产亚洲av不卡| 青青草原综合久久大伊人精品| 亚洲日韩欧美一区久久久久我| 成人妇女免费播放久久久| 亚洲日本久久久午夜精品| 亚洲成人精品久久| 免费精品久久天干天干| 久久久综合香蕉尹人综合网| 久久精品国产影库免费看| 囯产极品美女高潮无套久久久 | 国内精品久久久久影院亚洲| 丰满少妇人妻久久久久久4| 精品久久久久中文字幕日本| 日韩精品久久无码人妻中文字幕| 三级三级久久三级久久| 欧美精品乱码99久久蜜桃| 久久久久久久亚洲精品| 国产999精品久久久久久| 久久精品国产精品国产精品污| 色8久久人人97超碰香蕉987| 亚洲中文字幕久久精品无码APP| 久久综合久久鬼色| 亚洲国产成人久久笫一页| 人人狠狠综合88综合久久| 久久艹国产| 日本欧美国产精品第一页久久| 精品久久综合1区2区3区激情| 久久99精品久久久久久齐齐| 久久伊人亚洲AV无码网站| 久久久久久久波多野结衣高潮 | 久久久久久青草大香综合精品|