




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、73實驗10 數(shù)據(jù)庫(2)實 驗1實驗0 Visual C+ 6.0中文版開發(fā)環(huán)境1實驗1 Windows編程基礎8實驗2 常用控件(1)12實驗3 常用控件(2)16實驗4 列表控件和樹控件22實驗5 菜單、工具欄和狀態(tài)欄27實驗6 框架窗口和文檔31實驗7 切分窗口41實驗8 圖形、文本和打印48實驗9 數(shù)據(jù)庫(1)60實驗10 數(shù)據(jù)庫(2)68實 驗實驗0 Visual C+ 6.0中文版開發(fā)環(huán)境實驗目的和要求(1)熟悉Visual C+ 6.0的開發(fā)環(huán)境(工具欄及各種窗口)。(2)顯示和隱藏工具欄。(3)用應用程序向導創(chuàng)建一個控制臺應用項目Ex_Hello。(4)輸入并編譯一個新的C+
2、程序。實驗準備和說明(1)在第一次上課時進行本次實驗。(2)熟悉Windows 2000操作系統(tǒng)的環(huán)境和基本操作。(3)熟悉實驗報告的書寫格式,這里給出下列建議:實驗報告采用A4大小紙張,封面一般包含實驗目次、實驗題目、班級、姓名、日期和機構名稱。報告內(nèi)容一般包括實驗目的和要求、實驗步驟、實驗思考和總結。需要指出的是,實驗步驟不是書本內(nèi)容的復制,而是自己結合實驗內(nèi)容進行探索的過程。教師也可根據(jù)具體情況提出新的實驗報告格式。(4)閱讀下列關于Visual C+的說明:Visual C+是Microsoft公司推出的目前使用極為廣泛的基于Windows平臺的可視化編程環(huán)境。Visual C+ 6.
3、0是在以往版本不斷更新的基礎上形成的,由于其功能強大、靈活性好、完全可擴展以及具有強有力的Internet支持,在各種C+語言開發(fā)工具中脫穎而出,成為目前最為流行的C+語言集成開發(fā)環(huán)境。Visual C+ 6.0分為標準版、專業(yè)版和企業(yè)版3種,但其基本功能是相同的。Visual C+ 6.05中文版是在Visual C+ 6.0基礎上進行漢化的一個版本,本書以此版本作為編程環(huán)境。為統(tǒng)一起見,本書仍稱為Visual C+ 6.0,并以Windows 2000作為操作系統(tǒng)。實驗內(nèi)容和步驟1啟動Windows 2000操作系統(tǒng)打開計算機,啟動Windows 2000操作系統(tǒng)。2創(chuàng)建工作文件夾圖0.1
4、 顯示提示對話框創(chuàng)建Visual C+ 6.0的工作文件夾“Visual C+程序實驗”(表示自己的文件夾),在文件夾“實驗”下再創(chuàng)建一個文件夾“實驗0”,下一次實驗就在“實驗”文件夾下創(chuàng)建子文件夾“實驗1”,依此類推。以后實驗所創(chuàng)建的工程都在相應的文件夾下,這樣既便于管理,又容易查找。3啟動Visual C+ 6.0選擇“開始”“程序”Microsoft Visual Studio 6.0Microsoft Visual C+ 6.0,運行Visual C+ 6.0。第一次運行時,將顯示“當時的提示”對話框。單擊“下一個提示”按鈕,可看到有關各種操作的提示。如果取消選中“再啟動時顯示提示”復
5、選框,那么下一次運行Visual C+ 6.0,將不再出現(xiàn)此對話框,如圖0.1所示。4認識開發(fā)環(huán)境界面工具欄菜單欄項目工作區(qū)窗口輸出窗口文檔窗口輸出窗口標簽標題欄狀態(tài)欄單擊“結束”按鈕關閉此對話框,進入Visual C+ 6.0開發(fā)環(huán)境。開發(fā)環(huán)境界面由標題欄、菜單欄、工具欄、項目工作區(qū)窗口、文檔窗口、輸出窗口和狀態(tài)欄等組成,如圖0.2所示。圖0.2 Visual C+ 6.0中文版開發(fā)環(huán)境標題欄一般有“最小化”、“最大化” 或“還原” 以及“關閉” 按鈕,單擊“關閉”按鈕將退出開發(fā)環(huán)境。標題欄上還顯示出當前被操作的文檔的文件名。菜單欄包含了開發(fā)環(huán)境中幾乎所有的命令,它為用戶提供了文檔操作、程序
6、的編譯、調(diào)試、窗口操作等一系列的功能。菜單中的一些常用命令還被排列在相應的工具欄上,以便用戶更好地操作。項目工作區(qū)窗口包含用戶項目的一些信息,包括:類(ClassView頁面)、項目文件(FileView頁面)和資源(ResourceView頁面)等。在項目工作區(qū)窗口中的任何標題或圖標處單擊鼠標右鍵,都會彈出相應的快捷菜單,包含當前狀態(tài)下的一些常用操作。文檔窗口一般位于開發(fā)環(huán)境中的右邊,各種程序代碼的源文件、資源文件、文檔文件等都可以通過文檔窗口顯示出來。輸出窗口一般出現(xiàn)在開發(fā)環(huán)境窗口的底部,包括編譯(Build)、調(diào)試(Debug)、查找文件(Find in Files)等相關信息的輸出。這
7、些輸出信息以多頁面標簽的形式出現(xiàn)在輸出窗口中,例如“編譯”頁面標簽顯示的是程序在編譯和連接時的進度及錯誤信息。狀態(tài)欄一般位于開發(fā)環(huán)境的最底部,它用來顯示當前操作狀態(tài)、注釋、文本光標所在的行列號等信息。5顯示和隱藏工具欄顯示或隱藏工具欄可以使用“定制”對話框或快捷菜單兩種方式進行操作。(1)“定制”對話框方式操作步驟如下: 選擇“工具”菜單“定制”菜單項,彈出“定制”對話框,如圖0.3所示。圖0.3 “定制”對話框圖0.4 工具欄的快捷菜單 單擊“工具欄”標簽項,將顯示出所有的工具欄名稱,凡顯示在開發(fā)環(huán)境上的工具欄名稱前面均帶有選中標記。 單擊“編譯”工具欄名稱,復選框中帶有選中標記,該工具欄將
8、顯示開發(fā)環(huán)境中。再單擊“編譯”工具欄名稱,復選框的選中標記將去除,該工具欄從開發(fā)環(huán)境中消失。其他工具欄的顯示和隱藏均可類似操作。(2)快捷菜單方式如果嫌上述操作不夠便捷,那么可以在開發(fā)環(huán)境中工具欄或菜單欄處右擊鼠標,將會彈出一個包含工具欄名稱的快捷菜單,如圖0.4所示,凡顯示在開發(fā)環(huán)境上的工具欄,其相應的菜單項前面就會有選中標記。對相應的工具欄進行選擇將使其顯示或隱藏。6工具欄的浮動與停泊Visual C+ 6.0的工具欄具有“浮動”與“停泊”功能。Visual C+ 6.0啟動后,系統(tǒng)默認將常用工具欄“停泊”在主窗口的頂部。若將鼠標指針指向工具欄的非按鈕區(qū)域,可以將工具欄拖放到主窗口的四周或
9、中央。如果拖放到窗口的中央處,則工具欄成為“浮動”的工具窗口。窗口的標題就是工具欄的類型名稱。拖放工具欄窗口的邊或角可以改變其 形狀。圖0.5 浮動的“標準”工具欄例如,將鼠標指針指向“標準”工具欄的非按鈕區(qū)域,按住鼠標左鍵不放,將其拖至屏幕中央,釋放鼠標左鍵,觀察變化。再將鼠標指針移至工具欄窗口的邊界處,按住鼠標左鍵不放并拖動,觀察大小的變化。圖0.5是“標準”工具欄浮動的狀態(tài),其大小已被拖放過。當然,浮動和停泊兩種狀態(tài)可以進行切換。在“浮動”的工具窗口標題欄處雙擊鼠標左鍵或將其拖放到主窗口的四周,都能使其停泊在相應的位置處。在“停泊”工具欄的非按鈕區(qū)域雙擊鼠標左鍵,可切換成“浮動”的工具窗
10、口。7創(chuàng)建和編連控制臺應用項目在Visual C+ 6.0中,用應用程序向導創(chuàng)建和編連一個控制臺應用程序,可按下列步驟進行: 選擇“文件”“新建”菜單命令,顯示出“新建”對話框,如圖0.6所示。圖0.6 新建一個工程 選擇“工程”標簽,并從列表框中選中Win32 Console Application項。 在“工程”編輯框中鍵入控制臺應用程序項目名稱Ex_Hello,并將項目文件夾定位到“D:Visual C+程序實驗實驗0”。 單擊“確定”按鈕,顯示W(wǎng)in32應用程序向導對話框。第一步是詢問項目類型,如圖0.7所示。圖0.7 控制臺應用程序的第1步 選中A “Hello, World!” a
11、pplication項。單擊“完成”按鈕,系統(tǒng)將顯示向導創(chuàng)建的信息,單擊“確定”按鈕將自動創(chuàng)建此應用程序。 默認時,項目工作區(qū)窗口顯示的是ClassView頁面,將所有內(nèi)容展開,雙擊main項,在文檔窗口中將main函數(shù)體中的"Hello World!n"改為"I Like Visual C+ 6.0中文版!n",結果如圖0.8所示。圖0.8 修改代碼說明:在輸入字符和漢字時,要切換到相應的輸入方法中,除了字符串和注釋可以使用漢字外,其余一律采用英文字符輸入。代碼中,stdafx.h是每個應用程序所必有的預編譯頭文件,程序所用到的Visual C+頭文件
12、包含均添加到這個文件中。 單擊編譯工具條上的生成工具按鈕或直接按快捷鍵F7,系統(tǒng)開始對Ex_Hello進行編譯、連接,同時在輸出窗口中觀察出現(xiàn)的內(nèi)容,當出現(xiàn):表示Ex_Hello.exe可執(zhí)行文件已經(jīng)正確無誤地生成了。圖0.9 運行結果 單擊編譯工具條上的運行工具按鈕或直接按快捷鍵Ctrl+F5,就可以運行剛剛生成的Ex_Hello.exe了,結果如圖0.9所示。8輸入并編譯一個新的C+程序 選擇“文件”“關閉工作區(qū)”菜單,關閉原來的項目。 按上面的方法創(chuàng)建一個Win32 Console Application項目Ex_Simple,在向導的第一步中選擇An empty project類型。
13、再次選擇“文件”“新建”菜單命令,顯示出“新建”對話框“文件”頁面,如圖0.10所示。圖0.10 “新建”對話框的“文件”頁面 在文件類型列表中選擇C+ Source File,然后在“文件”框中輸入要創(chuàng)建的文件名Ex_Simple,文件擴展名可以不必輸入,系統(tǒng)會自動添加cpp擴展名(cpp是C Plus Plus的縮寫,即C+的意思)。單擊“確定”按鈕,在打開的文檔窗口中輸入下列C+代碼:/*程序Ex_Simple,一個簡單的C+程序*/ C+程序的基本結構 #include <iostream.h>void main()double r, area;/ 聲明變量cout<
14、<"輸入圓的半徑:"/ 顯示提示信息cin>>r;/ 從鍵盤上輸入變量r的值area = 3.14159 * r * r;/ 計算面積cout<<"圓的面積為:"<<area<<"n" / 輸出面積 此時在文檔窗口中所有代碼的顏色都發(fā)生改變,這是Visual C+ 6.0的文本編輯器所具有的語法顏色功能如圖0.11所示。其中,綠色表示注釋,藍色表示關鍵詞等。圖0.11 編輯器的代碼語法顏色功能 按快捷鍵F7,系統(tǒng)開始編譯。編譯后,再按快捷鍵Ctrl+F5就可運行了。說明:對于C/C
15、+語言工程項目的創(chuàng)建,凡沒有特別說明,均采用此方法。9退出Visual C+ 6.0退出Visual C+ 6.0有兩種方式:一種是單擊主窗口右上角的“關閉”按鈕,另一種是選擇FileExit菜單。10寫出實驗報告結合思考與練習題,寫出實驗報告。思考與練習(1)除工具欄可以浮動和停泊外,看看還有哪些窗口可以這樣操作?(2)經(jīng)過創(chuàng)建項目文件的實驗,試總結出創(chuàng)建一個控制臺應用項目的一般方法。實驗1 Windows編程基礎實驗目的和要求創(chuàng)建一個Win32應用程序Ex_SDK,在程序中構造一個編輯框控件和一個按鈕。編輯框用于輸入一元二次方程的系數(shù),各系數(shù)之間用逗號分隔,當單擊“計算”按鈕,獲取方程系數(shù)
16、,然后將求得的根通過TextOut顯示在窗口客戶區(qū)中。實驗準備和說明(1)具備知識:簡單的SDK編程基礎。(2)準備本次上機所需要的程序。(3)創(chuàng)建本次實驗工作文件夾“Visual C+程序實驗實驗1”實驗內(nèi)容和步驟1啟動Visual C+ 6.0打開計算機,啟動Visual C+ 6.0系統(tǒng)。2創(chuàng)建工程并添加代碼 選擇“文件”“新建”菜單命令,打開應用程序向導,顯示出“新建”對話框。單擊“工程”標簽,從列表框中選中Win32 Application(Win32 應用程序)項。在工程名稱框中輸入Win32應用程序項目名稱Ex_SDK。單擊瀏覽按鈕.將工程定位到文件夾 “Visual C+ 6.
17、0程序實驗實驗1”。 單擊“確定”按鈕繼續(xù)。在向導第一步對話框中,選中An empty project(一個空的工程)項。單擊“完成”按鈕,系統(tǒng)將顯示AppWizard(應用程序向導)的創(chuàng)建信息,單擊“確定”按鈕,系統(tǒng)將自動創(chuàng)建此應用程序。 再次選擇“文件”“新建”菜單命令,顯示出“新建”對話框。單擊“文件”標簽,在左邊的列表框中選擇C+ Source File項,在右邊的“文件”下的編輯框中輸入Ex_SDK.cpp,單擊“確定”按鈕。 在打開的文檔窗口中輸入下面的代碼:#include <windows.h>#include <math.h>#include <
18、stdio.h>/ 求一元二次方程的根,函數(shù)返回根的個數(shù)int GetRoot(float a, float b, float c, double *root)double delta, deltasqrt;delta = b*b - 4.0 * a * c;if (delta<0.0) return 0;/ 無根deltasqrt = sqrt(delta);if (a!=0.0) root0 = (-b + deltasqrt)/(2.0 * a);root1 = (-b - deltasqrt)/(2.0 * a); elseif (b!=0.0) root0 = root1
19、 = -c/b;elsereturn 0;if (root0 = root1) return 1;else return 2;char str80;LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);/ 窗口過程int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) HWND hwnd ;/ 窗口句柄 MSG msg ;/ 消息 WNDCLASSwndclass ;/ 窗口類 wndclass.styl
20、e = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (
21、WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = "SDKWin"/ 窗口類名 if (!RegisterClass (&wndclass)/ 注冊窗口 MessageBox (NULL, "窗口注冊失??!", "HelloWin", 0) ; return 0 ; / 創(chuàng)建窗口 hwnd = CreateWindow ("SDKWin", / 窗口類名 "實驗1Windows編程基礎",/ 窗口
22、標題 WS_OVERLAPPEDWINDOW, / 窗口樣式 CW_USEDEFAULT, / 窗口最初的 x 位置 CW_USEDEFAULT, / 窗口最初的 y 位置 CW_USEDEFAULT, / 窗口最初的 x 大小 CW_USEDEFAULT, / 窗口最初的 y 大小 NULL, / 父窗口句柄 NULL, / 窗口菜單句柄 hInstance, / 應用程序實例句柄 NULL) ; / 創(chuàng)建窗口的參數(shù) ShowWindow (hwnd, nCmdShow) ;/ 顯示窗口 UpdateWindow (hwnd) ;/ 更新窗口,包括窗口的客戶區(qū) while (GetMessa
23、ge (&msg, NULL, 0, 0) TranslateMessage (&msg) ;/ 轉換某些鍵盤消息 DispatchMessage (&msg) ;/ 將消息發(fā)送給窗口過程,這里是WndProc return msg.wParam ;LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)HDChdc;PAINTSTRUCTps;staticHWNDhwndButton, hwndEdit;charstrEdit80, strA380, strHint
24、80;floata3;doubleroot2;inti, j, k, m;switch (message)case WM_CREATE:/ 窗口創(chuàng)建產(chǎn)生的消息hwndEdit = CreateWindow("edit", NULL, WS_CHILD|WS_VISIBLE|WS_ BORDER,10, 60, 200, 25, hwnd, NULL, NULL, NULL );hwndButton = CreateWindow("button", "計 算",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,240,
25、 60, 80, 25, hwnd, NULL, NULL, NULL );return 0 ; case WM_COMMAND:/ 命令消息,控件產(chǎn)生的通知代碼在wParam的高字中if (HWND)lParam = hwndButton )&&( HIWORD(wParam) = BN_CLICKED )/ 獲取編輯框控件的內(nèi)容,并將其轉換成float數(shù)值GetWindowText( hwndEdit, strEdit, 80); / 獲取編輯框內(nèi)容/ 分隔字符串k = 0;m = 0;for (j=0; j<80; j+)if (strEditj = ',&
26、#39;)k+; m = 0;else strAkm = strEditj;m+;for (i=0; i<3; i+)ai = (float)atof(strAi);/ 將字符串轉換成float數(shù)值int n = GetRoot(a0, a1, a2, root);if (n<1)strcpy(str, "方程無根!") ;else sprintf(str,"方程的解為:%f, %f", root0, root1);InvalidateRect(hwnd, NULL, TRUE);case WM_PAINT:hdc = BeginPaint(
27、hwnd, &ps);strcpy(strHint, "請輸入一元二次方程的3個系數(shù),中間用逗號分隔"); TextOut(hdc, 10, 40, strHint, strlen(strHint);TextOut(hdc, 10, 90, str, strlen(str);EndPaint(hwnd, &ps);return 0 ; case WM_DESTROY:/ 當窗口關閉時產(chǎn)生的消息PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam)
28、;/ 執(zhí)行默認的消息處理3運行并測試編譯并運行程序,在編輯框中填入一元二次方程的系數(shù)6、3、-9后,單擊“計算”按鈕,求解的結果就會顯示出來,如圖1.1所示。圖1.1 Ex_SDK運行結果4寫出實驗報告結合思考與練習題,寫出實驗報告。思考與練習(1)分析上述給出的參考代碼,比較和書中Ex_WinControl示例代碼有何不同?(2)構造一個編輯框和一個按鈕,當單擊按鈕,用消息對話框將編輯框內(nèi)容顯示出來。實驗2 常用控件(1)實驗目的和要求(1)創(chuàng)建一個默認的對話框應用程序Ex_Ctrls,如圖2.1所示。(2)設計一個如圖2.2所示的“課程信息”對話框。圖2.1 Ex_Ctrls對話框圖2.2
29、 “課程信息”對話框(3)實現(xiàn)功能:單擊圖2.1中的“課程信息”按鈕,彈出“學生基本信息”對話框,單擊“添加”按鈕,對話框內(nèi)容顯示在圖2.1中的列表框中。實驗準備和說明(1)具備知識:靜態(tài)控件、按鈕、編輯框、旋轉按鈕控件、列表框和組合框控件。(2)創(chuàng)建本次實驗工作文件夾“Visual C+程序實驗實驗2”。實驗內(nèi)容和步驟1啟動Visual C+ 6.0打開計算機,啟動Visual C+ 6.0系統(tǒng)。2創(chuàng)建一個默認的對話框應用程序Ex_Ctrls 選擇“文件”“新建”菜單,在彈出的“新建”對話框中選擇“工程”頁面,選擇MFC AppWizard(exe),在工程框中輸入Ex_Ctrls,并將工程
30、文件夾定位到“Visual C+程序實驗實驗2”。 單擊“確定”按鈕,在出現(xiàn)的Step 1對話框中選擇“基本對話(框)”應用程序類型,單擊“完成”按鈕。 在對話框編輯器中,單擊對話框工具欄上的切換網(wǎng)格按鈕,顯示對話框網(wǎng)格,將對話框標題改為“使用控件”。 調(diào)整對話框的大小,刪除對話框中間的“TODO: 在這里設置對話控制?!膘o態(tài)文本控件和“確定”按鈕控件,將“取消”按鈕標題改為“退出”,并移至對話框的下方。 向對話框中添加組框(Group)控件,標題設為“添加”,然后調(diào)整其大小和位置。 添加一個按鈕,標題設為“課程信息”,ID設為IDC_BUTTON_COURSE。 添加一個列表框,取其默認ID
31、號,去掉Sort風格屬性。3添加并設計“課程信息”對話框 按Ctrl+R快捷鍵,彈出“插入資源”對話框,在資源類型列表中選擇Dialog,單擊“新建”按鈕。 將該對話框資源的ID設為IDD_COURSE,標題設為“課程信息”,字體設為“宋體,9號”。 將OK和Cancel按鈕的標題改為“添加”和“取消”。 打開對話框網(wǎng)格,參看圖2.2的控件布局,為對話框添加如表2.1所示的一些控件。表2.1 課程信息對話框添加的控件添加的控件ID號標 題其 他 屬 性編輯框(課程號)IDC_EDIT_COURSENO默認編輯框(課程名稱)IDC_EDIT_COURSENAME默認組合框(所屬專業(yè))IDC_CO
32、MBO_SPECIAL默認組合框(課程類型)IDC_COMBO_TYPE默認編輯框(開課學期)IDC_EDIT_OPEN默認旋轉按鈕IDC_SPIN1Auto buddy、Set buddy integer、Right對齊,其余默認編輯框(課時數(shù))IDC_EDIT_COURSEHOURS默認編輯框(學分)IDC_EDIT_CREDIT默認 右擊添加的課程類型的組合框控件,從彈出的快捷菜單中選擇“屬性”命令,將其屬性對話框切換到Data頁面,直接輸入內(nèi)容,輸入一行后按Ctrl+Return鍵添加另一行。結果如圖2.3所示。圖2.3 課程類型組合框內(nèi)容輸入 按Ctrl+W快捷鍵或雙擊對話框資源模板
33、的空白處,為IDD_COURSE創(chuàng)建一個對話框CCourseDlg。 打開ClassWizard的Member Variables頁面,看Class name是否是CCourseDlg,選中所需的控件ID號,雙擊鼠標。依次為表2.2控件增加成員變量。表2.2 控件變量控件ID號變量類別變量類型變量名范圍和大小IDC_EDIT_COURSENOValueCStringm_strNOIDC_EDIT_COURSENAMEValueCStringm_strNameIDC_COMBO_SPECIALValueCStringm_strSpecialIDC_COMBO_SPECIALControlCCom
34、boBoxm_comboSpecialIDC_COMBO_TYPEValueCStringm_strTypeIDC_EDIT_OPENValueBYTEm_nOpenIDC_SPIN1ControlCSpinButtonCtrlm_spinOpenIDC_EDIT_COURSEHOURSValueintm_nHoursIDC_EDIT_CREDITValuefloatm_fCredit4添加CCourseDlg類代碼 用MFC ClassWizard為CCourseDlg類添加WM_INITDIALOG消息映射,并添加下列初始化代碼:BOOL CCourseDlg:OnInitDialog()
35、 CDialog:OnInitDialog();m_spinOpen.SetRange( 1, 8 );m_nHours = 60;m_fCredit = 2.0;m_nOpen = 1;m_strType = "專修"/ 這里對專業(yè)組合框進行初如化m_comboSpecial.AddString( "機械工程及其自動化" );m_comboSpecial.AddString( "電氣工程及其自動化" );m_strSpecial = "機械工程及其自動化"UpdateData(FALSE);return TRUE
36、; / return TRUE unless you set the focus to a control 用MFC ClassWizard為按鈕IDOK添加BN_CLICKED的消息映射,并增加下列 代碼:void CCourseDlg:OnOK() UpdateData();m_strNO.TrimLeft();if (m_strNO.IsEmpty()MessageBox("課程號不能為空!");return;m_strName.TrimLeft();if (m_strName.IsEmpty()MessageBox("課程名稱不能為空!");re
37、turn;CDialog:OnOK();5添加CEx_CtrlsDlg程序代碼 按Ctrl+W快捷鍵,打開MFC ClassWizard對話框,為列表框控件IDC_LIST1添加控件變量m_List,類型為CListBox。 用MFC ClassWizard為按鈕IDC_BUTTON_COURSE添加BN_CLICKED消息映射,并添加下列代碼:void CEx_CtrlsDlg:OnButtonCourse() CCourseDlg dlg;if (IDOK != dlg.DoModal() return;/ 清除列表框原來的顯示內(nèi)容while(m_List.GetCount()!=0) m
38、_List.DeleteString(0);m_List.AddString( "課 程 號:"+dlg.m_strNO);m_List.AddString( "課程名稱:"+dlg.m_strName);m_List.AddString( "所屬專業(yè):"+dlg.m_strSpecial);m_List.AddString( "課程類型:"+dlg.m_strType);CString str;str.Format("開課學期:%d", dlg.m_nOpen );m_List.AddStri
39、ng( str );str.Format("課 時 數(shù):%d", dlg.m_nHours );m_List.AddString( str );str.Format("學 分:%4.1f", dlg.m_fCredit);m_List.AddString( str ); 在Ex_CtrlsDlg.cpp文件的前面添加CInputDlg的頭文件包含:#include "Ex_CtrlsDlg.h"#include "CourseDlg.h" 編譯運行并測試。6寫出實驗報告分析上述運行結果以及思考與練習,寫出實驗報告。
40、思考與練習(1)為CCourseDlg類添加一個公有型CString成員變量m_strOKText,當通過CCourseDlg類對象將m_strOKText設為“修改”,CCourseDlg對話框中的“添加”按鈕標題變成“修改”,試編程實現(xiàn)。(2)由于每學期的一門課程學分一般不超過6個學分,因此若將學分編輯框改為組合框,應如何修改和編程?實驗3 常用控件(2)實驗目的和要求(1)設計一個如圖3.1所示的“學生基本信息”對話框。(2)在實驗2的基礎上,實現(xiàn)功能:在圖2.1中的“課程信息”按鈕下方添加一個“學生基本信息”按鈕,單擊該按鈕,彈出“學生基本信息”對話框,單擊“添加”按鈕,學生基本信息顯
41、示在列表框中。(3)在CEx_CtrlsDlg對話框中添加一個滾動條和兩個滑動條來調(diào)整對話框的背景顏色的3個分量:R(紅色分量)、G(綠色分量)和B(藍色分量),結果如圖3.2所示。 圖3.1 “學生基本信息”對話框圖3.2 設置對話框背景顏色實驗準備和說明(1)具備知識:滾動條、進展條、滑動條、時間和日歷控件。(2)創(chuàng)建本次實驗工作文件夾“Visual C+程序實驗實驗3”。實驗內(nèi)容和步驟1在實驗3的工作文件夾中復制Ex_Ctrls文件夾將本書實驗2中的Ex_Ctrls文件夾復制到實驗3的工作文件夾中。2啟動Visual C+ 6.0啟動Visual C+ 6.0系統(tǒng)。3創(chuàng)建并添加“學生基本
42、信息”對話框 選擇“文件”“打開工作區(qū)”菜單,將“Visual C+程序實驗實驗3Ex_Ctrls”文件夾中的Ex_Ctrls項目打開。 添加一個新的對話框資源,將ID號改為IDD_INPUT,標題為“學生成績輸入”,將對話框字體改為“宋體,9號”。將OK和Cancel按鈕標題改為“確定”和“取消”。 調(diào)整對話框的大小,將“確定”和“取消”按鈕移至對話框的下方,然后顯示對話框網(wǎng)格。 參看圖3.1,向對話框添加如表3.1所示的控件。表3.1 學生基本信息對話框添加的控件添加的控件ID號標 題其 他 屬 性編輯框IDC_EDIT_NAME默認編輯框IDC_EDIT_NO默認編輯框IDC_EDIT_
43、S1默認旋轉按鈕控件IDC_SPIN_S1Auto buddy、Right對齊編輯框IDC_EDIT_S2默認旋轉按鈕控件IDC_SPIN_S2Auto buddy、Set buddy integer、Right對齊編輯框IDC_EDIT_S3默認旋轉按鈕控件IDC_SPIN_S3Auto bud0dy、Set buddy integer、Right對齊 雙擊對話框模板空白處,為該對話框模板創(chuàng)建一個對話框類CInputDlg。 在MFC ClassWizard的Member Variables頁面中,確定Class name中是否已選擇了CInputDlg,選中所需的控件ID號,雙擊鼠標或單擊
44、Add Variables按鈕。依次為表3.2控件增加成員變量。表3.2 控件變量控件ID號變 量 類 別變 量 類 型變 量 名范圍和大小IDC_EDIT_NAMEValueCStringm_strName20IDC_EDIT_NOValueCStringm_strNO20IDC_EDIT_S1Valuefloatm_fScore10.0 100.0IDC_SPIN_S1ControlCSpinButtonCtrlm_spinScore1IDC_EDIT_S2Valuefloatm_fScore20.0 100.0IDC_SPIN_S2ControlCSpinButtonCtrlm_spin
45、Score2IDC_EDIT_S3Valuefloatm_fScore30.0 100.0IDC_SPIN_S3ControlCSpinButtonCtrlm_spin Score3 在MFC ClassWizard的Messsage Maps頁面中,為CInputDlg添加WM_INITDIALOG消息映射,并添加下列代碼:BOOL CInputDlg:OnInitDialog() CDialog:OnInitDialog();m_spinScore1.SetRange( 0, 100 );/ 設置旋轉按鈕控件范圍m_spinScore2.SetRange( 0, 100 );m_spinS
46、core3.SetRange( 0, 100 );return TRUE; / return TRUE unless you set the focus to a control 用MFC ClassWizard為CInputDlg增加IDC_SPIN_S1控件的UDN_DELTAPOS消息映射,并添加下列代碼:void CInputDlg:OnDeltaposSpinS1(NMHDR* pNMHDR, LRESULT* pResult) NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;UpdateData(TRUE);/ 將控件的內(nèi)容保存到變量中m_fSc
47、ore1 += (float)pNMUpDown->iDelta * 0.5f;if (m_fScore1<0.0) m_fScore1 = 0.0f;if (m_fScore1>100.0) m_fScore1 = 100.0f;UpdateData(FALSE);/ 將變量的內(nèi)容顯示在控件中*pResult = 0; 打開IDD_EX_CTRLS_DIALOG對話框資源,在 “課程信息”按鈕下方添加一個“學生基本信息”按鈕,并將ID號設為IDC_BUTTON_STUINFO。 用MFC ClassWizard為按鈕IDC_BUTTON_STUINFO添加BN_CLICKE
48、D消息映射,并添加下列代碼:void CEx_CtrlsDlg:OnButtonStuinfo() CStuInfoDlg dlg;if (IDOK != dlg.DoModal() return;while(m_List.GetCount()!=0)m_List.DeleteString(0);CString strSex("女");if (dlg.m_bMale) strSex = "男"m_List.AddString( "姓名:"+dlg.m_strName);m_List.AddString( "學號:"
49、+dlg.m_strNo);m_List.AddString( "性別:"+strSex);m_List.AddString( "出生年月:"+dlg.m_tBirth.Format("%Y-%m-%d");m_List.AddString( "所學專業(yè):"+dlg.m_strSpecial); 在Ex_CtrlsDlg.cpp文件的前面添加CStuInfoDlg類的頭文件包含:#include "CourseDlg.h"#include "StuInfoDlg.h" 編譯運
50、行并測試。結果如圖3.3所示。圖3.3 學生基本信息添加后的結果4改變對話框背景顏色 將項目工作區(qū)窗口切換到ResourceView頁面,打開IDD_EX_CTRLS_DIALOG對話框資源。 打開對話框網(wǎng)格,參看圖3.2的控件布局,為對話框添加如表3.3所示的一些控件。表3.3 添加的控件添加的控件ID號標 題其 他 屬 性垂直滾動條IDC_SCROLLBAR_RED默認滑動條(綠色)IDC_SLIDER_GREEN方位為Vertical, 其他默認滑動條(藍色)IDC_SLIDER_BLUE方位為Vertical, 其他默認 用MFC ClassWizard為表3.4控件添加成員變量。表3
51、.4 控件變量控件ID號變 量 類 別變 量 類 型變 量 名范圍和大小IDC_SCROLLBAR_REDControlCScrollBarm_scrollRedIDC_SLIDER_GREENControlCSliderCtrlm_sliderGreenIDC_SLIDER_GREENValueintm_nBlueIDC_SLIDER_BLUEControlCSliderCtrlm_sliderBlueIDC_SLIDER_BLUEValueintm_nBlue 為CEx_CtrlsDlg類添加兩個成員變量,一個是int型m_nRed,用來設置顏色R、G、B中的紅色分量,另一個是畫刷CBru
52、sh類對象m_Brush,用來設置對話框背景所需要的畫刷。 在CEx_CtrlsDlg:OnInitDialog函數(shù)中添加下列代碼:BOOL CEx_CtrlsDlg:OnInitDialog() m_scrollRed.SetScrollRange(0, 255);m_sliderBlue.SetRange(0, 255);m_sliderGreen.SetRange(0, 255);m_nBlue = m_nGreen = m_nRed = 192;UpdateData( FALSE );m_scrollRed.SetScrollPos(m_nRed);return TRUE; / return TRUE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45215-2025危險貨物自反應物質和有機過氧化物引爆試驗方法
- 停放車輛服務合同范本
- 加盟投資協(xié)議合同范本
- 住房購房合同范例
- 勞務家政合同范本
- 儀器安裝服務合同范本
- 修路挖機合同范本
- 臨時增項合同范本
- 北京公司擔保合同范本
- 做樓房施工合同范本
- 新湘教(湖南美術)版小學美術五年級下冊全冊PPT課件(精心整理匯編)
- 家譜樹形圖模板
- 工程交付培訓記錄表
- 大智慧指標公式函數(shù)大全(完整可打印版)
- 髖膝關節(jié)置換術后X線評價-PPT課件
- 蓋梁抱箍法施工計算書蓋梁抱箍法施工方案
- (完整版)涼亭施工方案
- 《中國近現(xiàn)代史綱要》上編教學案例分享
- 新加坡環(huán)境治理與保護
- 常用消防圖例
- 生物安全手冊(共39頁)
評論
0/150
提交評論