windows编程---在窗口上建立控件

windows编程---在窗口上建立控件
2011年05月31日
  [b][b]
  
  [/b]一、概述[b][b][/b]控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册、[b]也不需要写消息处理函数。[b]在主窗口得到WM_CREATE消息时,建立子窗口即可。[b][b]
  
   二、实例[/b]
  //参数:窗口句柄,消息,消息参数,消息参数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) ;}
  [b]
  
   三、关于WM_CREATE消息[/b][b][b]WM_CREATE 的lParam参数将会传入一个建立时信息结构指针(LPCREATESTRUCT)。[b]结构中包含了一些有用信息(窗口建立时的参数)。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;
  [b]
  
   四、控件与父窗口的协作[/b][b][b]1.控件上发生动作时,将向父窗口发送通知消息WM_COMMAND。[b]WM_COMMAND:[b]HIWORD(wParam):通知码(notification code)[b]LOWORD(wParam):控件ID[b](HWND)lParam: 控件句柄除了WM_COMMAND外,每种控件还有可能有其他的通知消息(如WM_DRAWITEM)。
  2.父窗口需要控制控件时,向控件发控件消息。[b]事先应记录下控件句柄,或由ID获取控件句柄
  3.备注:[b]各种控件的通知消码和控制消息可由[b]MSDN-> Platform SDK-> User Interface Services->Windows User Interface->Controls[b]查得。
  [b]
  
   五、控件"类名称"[/b][b][b]1.标准控件[b]BUTTON :按钮[b]COMBOBOX :复合框 [b]EDIT :编辑 [b]LISTBOX :列表 [b]RichEdit :Rich Edit version 1.0[b]RICHEDIT_CLASS :Rich Edit version 2.0[b]SCROLLBAR :滚动条[b]STATIC :静态
  2.外壳附带的公用控件[b]注:建立前需要用InitCommonControlsEx进行初始化
  INITCOMMONCONTROLSEX icex;// Ensure that the common control DLL is loaded. icex.dwSize = sizeof(INITCOMMONCONTROLSEX);icex.dwICC = ICC_LISTVIEW_CLASSES;InitCommonControlsEx(&icex); HWND hWndListView =CreateWindowEx(0,WC_LISTVIEW, //WC_LISTVIEW不需要加引号 TEXT(""), WS_CHILD | WS_VISIBLE|WS_BORDER | LVS_ICON | LVS_EDITLABELS | WS_EX_CLIENTEDGE , 10, 10, 100, 100, hwnd, (HMENU)1000, //控件ID ((LPCREATESTRUCT) lParam)->hInstance, //实例句柄 NULL);}
  ANIMATE_CLASS[b]DATETIMEPICK_CLASS[b]HOTKEY_CLASS[b]MONTHCAL_CLASS [b]PROGRESS_CLASS [b]REBARCLASSNAME [b]STATUSCLASSNAME [b]TOOLBARCLASSNAME [b]TOOLTIPS_CLASS [b]TRACKBAR_CLASS [b]UPDOWN_CLASS [b]WC_COMBOBOXEX [b]WC_HEADER [b]WC_IPADDRESS [b]WC_LISTVIEW [b]WC_PAGESCROLLER [b]WC_TABCONTROL [b]WC_TREEVIEW3.特殊窗口[b]MDIClient :MDI客户区窗口[b]ComboLBox :The class for the list box contained in a combo box. [b]DDEMLEvent :Windows NT/2000: The class for DDEML events. [b]Message :Windows 2000: The class for a message-only window. [b]#32768 :The class for a menu. [b]#32769 :The class for the desktop window. [b]#32770 :The class for a dialog box. [b]#32771 :The class for the task switch window. [b]#32772 :Windows NT/2000: The class for icon titles.
[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值