Windows程序设计之子窗口设计

来源:互联网 发布:百视通移动第三方软件 编辑:程序博客网 时间:2024/04/28 15:52

一、子窗口基础知识
1.利用Windows预定义的窗口类(窗口过程函数),建立标准的子窗口。
2.用户只须捕获WM_COMMAND消息,来响应子窗口的动作。

二、按钮类
1.按钮类:button
2.一般是在应用程序窗口过程函数处理WM_CREATE消息时创建按钮,
  hButton=CreateWindow(TEXT("button"), //按钮类名称,Button也可以?
                                           TEXT("确定"),   //按钮显示文字
                                           WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                                           200,
                                           200,
                                           50,
                                           30,
                                           hwnd,//父窗口句柄
                                           (HMENU)0,//按钮id
                                           ((LPCREATESTRUCT)lParam)->hInstance,//实例
                                          NULL
                                         );
3.子窗口向父窗口发送消息
WM_COMMAND消息含义
 LOWORD(wParam):子窗口ID
 HIWORD(wParam):通知码
 lParam        :子窗口句柄

4.其它设置
(1)更改按钮文本
SetWindowText(hwnd,newButtonText);

(2)设置按钮是否可见
创建按钮子窗口时,若指定按钮风格有WS_VISIBLE,则CreateWindow后就会产生按钮子窗口;若未指定,则须在CreateWindow后加:
ShowWindow(hwndchild,SW_SHOWNORMAL);//正常显示按钮子窗口
ShowWindow(hwndchild,SW_HIDE);//隐藏子窗口

(3)设置按钮是否可用
EnableWindow(hwndChild,FALSE);//设置按钮不可用
EnableWindow(hwndChild,TRUE);//设置按钮可用

三、静态类
1.静态文本类:static
2.创建静态文本子窗口
hStaticText=CreateWindow("static",
                                               TEXT("文本标签"),
                                               WS_CHILD|WS_VISIBLE|SS_LEFT,
                                               100,
                                               200,
                                               60,
                                               20,
                                               hwnd,
                                               (HMENU)2,
                                               ((LPCREATESTRUCT)lParam)->hInstance,
                                               NULL
                                             );
四、编辑类
1.编辑类:edit
2.创建编辑子窗口
hEdit=CreateWindow(TEXT("edit"),
                                    TEXT("编辑框"),
                                    WS_CHILD|WS_VISIBLE|ES_LEFT,
                                    100,
                                    400,
                                    40,
                                    20,
                                    hwnd,
                                    (HMENU)3,
                                    ((LPCREATESTRUCT)lParam)->hInstance,
                                    NULL
                                   );
3.获取编辑框输入内容:
GetWindowText(hEdit,szbuffer,100);

如:     
GetWindowText(hEdit,szbuffer,100);
MessageBox(NULL,szbuffer,"输入内容",MB_OK|MB_ICONINFORMATION);

五、列表框类
1.列表框类:listbox
2.创建列表框子窗口
hListBox=CreateWindow(TEXT("listbox"),
                                          TEXT("语文"),
                                          WS_CHILD|WS_VISIBLE|LBS_STANDARD,
                                          250,
                                          250,
                                          60,
                                          50,
                                          hwnd,
                                          (HMENU)5,
                                          ((LPCREATESTRUCT)lParam)->hInstance,
                                          NULL

                                         );
3.消息处理
(1)当列表框中的某项被选中时,列表框向父窗口发送WM_COMMAND消息,父窗口可确定选中的是哪一项。消息含义与按钮、编辑框的相同。
LOWORD(wParam)    子窗口ID
HIWORD(wParam)    通知码
lParam()          子窗口句柄

(2)可以通过调用SendMessage给列表框窗口过程函数发送信息来操作列表框内容
4.常见操作:
(1)添加列表项
SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)szString);
其中,szString为列表项名称
如:
GetWindowText(hEdit,szbuffer,100);
SendMessage(hListBox,LB_ADDSTRING,0,(LPARAM)szbuffer);

(2)获得当前选中列表项索引
SendMessage(hListBox,LB_GETCURSEL,0,0);
若当前有列表项被选中,则返回其索引(第一个列表项索引为0!);否则返回LB_ERR(-1).
如:
index=SendMessage(hListBox,LB_GETCURSEL,0,0);

(3)删除某列表项
SendMessage(hListBox,LB_DELETESTRING,index,0);
删除索引为index的列表项.

(4)清空列表
SendMessage(hListBox,LB_RESETCONTENT,0,0);

(5)获得列表框列表项个数
SendMessage(hListBox,LB_GETCOUNT,0,0);

(6)获得指定索引列表项名称
iLength=SendMessage(hListBox,LB_GETTEXT,index,(LPARAM)szBuffer);

原创粉丝点击