面向对象与可视化程序设计第七讲.ppt

上传人:wuy****n92 文档编号:86903683 上传时间:2023-04-15 格式:PPT 页数:61 大小:936.50KB
返回 下载 相关 举报
面向对象与可视化程序设计第七讲.ppt_第1页
第1页 / 共61页
面向对象与可视化程序设计第七讲.ppt_第2页
第2页 / 共61页
点击查看更多>>
资源描述

《面向对象与可视化程序设计第七讲.ppt》由会员分享,可在线阅读,更多相关《面向对象与可视化程序设计第七讲.ppt(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、7.1概述概述作为一般窗口,作为一般窗口,控件控件具有通用的窗口属性,并且可以使用具有通用的窗口属性,并且可以使用ShowWindows()ShowWindows()和和MoveWindows()MoveWindows()等窗口管理函数来显示或隐藏控件、改变控件的位置、等窗口管理函数来显示或隐藏控件、改变控件的位置、尺寸以及其它操作。尺寸以及其它操作。控件创控件创建形式建形式对话框中制定控件对话框中制定控件:如按钮控件如按钮控件调用调用CreateWindows()CreateWindows()或或CreateWindowsEx()CreateWindowsEx()函数创建函数创建必须指定控件

2、的窗口类,必须指定控件的窗口类,这种窗口类要在应用程序这种窗口类要在应用程序中定义并注册,但更多的中定义并注册,但更多的是使用系统预定义窗口类是使用系统预定义窗口类控件控件Windows 图形用户界面的主要组成部分之一图形用户界面的主要组成部分之一用户通过操作控件对象完成与应用程序之间的交互用户通过操作控件对象完成与应用程序之间的交互体现了体现了Windows 系统面向对象的特点。系统面向对象的特点。控件以独立控件以独立的的子窗口子窗口或或对话框对话框两种形式存在两种形式存在第第7讲讲 Windows 标准控件准控件1 应用程序窗口可调用函数应用程序窗口可调用函数SendMessageSend

3、Message向特定的子窗口发送消息,向特定的子窗口发送消息,例如用户单击圆按钮时,可调用例如用户单击圆按钮时,可调用SendMessageSendMessage向该圆按钮发送向该圆按钮发送BM_SETCHECKBM_SETCHECK消息,为该按钮设置选中符号,其形式为:消息,为该按钮设置选中符号,其形式为:SendMessage(hwndRadioButton,BM_SETCHECK,1,0)SendMessage(hwndRadioButton,BM_SETCHECK,1,0);使用对话框控件时,可调用使用对话框控件时,可调用SendDlgItemMessage向指定的对话框控件发向指定的

4、对话框控件发送消息,其形式为:送消息,其形式为:SendDlgItemMessage(hdlg,ID,message,SendDlgItemMessage(hdlg,ID,message,wParam,lParamwParam,lParam););应用程序向控件发送的消息的应用程序向控件发送的消息的字参字参数数与与长参数长参数包含该消息的相关信息包含该消息的相关信息其含义取决于具体的控件消息其含义取决于具体的控件消息21EnableWindowEnableWindow函数函数(功能为激活或禁止窗口功能为激活或禁止窗口)BOOL EnableWindow(HWND BOOL EnableWind

5、ow(HWND hwnd,BOOL,BOOL bEnable)激活或激活或禁止标识禁止标识Ture:该窗口可接收输入该窗口可接收输入False:禁止该窗口接收输入禁止该窗口接收输入2MoveWindowMoveWindow函数函数(移动或改变窗口的大小移动或改变窗口的大小)BOOL MoveWindowBOOL MoveWindow(HWND hwndHWND hwnd,int X,int Y,int X,int Y,int nWidth,int nWidth,int nHeightint nHeight,BOOL bReprintBOOL bReprint/表明窗口移动后是否重画表明窗口移动

6、后是否重画)7.2 常用子窗口操作函数常用子窗口操作函数33SetWindowText(设置窗口的标题或文本设置窗口的标题或文本)BOOL SetWindowText(HWND hwnd,LPCTSTR BOOL SetWindowText(HWND hwnd,LPCTSTR lpszStringlpszString)设置的设置的文本内容文本内容4GwtWindowText函数函数(获取指定窗口标题或文本获取指定窗口标题或文本)int GetWindowText(HWND hwnd,LPSTR int GetWindowText(HWND hwnd,LPSTR lpszStringlpszSt

7、ring,int,int nMaxnMax)存放文本字符串的缓冲区存放文本字符串的缓冲区最大可获取的字符串长度最大可获取的字符串长度对于对话框按钮控件对于对话框按钮控件,可调用函数,可调用函数SetDlgItemTextSetDlgItemText和和GetDlgItemTextGetDlgItemText BOOL SetDlgItemText(HWND hdlg,int ID,LPCTSTR BOOL SetDlgItemText(HWND hdlg,int ID,LPCTSTR lpszStringlpszString)Int GetDlgItemText(HWND hdlg,int I

8、D,LPSTR Int GetDlgItemText(HWND hdlg,int ID,LPSTR lpszStringlpszString,int,int nMax nMax)该函数返回从指定的控件获取的文本字节数该函数返回从指定的控件获取的文本字节数。5DestroyWindow函数函数关闭窗口函数关闭窗口函数 BOOL DestroyWindow(HWND hwnd)BOOL DestroyWindow(HWND hwnd)如果关闭父窗如果关闭父窗口,则其中的子口,则其中的子窗口同时被关闭窗口同时被关闭4按钮控件按钮控件普通按钮普通按钮圆按钮圆按钮复选框按钮复选框按钮组框按钮组框按钮在对

9、话框定义中创建控件,其一般形式为:在对话框定义中创建控件,其一般形式为:Control-type Title,ID,X,Y,nWidth,nHeight,Style控件样式控件样式控件的宽度与高度控件的宽度与高度控件类型控件类型控件标题或内容控件标题或内容控件起始坐标控件起始坐标按钮控按钮控件的创件的创建方式建方式创建控件型的子窗口创建控件型的子窗口在对话框中定义控件在对话框中定义控件创建并注册一个窗口类的实例创建并注册一个窗口类的实例创建并显示窗口实例创建并显示窗口实例7.3 按钮控件的分类与创建按钮控件的分类与创建5按钮控件与应用程序之间的消息传递按钮控件与应用程序之间的消息传递1 接收按

10、钮控件消息接收按钮控件消息 当用户与控件交互时,控件向其父窗口发送当用户与控件交互时,控件向其父窗口发送WM_COMMANDWM_COMMAND消息消息消息的消息的wParamwParam参数参数低字节包含控件的标识值(低字节包含控件的标识值(ID)高字节中包含控件向父窗口发出的通知代码高字节中包含控件向父窗口发出的通知代码2 向按钮控件发送消息向按钮控件发送消息调用函数调用函数SendMessageSendMessage向按钮控件发出消息向按钮控件发出消息 SendMessage(hwnd,message,wParam,lParam);SendMessage(hwnd,message,wPa

11、ram,lParam);设置复选框和圆按钮的选中标志时字参数应取设置复选框和圆按钮的选中标志时字参数应取1 SendMessage(hwnd,BM_SETCHECK,1,0);取消选中标志时字参数应取取消选中标志时字参数应取0,其形式为:,其形式为:SendMessage(hwnd,BM_SETCHECK,0,0);SendMessageSendMessage使用使用字参数确定同种字参数确定同种消息中的不同动作消息中的不同动作对话框按钮控件对话框按钮控件,可用可用SendDlgItemMessage完成相同操作完成相同操作向控件子窗口向控件子窗口发出的消息发出的消息67.按钮控按钮控件示例件示

12、例【例【例7-1】创】创建如右上图建如右上图所示的按钮所示的按钮控件系列,控件系列,当单击每一当单击每一个按钮后个按钮后,就就出现如右下出现如右下图所示的响图所示的响应。应。7LRESULT CALLBACK WndProc(.)LRESULT CALLBACK WndProc(.)int X=50,Y=30;/int X=50,Y=30;/控件起始坐标控件起始坐标 switch(message)switch(message)case WM_CREATE:case WM_CREATE:/通过响应通过响应WM_CREATEWM_CREATE消息创建控件子窗口消息创建控件子窗口hwndPush=C

13、reateWindow(lpszClassName1,/hwndPush=CreateWindow(lpszClassName1,/按钮子窗口按钮子窗口 这里是一个按钮,按我吧这里是一个按钮,按我吧!,!,BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,X,Y,X,Y,240,25,240,25,hwnd,hwnd,(HMENU)IDB_PUSHBUTTON,(HMENU)IDB_PUSHBUTTON,hInst,hInst,NULL);NULL);hwndDefPush=CreateWindow(lpsz

14、ClassName1,/hwndDefPush=CreateWindow(lpszClassName1,/缺省按钮子窗口缺省按钮子窗口 这是缺省按钮,按下试试看这是缺省按钮,按下试试看!,!,BS_DEFPUSHBUTTON|WS_CHILD|WS_VISIBLE,BS_DEFPUSHBUTTON|WS_CHILD|WS_VISIBLE,X,Y+30,X,Y+30,240,25,240,25,hwnd,hwnd,(HMENU)IDB_DEFPUSHBUTTON,(HMENU)IDB_DEFPUSHBUTTON,hInst,hInst,NULL);NULL);8/创建自动圆按钮子窗口创建自动圆按

15、钮子窗口hwndAutoRadio=CreateWindow(lpszClassName1,hwndAutoRadio=CreateWindow(lpszClassName1,自动圆形按钮,看看有何区别自动圆形按钮,看看有何区别?,?,BS_AUTORADIOBUTTON|WS_CHILD|WS_VISIBLE,BS_AUTORADIOBUTTON|WS_CHILD|WS_VISIBLE,X,Y+90,X,Y+90,240,25,240,25,hwnd,hwnd,(HMENU)IDB_AUTORADIOBUTTON,(HMENU)IDB_AUTORADIOBUTTON,hInst,hInst,

16、NULL);NULL);hwndRadio=CreateWindow(lpszClassName1,/hwndRadio=CreateWindow(lpszClassName1,/圆按钮控件子窗口圆按钮控件子窗口 圆形按钮,你喜欢吗圆形按钮,你喜欢吗?,?,BS_RADIOBUTTON|WS_CHILD|WS_VISIBLE,BS_RADIOBUTTON|WS_CHILD|WS_VISIBLE,X,Y+60,X,Y+60,240,25,240,25,hwnd,hwnd,(HMENU)IDB_RADIOBUTTON,(HMENU)IDB_RADIOBUTTON,hInst,hInst,NULL)

17、;NULL);9 /创建自动复选框控件子窗口创建自动复选框控件子窗口hwndAutoCheckBox=CreateWindow(lpszClassName1,hwndAutoCheckBox=CreateWindow(lpszClassName1,自动复选框,你会用吗自动复选框,你会用吗?,?,BS_AUTOCHECKBOX|WS_CHILD|WS_VISIBLE,BS_AUTOCHECKBOX|WS_CHILD|WS_VISIBLE,X,Y+150,X,Y+150,240,25,240,25,hwnd,hwnd,(HMENU)IDB_AUTOCHECKBOX,(HMENU)IDB_AUTOC

18、HECKBOX,hInst,hInst,NULL);NULL);/创建复选框控件子窗口创建复选框控件子窗口hwndCheckBox=CreateWindow(lpszClassName1,hwndCheckBox=CreateWindow(lpszClassName1,复选框复选框,BS_CHECKBOX|WS_CHILD|WS_VISIBLE,BS_CHECKBOX|WS_CHILD|WS_VISIBLE,X,Y+120,X,Y+120,240,25,240,25,hwnd,hwnd,(HMENU)IDB_CHECKBOX,(HMENU)IDB_CHECKBOX,hInst,hInst,NU

19、LL);NULL);10/处理控件消息处理控件消息case WM_COMMAND:case WM_COMMAND:switch(LOWORD(wParam)switch(LOWORD(wParam)case IDB_PUSHBUTTON:/case IDB_PUSHBUTTON:/当用户单击按钮时,改变按钮文本当用户单击按钮时,改变按钮文本 SetWindowText(hwndPush,SetWindowText(hwndPush,你已按下了按钮你已按下了按钮!);break;!);break;case IDB_DEFPUSHBUTTON:/case IDB_DEFPUSHBUTTON:/当用

20、户单击按钮时,改变按钮文本当用户单击按钮时,改变按钮文本 SetWindowText(hwndDefPush,SetWindowText(hwndDefPush,按钮已被按下按钮已被按下);break;);break;/创建组框控件子窗口创建组框控件子窗口hwndGroupBox=CreateWindow(lpszClassName1,hwndGroupBox=CreateWindow(lpszClassName1,组框组框,BS_GROUPBOX|WS_CHILD|WS_VISIBLE,BS_GROUPBOX|WS_CHILD|WS_VISIBLE,X+290,Y+30,X+290,Y+30

21、,100,140,100,140,hwnd,hwnd,(HMENU)IDB_GROUPBOX,(HMENU)IDB_GROUPBOX,hInst,hInst,NULL);NULL);break;break;11case IDB_RADIOBUTTON:/case IDB_RADIOBUTTON:/当用户单击圆按钮时,设置按钮为选中状态当用户单击圆按钮时,设置按钮为选中状态 SendMessage(hwndRadio,BM_SETCHECK,1,0);break;SendMessage(hwndRadio,BM_SETCHECK,1,0);break;case IDB_AUTORADIOBUTT

22、ON:case IDB_AUTORADIOBUTTON:break;break;case IDB_CHECKBOX:/case IDB_CHECKBOX:/根据复选框状态设置复选框根据复选框状态设置复选框 if(nCheckBoxSt=0)if(nCheckBoxSt=0)SendMessage(hwndCheckBox,BM_SETCHECK,1,0);nCheckBoxSt=1;SendMessage(hwndCheckBox,BM_SETCHECK,1,0);nCheckBoxSt=1;else/else/如果当前为非选中状态,则设置为选中状态如果当前为非选中状态,则设置为选中状态 Se

23、ndMessage(hwndCheckBox,BM_SETCHECK,0,0);nCheckBoxSt=0;SendMessage(hwndCheckBox,BM_SETCHECK,0,0);nCheckBoxSt=0;break;break;case IDB_AUTOCHECKBOX:break;case IDB_AUTOCHECKBOX:break;case IDB_GROUPBOX:case IDB_GROUPBOX:break;break;break;break;case WM_DESTROY:PostQuitMessage(0);break;case WM_DESTROY:PostQ

24、uitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam,lParam);default:return DefWindowProc(hwnd,message,wParam,lParam);return 0;return 0;12 本程序运行时将在主窗口用户区的中央显示一个普通按钮,上面本程序运行时将在主窗口用户区的中央显示一个普通按钮,上面写有写有“启动一个对话框启动一个对话框”,按下按钮弹出一个对话框,按下按钮弹出一个对话框,对话框含有三个对话框含有三个成组框,其中分别是圆按钮、自动圆按钮和复选框,此外,还有一个

25、成组框,其中分别是圆按钮、自动圆按钮和复选框,此外,还有一个普通按钮和一个缺省按钮。普通按钮和一个缺省按钮。13LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)RECT rect;RECT rect;switch(message)switch(message)case WM_CREATE:case WM_CREATE:/通过响应通过响应WM_

26、CREATEWM_CREATE消息创建控件子窗口消息创建控件子窗口 GetClientRect(hwnd,&rect);/GetClientRect(hwnd,&rect);/创建按钮子窗口创建按钮子窗口 hwndPush=CreateWindow(BUTTON,hwndPush=CreateWindow(BUTTON,启动一个对话框启动一个对话框,BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,(rect.right-rect.left)/2-60,(rect.right-rect.left)/2-60,

27、(rect.bottom-rect.top)/2-15,(rect.bottom-rect.top)/2-15,120,30,hwnd,(HMENU)IDB_PUSHBUTTON,hInst,NULL);120,30,hwnd,(HMENU)IDB_PUSHBUTTON,hInst,NULL);break;break;case WM_COMMAND:case WM_COMMAND:/处理控件消息处理控件消息 if(LOWORD(wParam)=IDB_PUSHBUTTON)if(LOWORD(wParam)=IDB_PUSHBUTTON)DialogBox(hInst,Button,hwnd,

28、DialogProc);DialogBox(hInst,Button,hwnd,DialogProc);EnableWindow(hwndPush,FALSE);EnableWindow(hwndPush,FALSE);SetWindowText(hwndPush,SetWindowText(hwndPush,不能再使用不能再使用););break;break;case WM_DESTROY:case WM_DESTROY:PostQuitMessage(0);break;PostQuitMessage(0);break;default:return DefWindowProc(hwnd,me

29、ssage,wParam,lParam);default:return DefWindowProc(hwnd,message,wParam,lParam);return 0;return 0;14BOOL CALLBACK DialogProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam)BOOL CALLBACK DialogProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam)switch(message)switch(message)case WM_COMMAND:case

30、 WM_COMMAND:switch(LOWORD(wParam)switch(LOWORD(wParam)case IDOK:case IDOK:EndDialog(hdlg,0);return 1;EndDialog(hdlg,0);return 1;case IDCANCEL:EndDialog(hdlg,0);return 1;case IDCANCEL:EndDialog(hdlg,0);return 1;case IDC_RADIO1:case IDC_RADIO1:if(HIWORD(wParam)=BN_CLICKED)if(HIWORD(wParam)=BN_CLICKED)

31、SendDlgItemMessage(hdlg,IDC_RADIO1,BM_SETCHECK,1,0);SendDlgItemMessage(hdlg,IDC_RADIO1,BM_SETCHECK,1,0);SendDlgItemMessage(hdlg,IDC_RADIO2,BM_SETCHECK,0,0);SendDlgItemMessage(hdlg,IDC_RADIO2,BM_SETCHECK,0,0);return 1;return 1;break;break;case IDC_RADIO2:case IDC_RADIO2:if(HIWORD(wParam)=BN_CLICKED)i

32、f(HIWORD(wParam)=BN_CLICKED)SendDlgItemMessage(hdlg,IDC_RADIO1,BM_SETCHECK,0,0);SendDlgItemMessage(hdlg,IDC_RADIO1,BM_SETCHECK,0,0);SendDlgItemMessage(hdlg,IDC_RADIO2,BM_SETCHECK,1,0);SendDlgItemMessage(hdlg,IDC_RADIO2,BM_SETCHECK,1,0);return 1;return 1;break;break;break;break;case WM_CLOSE:case WM_

33、CLOSE:EndDialog(hdlg,0);EndDialog(hdlg,0);return 1;return 1;return 0;return 0;157.4.1 滚动条控件的功能特点与分类滚动条控件的功能特点与分类 滚动条控件滚动条控件最直接的功能是当应用程序显示的内容超最直接的功能是当应用程序显示的内容超过窗口的范围时,用户可通过拖动滚动条遍历整个窗口内过窗口的范围时,用户可通过拖动滚动条遍历整个窗口内容。滚动条在功能上分为容。滚动条在功能上分为垂直与水平滚动条垂直与水平滚动条,分别实现窗,分别实现窗口内容纵向和横向的滚动。口内容纵向和横向的滚动。7.4 滚动条控件滚动条控件168

34、.4.2 滚动条控件的创建滚动条控件的创建三种三种方法方法创建窗口滚动条创建窗口滚动条创建滚动条子窗口控件创建滚动条子窗口控件创建对话框中的滚动条控件创建对话框中的滚动条控件SB_BOTTOM到滚动条最底端或最右端到滚动条最底端或最右端SB_RIGHT滚动到右边滚动到右边SB_LEFT滚动到左边滚动到左边SB_PAGEUP向上滚动一页向上滚动一页SB_PAGEDOWN 向下滚动一页向下滚动一页样式为样式为WS_VSCROLL和和WS_HSCROLL的窗口的创建的窗口的创建hwnd=CreateWindowhwnd=CreateWindow(lpszClassNalpszClassName,lp

35、szTitle,me,lpszTitle,WS_OVERLAPPEDWINDOW|WS_OVERLAPPEDWINDOW|WS_VSCROLLWS_VSCROLL|WS_HSCROLLWS_HSCROLL,.hInstance,hInstance,NULL);NULL);调用调用CreateWindow创建子窗口滚动条控件创建子窗口滚动条控件CreateWindow(“SCROLLBAR”,/CreateWindow(“SCROLLBAR”,/预定义窗口类名预定义窗口类名 lpszScrollTitle,/lpszScrollTitle,/滚动条标题,常为滚动条标题,常为NULLNULL WS

36、_CHILDWS_CHILD|WS_VISIBLE|WS_VISIBLE,/滚动条样式滚动条样式 X,Y,X,Y,/滚动条起始坐标滚动条起始坐标 nWidth,nHeight,/nWidth,nHeight,/滚动框宽度与高度滚动框宽度与高度 hwndParant,hwndParant,/拥有该滚动条的窗口句柄拥有该滚动条的窗口句柄 ID,ID,/滚动条标识滚动条标识 hInstance,hInstance,/应用程序当前实例句柄应用程序当前实例句柄 NULL NULL 滚动条样式除窗口类样式外,滚动条样式除窗口类样式外,常用的还有常用的还有SBS_VERT和和SBS_HORZ滚动条在对话框的

37、定义中完成创建操作滚动条在对话框的定义中完成创建操作SCROLLBARSCROLLBAR ID ID,X,Y,nWidth,nHeight,styleX,Y,nWidth,nHeight,style178.4.3 常用滚动条操作函数常用滚动条操作函数SetScrollRange:设置滚动条的滚动范围:设置滚动条的滚动范围 int SetScrollRange int SetScrollRange(HWND hwndHWND hwnd,int nBarint nBar,/滚动条特性标识滚动条特性标识 int nMaxPosint nMaxPos,/滚动条最大滚动位置滚动条最大滚动位置 int n

38、MinPos int nMinPos,/滚动条最小滚动位置滚动条最小滚动位置 BOOL bRedraw)BOOL bRedraw)/当滚动条改变时是否重绘;非当滚动条改变时是否重绘;非0 0表示重绘表示重绘 SB_CTL 为控件滚动条为控件滚动条 SB_HORZ 为窗口水平滚动条为窗口水平滚动条 SB_VERT 为窗口垂直滚动条为窗口垂直滚动条SetScrollPos:设置滚动块的位置:设置滚动块的位置int SetScrollPosint SetScrollPos(HWND hwndHWND hwnd,int nBar int nBar,/滚动条的特性标识,同滚动条的特性标识,同SetScr

39、ollRangeSetScrollRange函数函数 int nPos int nPos,/滚动块的位置滚动块的位置 BOOL bRedraw BOOL bRedraw/意义同意义同SetScrollRangeSetScrollRange函数函数)18GetSystemMetrics:获取系统提供的滚动条尺寸:获取系统提供的滚动条尺寸如:如:获取系统水平滚动条的高度获取系统水平滚动条的高度:GetSystemMetrics(SM_CYHSCROLL););GetScrollpos:获取滚动块的位置:获取滚动块的位置int GetScrollPosint GetScrollPos(HWND hw

40、nd,HWND hwnd,/窗口句柄,同窗口句柄,同SetScrollRangeSetScrollRange函数函数 int nBarint nBar/滚动条特性标识滚动条特性标识);GetScrollRange:获取滚动条的滚动范围:获取滚动条的滚动范围BOOL GetScrollRange BOOL GetScrollRange(HWND hwnd,HWND hwnd,int nBar,int nBar,LPINT lpMinPos,LPINT lpMinPos,/接收最小位置的整形变量的地址接收最小位置的整形变量的地址LPINT lpMaxPos)LPINT lpMaxPos)/接收最大

41、位置的整形变量的地址接收最大位置的整形变量的地址197.4.4 滚动控件示例滚动控件示例【例【例8-2】本例要求创建一个带滚动条的颜色框,在颜色框中,通过拉动】本例要求创建一个带滚动条的颜色框,在颜色框中,通过拉动滚动条,使其显示的区域产生变化,同时,可以通过颜色的设置,来改滚动条,使其显示的区域产生变化,同时,可以通过颜色的设置,来改变颜色框的颜色变颜色框的颜色20LRESULT APIENTRY MainWndProc(.)LRESULT APIENTRY MainWndProc(.)HDC hDC;HDC hDC;HBRUSH hBrush;HBRUSH hBrush;static HW

42、ND hWndScrollBar;static SCROLLINFO stScrollInfo;static HWND hWndScrollBar;static SCROLLINFO stScrollInfo;static int nRectWidth;static int nRectWidth;switch(message)switch(message)casecase WM_CREATE:WM_CREATE:hWndScrollBar=CreateWindowEx(0L,SCROLLBAR,(LPSTR)NULL,hWndScrollBar=CreateWindowEx(0L,SCROLL

43、BAR,(LPSTR)NULL,WS_CHILD|SBS_VERT,WS_CHILD|SBS_VERT,10,30-GetSystemMetrics(SM_CYVSCROLL),10,30-GetSystemMetrics(SM_CYVSCROLL),19,100+2*GetSystemMetrics(SM_CYVSCROLL),19,100+2*GetSystemMetrics(SM_CYVSCROLL),hWnd,(HMENU)NULL,hInst,(LPVOID)NULL);hWnd,(HMENU)NULL,hInst,(LPVOID)NULL);stScrollInfo.cbSize

44、=sizeof(SCROLLINFO);stScrollInfo.cbSize =sizeof(SCROLLINFO);stScrollInfo.fMask =stScrollInfo.fMask =SIF_POSSIF_POS|SIF_RANGESIF_RANGE|SIF_PAGESIF_PAGE;stScrollInfo.nMin =1;stScrollInfo.nMin =1;stScrollInfo.nMax =100stScrollInfo.nMax =100;stScrollInfo.nPos =1;stScrollInfo.nPos =1;stScrollInfo.nPage =

45、10;stScrollInfo.nPage =10;/设置滚动条控件的各方面的特性参数。设置滚动条控件的各方面的特性参数。SetScrollInfo(hWndScrollBar,SetScrollInfo(hWndScrollBar,SB_CTLSB_CTL,&stScrollInfo,FALSE);,&stScrollInfo,FALSE);ShowWindow(hWndScrollBar,TRUE);ShowWindow(hWndScrollBar,TRUE);nRectWidth=100;nRectWidth=100;break;break;制作垂直制作垂直滚动条滚动条滚动条结构设置为滚

46、动条控件211.case1.case WM_VSCROLL:WM_VSCROLL:2.if(HWND)lParam!=hWndScrollBar)break;2.if(HWND)lParam!=hWndScrollBar)break;3.switch(LOWORD(wParam)3.switch(LOWORD(wParam)4.4.case SB_LINEUP:case SB_LINEUP:nRectWidth+=1;nRectWidth+=1;break;break;5.5.case SB_LINEDOWN:case SB_LINEDOWN:nRectWidth-=1;nRectWidth-

47、=1;break;break;6.6.case SB_PAGEUP:case SB_PAGEUP:nRectWidth+=10;nRectWidth+=10;break;break;7.7.case SB_PAGEDOWN:case SB_PAGEDOWN:nRectWidth-=10;nRectWidth-=10;break;break;8.case SB_THUMBPOSITION:nRectWidth=101-HIWORD(wParam);break;8.case SB_THUMBPOSITION:nRectWidth=101-HIWORD(wParam);break;9.default

48、:return(DefWindowProc(hWnd,message,wParam,lParam);9.default:return(DefWindowProc(hWnd,message,wParam,lParam);10.10.if(nRectWidth1)if(nRectWidth100)11.else if(nRectWidth100)nRectWidth=100;nRectWidth=100;12.12.stScrollInfo.fMask=SIF_POS;stScrollInfo.fMask=SIF_POS;13.13.stScrollInfo.nPos=101-nRectWidth

49、;stScrollInfo.nPos=101-nRectWidth;14.14.SetScrollInfo(hWndScrollBar,SB_CTL,&stScrollInfo,TRUE);SetScrollInfo(hWndScrollBar,SB_CTL,&stScrollInfo,TRUE);15.15.SendMessage(hWndMain,WM_COMMAND,IDM_DRAW,0L);SendMessage(hWndMain,WM_COMMAND,IDM_DRAW,0L);16.16.break;break;221.case1.case WM_COMMAND:WM_COMMAND

50、:2.2.switchswitch(LOWORD(wParam)(LOWORD(wParam)3.3.casecase IDM_RGB:IDM_RGB:4.DialogBox(hInst,RGBDlg,hWnd,(DLGPROC)RGBDlgProc);break;4.DialogBox(hInst,RGBDlg,hWnd,(DLGPROC)RGBDlgProc);break;5.case5.case IDM_DRAW:IDM_DRAW:6.hDC=GetDC(hWnd);6.hDC=GetDC(hWnd);7.7.hBrush=CreateSolidBrush(RGB(255,255,255

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁