Windows SDK笔记(二):在窗口上建立控件

http://tech.ddvip.com   2006年07月18日    社区交流

本文详细介绍Windows SDK笔记(二):在窗口上建立控件

  一、概述

  控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册、

  也不需要写消息处理函数。

  在主窗口得到WM_CREATE消息时,建立子窗口即可。

  二、实例

//参数:窗口句柄,消息,消息参数,消息参数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  //处理感兴趣的消息
  switch (message)
  {
  case WM_CREATE:
    CreateWindow(TEXT("BUTTON"),    //控件"类名称"
        TEXT("按钮(&A)"),
        WS_CHILD | WS_VISIBLE |BS_PUSHBUTTON,
        10,
        10,
        100,
        100,
        hwnd,
        (HMENU)1000,      //控件ID
        ((LPCREATESTRUCT) lParam)->hInstance,  //实例句柄
        NULL);
    return 0;
  case WM_DESTROY:
    //当用户关闭窗口,窗口销毁,程序需结束,发退出消息,以退出消息循环
    PostQuitMessage (0) ;
    return 0 ;
  }
  //其他消息交给由系统提供的缺省处理函数
  return ::DefWindowProc (hwnd, message, wParam, lParam) ;
}

  三、关于WM_CREATE消息

  WM_CREATE 的lParam参数将会传入一个建立时信息结构指针(LPCREATESTRUCT)。

  结构中包含了一些有用信息(窗口建立时的参数)。

typedef struct tagCREATESTRUCT {
  LPVOID  lpCreateParams;
  HINSTANCE hInstance;    //实例句柄
  HMENU   hMenu;      
  HWND   hwndParent;
  int    cy;
  int    cx;
  int    y;
  int    x;
  LONG   style;
  LPCTSTR  lpszName;
  LPCTSTR  lpszClass;
  DWORD   dwExStyle;
} CREATESTRUCT, *LPCREATESTRUCT;

  四、控件与父窗口的协作

责编:豆豆技术应用

正在加载评论...