API之子窗口创建

来源:互联网 发布:苏州爱知科技招聘 编辑:程序博客网 时间:2024/04/28 20:49

 

子窗口的创建非常非常重要

步骤:1、新建窗口类,在窗口类中指名对应的自定义的窗口过程。窗口类类名要唯一,它     

         是各窗口类相互区别的标识。注意,类名或为静态变量,或为全局变量,因为程

         序随时都用他们。

      2、创建窗体时,指定其风格之一为WS_CHILD, 指定其父窗口句柄,得到父窗体实

         例句柄,并赋给子窗体。

      3、在主窗体的create消息中,创建0尺寸的子窗体,主窗体的size消息中,利用

        movewindow函数,重设窗体大小,重置窗体位置。

实例为CTRL002,CTRL003

实例CTRL001单击按钮显示对应文字

子窗口向父窗口发送消息

CreateWindow呼叫使用下面这些参数:

Class name(类别名称)

Window text(窗口文字)

Window style(窗口样式)

x position(x位置)

y position(y位置)

Width(宽度)

Height(高度)

Parent window(父窗口)

Child window ID(子窗口ID)

Instance handle(执行实体句柄

)Extra parameters(附加参数)

TEXT ("button")

button[i].szText

WS_CHILD|WS_VISIBLE|button[i].iStyle

cxChar

cyChar * (1 + 2 * i)

20 * xChar

7 * cyChar / 4

hwnd

(HMENU)i

((LPCREATESTRUCT) lParam) -> hInstance

NULL

 

 

说明:从WM_COMMAND区别出单击了哪个按钮。通过子窗口的ID号来区分。每个子窗口在创建时,就已经分配了一个唯一的ID号。ID号包含在WM_COMMAND消息中wParam的低字节位。用LOWORD()宏来获取ID。

      “用鼠标单击按钮时,子窗口控制就向其父窗口发送一个WM_COMMAND消息。...捕获WM_COMMAND消息....”

       “LOWORD(wParam)   子窗口ID

         HIWORD(wParam)    通知码

         lParam              子窗口句柄”

 

 

 

实例CTRL002 利用多个静态窗体绘制棋盘

说明:1、窗体类别必需是static类,否则程序不能生成静态窗体

      2、利用GetWindowLong得到窗体实例句柄

      3、HWND是数值类型,可以定义成数组

      4、创建子窗体时,将大小设为0,以便重置

      4、利用movewidow(...)函数重置静态子窗体位置

 

 

运行结果如下图

result1 chess

 

原创粉丝点击