win32(九)

一 對話框

  1 對話框的分類
  2 對話框的基本使用方式
  3 對話框資源
  4 有模式對話框的使用
  5 無模式對話框的使用
    5.1 添加對話框資源
    5.2 定義窗口處理函數
       BOOL CALLBACK DialogProc(
        HWND hwndDlg,  // handle to dialog box
                UINT uMsg,     // message
                WPARAM wParam, // first message parameter
                LPARAM lParam   ); // second message parameter
    5.3 創建對話框
       HWND CreateDialog(
              HINSTANCE hInstance,//應用程序實例句柄
              LPCTSTR lpTemplate,//對話框的資源ID
              HWND hWndParent,//父窗口
              DLGPROC lpDialogFunc );//對話框的窗口處理函數
         返回值是創建好的對話框的窗口句柄。
    5.4 顯示對話框
       ShowWindow
    5.5 關閉對話框
       EndDialog
    5.6 與有模式對話框對比
       創建函數: 有模式對話框 DialogBox
                 無模式對話框 CreateDialog
       程序執行方式: 
        有模式對話框會阻塞,禁止其他窗口的輸入
        無模式對話框會讓主程序,不影響其它窗口的輸入

  6 對話框中的消息        

    WM_INITDIALOG消息,用途類似於WM_CREATE消息
    可以在對話框創建完成後,進行數據初始化.
    它與WM_CREATE不同之處是,WM_INITDIALOG消息
    會在對話框資源模板上的所有子控件(按鈕等)
    創建完成後,再發送給對話框窗口. 
      wParam - 當前接受輸入焦點子控件窗口句柄
      lParam - 創建時附帶的參數

  7 對話框和普通窗口的對比
    7.1 創建方式 
      普通窗口: CreateWindow/Ex
      對話框: DialogBox/CreateDialog
    7.2 消息
      普通窗口: 會收到WM_CREATE
      對話框:   WM_INITDIALOG
    7.3 關閉方式:
      普通窗口: DestoryWindow等
      對話框: EndDialog

二 子控件

  1 子控件

    1.1 控件的類型
    由Windows系統定義的窗口類型,可以提供
    相應的功能.包括按鈕、文本編輯框、靜態框等.

    1.2 控件的創建
    都可以使用CreateWindow/CreateWindowEx
    創建,並獲取到控件HWND。創建時每個子控件
    都要有相應的ID號,ID號要求不重複。

    1.3 控件的消息
    子控件和父窗口(一般窗口或者對話框)的交互
    都是通過消息完成。如果子窗口狀態發生變化,
    子窗口會向父窗口發送相應的消息。
    一般父窗口會使用SendMessage函數向子窗口
    發送消息。
    父窗口響應子窗口發送的消息一般是在
    WM_COMMAND進行處理。

三 靜態框

  1 靜態框創建
    窗口類的名稱 - STATIC, 用於窗口上
    顯示文字等, 如果使用SS_ICON/SS_BITMAP
    風格可以顯示ICON和BITMAP

    文本靜態框 - 創建時使用SS_SIMPLE即可
    ICON靜態框 - 創建時需要使用SS_ICON, 並且
       將靜態框的窗口名稱設置成對應ICON的資源
       ID號,例如"#101".

  2 靜態框的命令相應
    2.1 靜態框要添加SS_NOTIFY風格
    2.2 WM_COMMAND進行處理
       WPARAM - HIWORD 命令ID
                LOWORD 靜態框的窗口ID
       LPARAM - 靜態框的窗口句柄.  

  3 靜態框的消息
    調用SendMessage函數,向Static控件發送消息
    例如: STM_SETICON消息修改控件顯示圖標
      SendMessage( hStatic, STM_SETICON,
                (WPARAM)hIcon, 0 );
        其他:
      GetDlgItem 從窗口中獲取指定ID的子控件的
        窗口句柄

四 按鈕

   1 按鈕的分類
     根據創建按鈕時使用的風格:
     1.1 下壓式按鈕 PUSH BUTTON 
        正常下壓式按鈕 BS_PUSHBUTTON 
        三態下壓按鈕 BS_3STATE/BS_AUTO3STATE
     1.2 分組按鈕 Group Button
        按鈕樣式:BS_GROUPBOX
     1.3 多選按鈕   Check Box 
        按鈕樣式:BS_CHECKBOX/BS_AUTOCHECKBOX
     1.4 單選按鈕   Radio Box
        按鈕樣式:BS_RADIOBUTTON/
                 BS_AUTORADIOBUTTON

   2 下壓式按鈕的使用
     2.1 創建按鈕
        創建時使用BUTTON
     2.2 命令消息
        BN_CLICKED消息: 當點擊按鈕通過
          WM_COMMAND消息通知父窗口
     2.3 通知消息 
        SendMessage

   3 分組按鈕
     3.1 創建分組按鈕
     3.2 常用於對窗口內控件劃分區域,增加
        界面的友好性

   4 多選按鈕 CheckBox
     4.1 創建使用 BS_CHECKBOX/BS_AUTOCHECKBOX
       BS_AUTOCHECKBOX 選擇狀態系統自動維護
       BS_CHECKBOX 選擇狀態需要自己維護
     4.2 命令響應
       BN_CLICKED 通過WM_COMMAND消息
     4.3 通知消息
       BM_GETCHECK 獲取當前按鈕被選擇的狀態
       BM_SETCHECK 設置當前按鈕被選擇的狀態
          wParam 用於設置狀態標示
       狀態: BST_CHECKED 或 BST_UNCHECKED

   5 單選按鈕 RadioBox
     5.1 創建使用 BS_RADIOBUTTON/BS_AUTORADIOBUTTON
       BS_AUTORADIOBUTTON 選擇狀態系統自動維護
       BS_RADIOBUTTON 選擇狀態需要自己維護
       注意:
       RadionBox分組 - 使用WS_GROUP樣式,可以將
       RadionBox分成多個組.
          A CreateWindow (  ,,,WS_GROUP );
          B CreateWindow...
          C CreateWindow (  ,,,WS_GROUP );
          D CreaetWindow...
          A和B是一組, C和D是一組
     5.2 命令響應
       BN_CLICKED 通過WM_COMMAND消息
     5.3 通知消息
       與CheckBox類似

五 文本編輯框

  1 文本編輯框的樣式
    1.1 單行文本編輯框 - 默認樣式
    1.2 多行文本編輯框 - ES_MULTILINE
    1.3 密碼文本編輯框 - ES_PASSWORD
  2 文本編輯框的使用
    2.1 創建 
       窗口類名稱EDIT.
    2.2 Notify消息
       EN_CHANGE 當編輯框內容發生變化時,
         會通知父窗口
    2.3 EDIT窗口消息
       EM_SETSEL 選擇消息 WPARAM是起始字符位置
           LPARAM是終止字符位置
       窗口消息: WM_COPY, WM_PASET,WM_CUT等消息
         WM_SETTEXT, WM_GETTEXT, WM_GETTEXTLEN
         SetWindowText
         GetWindowText/GetWindowTextLen
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章