windows子窗口控件---Win32

来源:互联网 发布:淘宝店铺酷衣购 编辑:程序博客网 时间:2024/05/18 00:39

1. 基本函数
1) 获得子窗口的父窗口
    hwndParent = GetParent(__in HWND hWnd);
    SendMessage(hwndParent, Msg, wParam, lParam )
    父窗口相应消息:
    可以是 WM_USER或更大
2) 获取应用程序实例:
    HINSTANCE hInstance;
    WM_CREATE:
             hInstance = ((LPCREATESTRUCT)lParam)->hInstance;

    HINSTANCE hInst = GetWindowLong(__in HWND hWnd, __in int nIndex);
    HINSTANCE hInst = GetWindowLong(hWnd, GWL_HINSTANCE); 
3) 由窗口句柄获得窗口ID
    id = GetWindowLong(hChildWnd, GWL_ID);
    id = GetDlgCtrlID(hChildWnd);
4) 由父窗口句柄和子窗口ID获得子窗口句柄
    hChildWnd = GetDlgItem(hParentWnd, id);

2. 按钮:
1) 消息类型
当用鼠标单击按钮时,子窗口控件就会向父窗口发送一个WM_COMMAND消息,消息含义如下:

LOWORD (wParam)

HIWORD (wParam)

lParam

子窗口ID

通知码

子窗口句柄


通知码的含义:

按钮通知码标识符

BN_CLICKED

0

BN_PAINT

1

BN_HILITE or BN_PUSHED

2

BN_UNHILITE or BN_UNPUSHED

3

BN_DISABLE

4

BN_DOUBLECLICKED or BN_DBLCLK

5

BN_SETFOCUS

6

BN_KILLFOCUS

7

目前只使用通知码6,7

2) 父窗口向子窗口发送消息

按钮消息

BM_GETCHECK

0x00F0

BM_SETCHECK

0x00F1

BM_GETSTATE

0x00F2

BM_SETSTATE

0x00F3

BM_SETSTYLE

0x00F4

BM_CLICK

0x00F5

BM_GETIMAGE

0x00F6

BM_SETIMAGE

0x00F7

SendMessage (hwndButton, BM_SETSTATE, 1, 0) ;
SendMessage (hwndButton, BM_SETSTATE, 0, 0) ;
SendMessage ((HWND) lParam, BM_SETCHECK, (WPARAM) !SendMessage ((HWND) lParam, BM_GETCHECK, 0, 0), 0) ;

3) 设置按钮文字
     SetWindowText(__in HWND hWnd, __in_opt LPCSTR lpString)
     SetWindowText(hChildWnd, pszString);
     iLength = GetWindowText (hwnd, pszBuffer, iMaxLength) ;
     iLength = GetWindowTextLength (hwnd) ;

4) 可见的和启用按钮
    ShowWindow (hwndChild, SW_SHOWNORMAL) ;
    ShowWindow (hwndChild, SW_HIDE) ;  // SW_VISIBLE
    BOOL b = IsWindowVisible(hwndChild);

    EnableWindow(hwndChild, FALSE);     // TRUE
    IsWindowEnabled (hwndChild) ;




原创粉丝点击