【win32 應用】win32窗口程序---網絡設置界面(ip設置)

最近都沒有更新博客,是因爲最近在弄win32的窗口程序,而且是公司自己實現的一套接口的win32程序,一是不方便上傳代碼,二是代碼參考價值不大,基本網上都是有的。

今天這個具體的網絡設置界面,我在網上搜索了很久沒有找到,記錄下來,方便自己查看。只講思路不貼代碼了。


Win32程序是基於消息的(message based)、事件驅動的(event driven)。當win32程序運行時,程序不斷檢測外部的觸發(比如單擊按鈕、輸入等),即是否發生事件,這些“輸入”由操作系統捕捉後,以消息的形式進入程序中,然後根據不同的觸發進行不同的處理。因此Win32程序只需完成三件事:

1.      定義窗口外觀

2.      定義不同事件發生時程序如何處理(定義窗口處理函數) 

3.      不斷檢測是否有新事件發生,並將其交給相應的處理函數處理    

main函數是一般C程序的入口,WinMain是Windows程序的入口。當用戶執行一個程序時,操作系統爲程序分配地址空間,並加載程序,調用入口函數執行程序。

 

關鍵點在消息和事件;做上層應用只需要熟悉和使用各種消息和事件,並在對應的地方對UI的外觀和內容做修改即可。

1、窗口的基本流程

編寫窗口程序的步驟:
    1 定義WinMain函數
    2 定義窗口處理函數–自己定義處理消息
    3 註冊窗口類(往OS寫入數據)
    4 創建窗口 (在內存中創建窗口)
    5 顯示窗口(根據內存中對於窗口的描述信息,在顯示器中繪製窗口)
    6 消息循環(提取/翻譯/派發)
    7 消息處理

具體代碼這裏就不再累述了,網上有很多資料。

2、彈窗的基本流程

1、初始化

DialogBox(ghInst, MAKEINTRESOURCE(IDD_DIALOG1), g_hwnd, (DLGPROC)MyDlgProc)

2、消息處理

BOOL CALLBACK MyDlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) 

3、退出

EndDialog(hwndDlg, wParam);

3、EditText控件基本認識和使用

win32中可編輯的窗口控件,用於和用戶交互。經常使用在用戶名和密碼的使用上。

SendDlgItemMessage(hWnd, dwCtrlID, WM_SETTEXT, 0, (LPARAM)(LPWSTR)wszTmp);

使用SendDlgItemMessage方法,可以輸入各種格式的字符。ip地址就是一個類似“192.168.1.1”字符串。

EditText控件改變時或產生EN_UPDATE和EN_CHANGE事件,具體有什麼區別請自行查資料。

4、網絡設置界面實現的基本思路

1、使用什麼控件來實現顯示和輸入

      使用確定使用EditText控件,來實現顯示和輸入。

2、如何解決格式的問題

      2.1、使用SendMessage(GetFocus(), EM_GETSEL, (WPARAM)&nEditStartPos, (LPARAM)&nEditEndPos);方法來獲取光標位置。

      2.2、光標跳過ip地址點(.)的位置

3、如何解決ip地址上線的問題

      3.1、當EditText控件改變時調用EN_UPDATE,此時我們在這個事件中檢測ip地址是否越界

      3.2、如果沒越界,不做操作,修改舊值爲當前設置的值。

      3.3、如果越界,修改光標回到上一個位置,設置EditText控件值爲舊值。

5、結束語

基本思路就是這樣子的,就不貼代碼了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章