• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Visual C++ 2005圖像編程之屬性設置欄

    發表于:2007-05-25來源:作者:點擊數: 標簽:編程C++屬性visual2005
    工具箱含有選擇、填充、畫線等功能。使用這些工具時有的需要設置填充風格和線條的大
     工具箱含有選擇、填充、畫線等功能。使用這些工具時有的需要設置填充風格和線條的大小。為了方便用戶操作,實現更簡易的UI,實現了屬性工具欄。屬性欄需要添加的主要功能有2個顯示文字的靜態文本框和2個組合框。

      添加屬性欄控件,需要先通過資源編輯器在相應的位置上建立四個對應的工具欄按鈕,對于沒有接觸過Visual C++ 2005的朋友可能會找不到按鈕的屬性編輯器。在Visual C++ 6.0中是回車(右鍵)彈出對話框設置的。默認情況下,在工具欄右邊可以打開屬性設置對話框。注意下圖中紅色數字的位置就是我們創建靜態文本框和組合框的位置。

    MILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" twffan="done">
    圖2-1

      利用前面講述的方法建立一個CBaseToolBar的派生類CToolBoxPropBar。建立這個派生類的時候,如果選擇MFC類型,將不能直接選擇基類為CBaseToolBar,可以選擇CToolBar然后手動修改。也可以直接選擇C++類型,不選擇MFC,這樣就可以由我們指定任何的類名稱。

      在CToolBoxPropBar類的頭文件增加四個成員變量表示四個控件。在一些書籍和文章中介紹的方法是將控件變量添加到CMainFrame中,然后在CMainFrame::OnCreate()函數里創建這些控件,這樣的方法雖然可行,但是在實際的項目中,會造成CMainFrame過于龐大和臃腫,不方便管理。所以我們這里通過CToolBoxPropBar等類分離了這些控件的創建過程。然后給CToolBoxPropBar類添加一個子控件創建函數void CreateSubControl();添加后工具欄的頭文件:

    clearcase/" target="_blank" >cccccc" width="90%" align="center" bgcolor="#e1e1e1" border="1">
    class CToolBoxPropBar
    {
     ………………//省略部分代碼
     CStatic m_Static;
     CStatic m_Static2;
     CComboBox m_BrushStyle;
     CComboBox m_BrushSize;
     void CreateSubControl();
    };

      也許你會想把創建控件的代碼放入CToolBoxPropBar類的OnCreate函數里。不行!因為我們創建控件的時候需要訪問CToolBoxPropBar對象,如果直接在OnCreate函數里訪問,就表示這個控件還沒有創建成功,訪問將失敗。所以我們需要單獨的執行函數。而且調用這個函數必須在CToolBoxPropBar創建成功后。

    void CToolBoxPropBar:: CreateSubControl ()
    {
     HGDIOBJ hFont = GetStockObject( DEFAULT_GUI_FONT ); //取默認GUI字體
     CFont font;
     font.Attach( hFont );
     //將IDC_1(圖2-1中數字1按鈕的ID)按鈕設置為分隔條
     int nIndex = GetToolBarCtrl().CommandToIndex(IDC_1);
     SetButtonInfo(nIndex, IDC_1, TBBS_SEPARATOR, 60); //60表示控件的寬度
     RECT rect;
     GetItemRect(nIndex, &rect);
     m_Static.Create(_T("填充風格:"), WS_CHILD|WS_VISIBLE, rect, this, IDC_STATIC);
     m_Static.SetFont(&font);

     nIndex = GetToolBarCtrl().CommandToIndex(IDC_2);
     SetButtonInfo(nIndex, IDC_2, TBBS_SEPARATOR, 100);
     GetItemRect(nIndex, &rect);
     m_BrushStyle.Create("", WS_CHILD|WS_VISIBLE, rect, this, ID_COMBOBOX_STYEL);

     nIndex = GetToolBarCtrl().CommandToIndex(IDC_3);
     SetButtonInfo(nIndex, IDC_3, TBBS_SEPARATOR, 60);
     GetItemRect(nIndex, &rect);
     m_Static2.Create(_T("畫刷大小:"), WS_CHILD|WS_VISIBLE|, rect, this, IDC_3);
     m_Static2.SetFont(&font);

     nIndex = GetToolBarCtrl().CommandToIndex(IDC_4);
     SetButtonInfo(nIndex, IDC_4, TBBS_SEPARATOR, 50);
     GetItemRect(nIndex, &rect);
     m_BrushSize.Create("", WS_CHILD|WS_VISIBLE, rect, this, ID_COMBOBOX_WIDTH);
     m_BrushSize.SetFont(&font);
    }

      最后調用過程非常簡單,在CMainFrame類里和創建普通工具欄一樣,在OnCreate函數里創建CToolBoxPropBar工具欄,只需要在工具欄Create之后調用CreateSubControl即可。

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>