981
NTOUCS 視窗環境應用程式設計
Assignment #1

98/10/08 (四) 10:30 繳交

 

下列的要求為漸進式的, 請盡量完成:

  1. 請運用 VC2005 製作一個 Win32 應用程式

  2. 請調整所開啟視窗的大小為 高 300 像素, 寬 400 像素

  3. 請使用資源檢視視窗編輯一個選單項目 "功能", 參考範例執行程式, 增加 "開啟記事本" 選單, 在屬性視窗中修改 ID 為 ID_EXE_NOTEPAD, 請在 WndProc() 函式內適當的地方處理此 WM_COMMAND/ID_EXE_NOTEPAD 訊息, 運用 WinExec() API (或是類似 API) 執行 "記事本" 應用程式 (c:\windows\system32\notepad.exe) 打開一個視窗

  4. 請再增加 "尋找記事本視窗" 選單項目, 請在 WndProc() 函式內適當的地方處理此 WM_COMMAND 訊息, 運用 FindWindowEx() API 找到剛剛開啟的視窗的 handle (包括外層記事本視窗和內部編輯子視窗), 呼叫 InvalidateRect(hWnd, NULL, TRUE) 來重繪視窗內容 (此步驟完成後, 你還沒有辦法在視窗中看到任何顯示, 需要完成下一步驟才能夠看到結果)

  5. 請在程式中處理 WM_PAINT 的地方運用 TextOut() API 將上一步驟中得到的 handle 印出來:你需要運用 wsprintf() 函式將你所得到的 window handle 轉換為 16 進位格式

  6. 請再增加 "設定記事本標題" 選單項目, 請在 WndProc() 函式內適當的地方處理此 WM_COMMAND 訊息, 運用 SendMessage() API 傳送 WM_SETTEXT 訊息給外層視窗來更改它的標題, 請注意不能用 PostMessage() API 傳送此訊息, why?

  7. 請再增加 "設定記事本內容" 選單項目, 請在 WndProc() 函式內適當的地方處理此 WM_COMMAND 訊息, 運用 SendMessage() API 傳送 WM_SETTEXT 訊息給內層編輯視窗來設定內容為 Hello World
    請注意這兩個步驟都不能用 SetWindowText() API 來取代, why?

  8. 在上面步驟中雖然可以看到筆記本視窗內資料變成了 Hello World, 但是這和從鍵盤輸入 Hello World 並不一樣 (嘗試把筆記本關掉, 你就會發現有一些些不同了)

  9. 請再增加 "模擬使用者由鍵盤輸入文字" 選單項目, 請在 WndProc() 函式內適當的地方處理此 WM_COMMAND 訊息, 請運用 PostMessage() API 傳送 WM_CHAR 訊息給內層編輯視窗來完全模擬使用者的輸入動作

  10. 請再增加 "模擬使用者關閉記事本" 選單項目, 請在 WndProc() 函式內適當的地方處理此 WM_COMMAND 訊息, 運用 PostMessage() API 傳送 WM_SYSCOMMAND(wParam=SC_CLOSE) 給外層記事本視窗來模擬使用者關閉記事本應用程式的動作 (如果資料有更改, 記事本程式應該會詢問你是否要存檔)

  11. 請再增加 "強迫關閉記事本" 選單項目, 請在 WndProc() 函式內適當的地方處理此 WM_COMMAND 訊息, 運用 PostMessage() API 傳送 WM_DESTROY 訊息給外層記事本視窗來強迫關閉記事本應用程式 (就算資料有更改, 程式也會立即結束, why?)

 

視窗環境應用程式設計課程 首頁

製作日期: 10/06/2009 by 丁培毅 (Pei-yih Ting)
E-mail: pyting@cs.ntou.edu.tw TEL: 02 24622192x6615
海洋大學 工學院 資訊工程系