介紹 在本教程中,我將演示一種在開發應用程式(比如圖形應用程式)時非常有用的方法。 眾所周知,應用程式會有很多控制項供使用者互動,以便在他們正在製作的主題上獲得預期的結果。 例如,這些控制項可以是改變顏色的旋轉器、改變文字字串的編輯框、處理某些內容的按鈕等等。 為什麼? 有時,最好將可以分組的控制項放在乙個單獨的位置,以便使用者在需要時可以將它們放在附近。 舉乙個非常簡單的例子,我想談談文字。因此,很多時候,我們需要更改檢視中顯示的文字的字串、顏色和背景顏色。這也是附帶的演示專案所演示的主題。 如何? 開始步驟:使用create(…)或createex(…)函式建立控制項。 在執行時建立控制項是mfc開發中最簡單、最有趣的部分。我們用來在執行時建立任何windows控制項的最常用的函式是create(…)函式,除非我們想要更多的擴充套件樣式,那麼我們可以使用createex(…)函式。 這些函式採用不同的引數,這取決於所討論的控制項、使用的樣式以及該控制項是否會出現在螢幕上。 例如,下面兩個**片段將使用我們在執行時傳遞給每個函式的引數設定的樣式建立乙個編輯框控制項。請注意,建立的編輯控制項不會出現在螢幕上,因為我們沒有使用ws_visible樣式位。我們這樣做是為了能夠演示本文的顯示和隱藏特性。: -) 例1。create(…)函式 如果m_wndeditbox是乙個cedit類的物件,這將建立乙個編輯框,有平的和單一的黑線邊框效果,像這樣:複製code
m_wndeditbox.create(es_autohscroll | // show scroll bars automatically.同乙個編輯框的螢幕截圖建立沒有3d外觀,乙個平面外觀。 例2。createex(…)函式 而這個是與createex(…)一起使用的,它在控制項周圍產生3d邊框效果:複製codees_multiline | // multiline text support.
es_left | // left aligned text in control.
es_nohidesel | // always show the selection.
ws_child | // this is child window.
ws_hscroll | // has horizontal scrollbars.
ws_vscroll, // has vertical scrollbars.
ws_border | // single flat black line border.
edtrect, // the rectangle area for position and size.
this, // how is the parent window?
id_edit); // the resource id defintion.
m_edtedit.createex(ws_ex_clientedge, // make a 3d-border效果很好,不是嗎? 上面用3d外觀建立的編輯框的螢幕截圖。 這兩個函式的原型如下:複製codenull,
es_autohscroll |
es_multiline |
es_left |
es_nohidesel |
ws_child |
ws_hscroll |
ws_vscroll,
edtrect, // the rectangle area for position and size.
this,
id_edit);
bool create(dword dwstyle, const rect &rect, cwnd *pparentwnd, uint nid);下一步:調整控制項的大小和位置。 如果rcclickme是乙個crect類的物件而m_btnclickme是乙個cbutton類的物件,那麼通過使用setrect(…),我們可以設定任何控制項的位置和大小,如下所示,使用**和螢幕截圖:複製codebool createex(dword dwexstyle, lpctstr lpszclassname,
lpctstr lpszwindowname, dword dwstyle,
const rect &rect, cwnd *pparentwnd, uint nid, lpvoid lpparam = null);
crect rcclickme; // the crect object for this control's rectangle areasetrect(&rcclickme, 50,290,220,310);
// this function actually sets the area
// this is the create(...) function that actually creates the control but
// without using the ws_visible style as expalined above.
m_btnclickme.create("click me!", // the caption of the button.
ws_child | // a child window.
bs_pushbutton, // a push button style.
rcclickme, // the position and size rectangle.
this, // the parent window.
id_clickme); // the resource id.
// this code will show the edit control關於演示應用: 功能及其作用: onpushbuttonclicked()——這個函式是**,負責展開和顯示控制項,或者在所謂的rollout視窗中摺疊和隱藏控制項。 showchildren(bool bshow)——這個是實際的邊界警察,負責實際顯示和隱藏rollout視窗的子視窗。它接受乙個布林值來決定使用者是顯示還是隱藏子元素。 oncreate (lpcreatestruct lpcs)-這是wm_create處理程式,已經與mfc一起。這是我們必須建立所需控制項的地方。 特點: 您可以單擊expander/collapser按鈕來切換子視窗和視窗大小和可見性。 您可以更改編輯框內的文字,以檢視靜態更改內的文字。 你可以點選點選我!按鈕,以檢視效果。觀察編輯框和靜態文字的變化。 單擊任何單選按鈕,可以檢視靜態文字顏色的變化。 單擊核取方塊將靜態返回顏色切換為黃色或灰色。 這就是朋友。祝你玩得愉快,繼續學習你能學到的東西!: -) 歡迎提出任何問題、意見和建議。在這裡或我的電子郵件,如你所願。 本文**於:m_edtedit.showwindow(sw_show);
updatewindow();
// this code will hide the edit control
m_edtedit.showwindow(sw_hide);
updatewindow();
在執行時改變控制項的大小
游標在控制項不同位置時的樣式 由於拐角這點手動精確實在困難 所以用範圍 範圍 3 這樣很容易就找到這一點了 procedure ctrlmousemove ctrl twincontrol shift tshiftstate x,y integer begin with ctrl do begin ...
C 在執行時動態建立型別
c 在執行時動態的建立型別,這裡是通過動態生成c 源 然後通過編譯器編譯成程式集的方式實現動態建立型別 public static assembly newassembly n private system.componentmodel.icontainer components null npro...
執行時隱藏 不顯示 程式視窗 VC
有時需要寫一些簡單的程式,在後台執行完成某些功能,這時則不想要它出現程式視窗。然而即使建立console控制台程式,執行時也會閃出乙個討厭的dos視窗。其實可以很容易地通過乙個簡單方法來解決這個問題。以ansi的consle工程為例,可以這樣,在程式中新增以下預編譯指令 pragma comment...