1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,子窗口控制,分类,标准控件,由具有,WS_CHILD,风格的普通窗口创建,通用控件(,Comman,Controls),Date and Time Picker、Flat Scroll、IP Address、,Listview,、,Treeview,、ToolTip、Month Calendar,自定义子控件,由具有,WS_CHILD,风格的普通窗口创建,按钮,CreateWindow,(Ex),窗口类“,button”,风格,BS_CHECKBOX、BS_DEFPUSHBUTTON、BS_GROUPBOX
2、BS_PUSHBUTTON、BS_RADIOBUTTON、BS_AUTOCHECKBOX、BS_3STATE,位置、大小,父窗口句柄,子窗口,ID,获取子窗口标识,ID,int GetDlgCtrlID,(HWND,hwndCtl,);,HANDLE,HWND,GetDlgItem,(HWND,hDlg,int,nIDDlgItem,);,父窗口,id,消息传递,当子窗口状态改变时,子窗口处理鼠标和键盘消息(有自己的消息回路,),,并通知父窗口,父窗口也可以向子窗口发送控制消息,子窗口,父窗口,WM_COMMAND,LOWORD(,wParam,)HIWORD(,wParam,),lPara
3、m,子窗口,ID,通知码 子窗口句,柄,通知码,BN_CLICKED、BN_PAINT、BN_DISABLE、BN_PUSHED、BN_UNPUSHED、BN_DBLCLK、BN_SETFOCUS、BN_KILLFOCUS、,WM_CTLCOLORBTN,父窗口,子窗口,SendMessage,BM_GETCHECK、BM_SETCHECK、BM_GETSTATE、BM_SETSTATE、BM_SETSTYLE、BM_CLICK、BM_GETIMAGE、BM_SETIMAGE,按钮样式,实例,源码,所有者绘制按钮,所有者绘制:由父窗口进行绘制,可以全面控制子窗口的外观,而不受键盘和鼠标的影响,
4、创建时指定,BS_OWNERDRAW,风格,向父窗口发送消息,WM_CTLCOLORBTN,设置文本和背景色、返回画刷句柄,WM_DRAWITEM,按钮被创建、按下或释放、得到或失去焦点、需要重新着色时,所有者绘制按钮,实例,源码,彩色按钮,实例,源码,静态类控件,不接收鼠标和键盘输入,不向父窗口发送,WM_COMMAND,消息,只捕获,WM_NCHITTEST,消息,并向下(父窗口)传递,HTTRANSPARENT,值,绘制,WM_CTLCOLORSTATIC,滚动条控件,创建,指定窗口类为“,scrollbar,”,消息传递,子窗口,父窗口,WM_VSCROLL、WM_HSCROLL,父窗
5、口,子窗口,SetScrollRange,()、,SetScrollPos,()、,SetScrollInfo,(),绘制,WM_CTLCOLORSCROLLBAR,窗口子类化,子窗口控件的窗口过程是,Windows,内部的,将,GWL_WNDPROC,作为参数调用,SetWindowLong,,,可以为其设置一个新的窗口过程,这个技术叫窗口子类化,窗口超类化,根据已有的标准控件的窗口类信息(,GetClassInfo,),,,进行修改,包括类名、窗口过程地址、实例句柄,保留其它部分不变,然后重新注册一个窗口类,并用于创建后续的子窗口,子类化和超类化的主要区别,子类化,超类化,只有少数窗口需要
6、修,改时才使用此一技术,需要改变同类别的多个,窗口行为时,使用之,不需注册新类别,必须注册新的窗口类别,在,subclassing,之前必须先产生窗口,superclassing,之前不需先产生窗口,Subclassed,窗口无法拦截窗口初始化消息(,WM_NCCREATE,和,WM_CREATE),Superclassed,窗口可以拦截窗口初始化消息,(WM_NCCREATE,和,WM_CREATE),Color1,实例,源码,Color1,超类化实现,实例,源码,编辑框,文本对齐方式,文本对齐方式,ES_LEFT、ES_RIGHT、ES_CENTER,多行,ES_MULTILINE,滚动,
7、ES_AUTOHSCROLL、ES_AUTOVSCROLL,绘制,WM_CTLCOLOREDIT,子窗口,父窗口,WM_COMMAND,LOWORD(,wParam,)HIWORD(,wParam,),lParam,子窗口,ID,通知码 子窗口句柄,通知码,EN_SETFOCUS、EN_KILLFOUCUS、EN_CHANGE、EN_UPDATE、EN_ERRSPACE、EN_MAXTEXXT、EN_HSCROLL、EN_VSCROLL,父窗口,子窗口,SendMessage,WM_CUT、WM_COPY、WM_PASTE、WM_CLEAR、EM_GETSEL、EM_SETSEL、EM_GET
8、LINECOUNT、EM_REPLACESEL、EM_LINEINDEX、EM_GETLINE,PopPad1,实例,源码,列表框,风格,LBS_NOTIFY、LBS_SORT、LBS_MULTILINESEL、LBS_HASSTRINGS,、LBS_EXTENDEDSEL、,LB,S_MULTICOLUMN、LBS_NOREDRAW、LBS_STANDARD,绘制,WM_CTLCOLORLISTBOX,WM_COMMAND,WM_COMMAND,LOWORD(,wParam,)HIWORD(,wParam,),lParam,子窗口,ID,通知码 子窗口句柄,通知码,LBN_DBLCLK、LB
9、N_ERRSPACE、LBN_KILLFOCUS、LBN_SELCANCEL、LBN_SELCHANGE、LBN_SETFOCUS,父窗口,子窗口,SendMessage,LB_ADDSTRING、LB_DELETESTRING、LB_FINDSTRING、LB_GETCOUNT、LB_GETCURSEL、LB_GETSEL、LB_GETSELCOUNT、LB_GETSELITEMS、LB_GETTEXT、LB_GETTEXTLEN、LB_SETCOUNT、LB_SETCURSEL、LB_SETSEL、LB_DIR、WM_CHARTOITEM、WM_DELETEITEM,ENVIRON,例子,实例,源码,