欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    第8章Windows标准控件.ppt

    • 资源ID:2275259       资源大小:1.05MB        全文页数:61页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第8章Windows标准控件.ppt

    第8章 Windows 标准控件,作为一般窗口,控件具有通用的窗口属性,并且可以使用ShowWindows()和MoveWindows()等窗口管理函数来显示或隐藏控件、改变控件的位置、尺寸以及其它操作。,控件创建形式,对话框中制定控件:如按钮控件,调用CreateWindows()或CreateWindowsEx()函数创建,必须指定控件的窗口类,这种窗口类要在应用程序中定义并注册,但更多的是使用系统预定义窗口类,控件,Windows 图形用户界面的主要组成部分之一用户通过操作控件对象完成与应用程序之间的交互体现了Windows 系统面向对象的特点,控件以独立的子窗口或对话框两种形式存在,8.1概述,应用程序窗口可调用函数SendMessage向特定的子窗口发送消息,例如用户单击圆按钮时,可调用SendMessage向该圆按钮发送BM_SETCHECK消息,为该按钮设置选中符号,其形式为:SendMessage(hwndRadioButton,BM_SETCHECK,1,0);使用对话框控件时,可调用SendDlgItemMessage向指定的对话框控件发送消息,其形式为:SendDlgItemMessage(hdlg,ID,message,wParam,lParam);,应用程序向控件发送的消息的字参数与长参数包含该消息的相关信息其含义取决于具体的控件消息,8.2 常用子窗口操作函数,按钮控件,普通按钮,圆按钮,复选框按钮,组框按钮,按钮控件的创建方式,创建控件型的子窗口,在对话框中定义控件,创建并注册一个窗口类的实例,创建并显示窗口实例,8.3 按钮控件的分类与创建,按钮控件与应用程序之间的消息传递,1 接收按钮控件消息,当用户与控件交互时,控件向其父窗口发送WM_COMMAND消息。,消息的wParam参数,低字节包含控件的标识值(ID),高字节中包含控件向父窗口发出的通知代码,3.按钮控件示例,【例8-1】创建如右上图所示的按钮控件系列,当单击每一个按钮后,就出现如右下图所示的响应。,LRESULT CALLBACK WndProc(.)int X=50,Y=30;/控件起始坐标 switch(message)case WM_CREATE:/通过响应WM_CREATE消息创建控件子窗口hwndPush=CreateWindow(lpszClassName1,/按钮子窗口 这里是一个按钮,按我吧!,BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,X,Y,240,25,hwnd,(HMENU)IDB_PUSHBUTTON,hInst,NULL);hwndDefPush=CreateWindow(lpszClassName1,/默认按钮子窗口 这是缺省按钮,按下试试看!,BS_DEFPUSHBUTTON|WS_CHILD|WS_VISIBLE,X,Y+30,240,25,hwnd,(HMENU)IDB_DEFPUSHBUTTON,hInst,NULL);,/创建自动圆按钮子窗口hwndAutoRadio=CreateWindow(lpszClassName1,自动圆形按钮,看看有何区别?,BS_AUTORADIOBUTTON|WS_CHILD|WS_VISIBLE,X,Y+90,240,25,hwnd,(HMENU)IDB_AUTORADIOBUTTON,hInst,NULL);,hwndRadio=CreateWindow(lpszClassName1,/圆按钮控件子窗口 圆形按钮,你喜欢吗?,BS_RADIOBUTTON|WS_CHILD|WS_VISIBLE,X,Y+60,240,25,hwnd,(HMENU)IDB_RADIOBUTTON,hInst,NULL);,/创建自动复选框控件子窗口hwndAutoCheckBox=CreateWindow(lpszClassName1,自动复选框,你会用吗?,BS_AUTOCHECKBOX|WS_CHILD|WS_VISIBLE,X,Y+150,240,25,hwnd,(HMENU)IDB_AUTOCHECKBOX,hInst,NULL);,/创建复选框控件子窗口hwndCheckBox=CreateWindow(lpszClassName1,复选框,BS_CHECKBOX|WS_CHILD|WS_VISIBLE,X,Y+120,240,25,hwnd,(HMENU)IDB_CHECKBOX,hInst,NULL);,/处理控件消息case WM_COMMAND:switch(LOWORD(wParam)case IDB_PUSHBUTTON:/当用户单击按钮时,改变按钮文本 SetWindowText(hwndPush,你已按下了按钮!);break;case IDB_DEFPUSHBUTTON:/当用户单击按钮时,改变按钮文本 SetWindowText(hwndDefPush,按钮已被按下);break;,/创建组框控件子窗口hwndGroupBox=CreateWindow(lpszClassName1,组框,BS_GROUPBOX|WS_CHILD|WS_VISIBLE,X+290,Y+30,100,140,hwnd,(HMENU)IDB_GROUPBOX,hInst,NULL);break;,case IDB_RADIOBUTTON:/当用户单击圆按钮时,设置按钮为选中状态 SendMessage(hwndRadio,BM_SETCHECK,1,0);break;case IDB_AUTORADIOBUTTON:break;case IDB_CHECKBOX:/根据复选框状态设置复选框 if(nCheckBoxSt=0)SendMessage(hwndCheckBox,BM_SETCHECK,1,0);nCheckBoxSt=1;else/如果当前为非选中状态,则设置为选中状态 SendMessage(hwndCheckBox,BM_SETCHECK,0,0);nCheckBoxSt=0;break;case IDB_AUTOCHECKBOX:break;case IDB_GROUPBOX:break;break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam,lParam);return 0;,本程序运行时将在主窗口用户区的中央显示一个普通按钮,上面写有“启动一个对话框”,按下按钮弹出一个对话框,对话框含有三个成组框,其中分别是圆按钮、自动圆按钮和复选框,此外,还有一个普通按钮和一个默认按钮。,LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)RECT rect;switch(message)case WM_CREATE:/通过响应WM_CREATE消息创建控件子窗口 GetClientRect(hwnd,BOOL CALLBACK DialogProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam)switch(message)case WM_COMMAND:switch(LOWORD(wParam)case IDOK:EndDialog(hdlg,0);return 1;case IDCANCEL:EndDialog(hdlg,0);return 1;case IDC_RADIO1:if(HIWORD(wParam)=BN_CLICKED)SendDlgItemMessage(hdlg,IDC_RADIO1,BM_SETCHECK,1,0);SendDlgItemMessage(hdlg,IDC_RADIO2,BM_SETCHECK,0,0);return 1;break;case IDC_RADIO2:if(HIWORD(wParam)=BN_CLICKED)SendDlgItemMessage(hdlg,IDC_RADIO1,BM_SETCHECK,0,0);SendDlgItemMessage(hdlg,IDC_RADIO2,BM_SETCHECK,1,0);return 1;break;break;case WM_CLOSE:EndDialog(hdlg,0);return 1;return 0;,滚动条控件最直接的功能是当应用程序显示的内容超过窗口的范围时,用户可通过拖动滚动条遍历整个窗口内容。滚动条在功能上分为垂直与水平滚动条,分别实现窗口内容纵向和横向的滚动。,8.4 滚动条控件8.4.1 滚动条控件的功能特点与分类,三种方法,创建窗口滚动条,创建滚动条子窗口控件,创建对话框中的滚动条控件,SB_BOTTOM到滚动条最底端或最左端SB_RIGHT滚动到右边SB_LEFT滚动到左边SB_PAGEUP向上滚动一页SB_PAGEDOWN 向下滚动一页,8.4.2 滚动条控件的创建,SetScrollRange:设置滚动条的滚动范围,int SetScrollRange(HWND hwnd,int nBar,/滚动条特性标识 int nMaxPos,/滚动条最大滚动位置 int nMinPos,/滚动条最小滚动位置 BOOL bRedraw)/当滚动条改变时是否重绘;非0表示重绘,SB_CTL 为控件滚动条 SB_HORZ 为窗口水平滚动条 SB_VERT 为窗口垂直滚动条,SetScrollPos:设置滚动块的位置,int SetScrollPos(HWND hwnd,int nBar,/滚动条的特性标识,同SetScrollRange函数 int nPos,/滚动块的位置 BOOL bRedraw/意义同SetScrollRange函数),8.4.3 常用滚动条操作函数,GetSystemMetrics:获取系统提供的滚动条尺寸,如:获取系统水平滚动条的高度:GetSystemMetrics(SM_CYHSCROLL);,GetScrollpos:获取滚动块的位置,int GetScrollPos(HWND hwnd,/窗口句柄,同SetScrollRange函数 int nBar/滚动条特性标识);,GetScrollRange:获取滚动条的滚动范围,BOOL GetScrollRange(HWND hwnd,int nBar,LPINT lpMinPos,/接收最小位置的整形变量的地址LPINT lpMaxPos)/接收最大位置的整形变量的地址,【例8-2】本例要求创建一个带滚动条的颜色框,在颜色框中,通过拉动滚动条,使其显示的区域产生变化,同时,可以通过颜色的设置,来改变颜色框的颜色。,8.4.4 滚动控件示例,LRESULT APIENTRY MainWndProc(.)HDC hDC;HBRUSH hBrush;static HWND hWndScrollBar;static SCROLLINFO stScrollInfo;static int nRectWidth;switch(message)case WM_CREATE:hWndScrollBar=CreateWindowEx(0L,SCROLLBAR,(LPSTR)NULL,WS_CHILD|SBS_VERT,10,30-GetSystemMetrics(SM_CYVSCROLL),19,100+2*GetSystemMetrics(SM_CYVSCROLL),hWnd,(HMENU)NULL,hInst,(LPVOID)NULL);stScrollInfo.cbSize=sizeof(SCROLLINFO);stScrollInfo.fMask=SIF_POS|SIF_RANGE|SIF_PAGE;stScrollInfo.nMin=1;stScrollInfo.nMax=100;stScrollInfo.nPos=1;stScrollInfo.nPage=10;/设置滚动条控件的各方面的特性参数SetScrollInfo(hWndScrollBar,SB_CTL,制作垂直滚动条,滚动条结构,设置为滚动条控件,1.case WM_VSCROLL:2.if(HWND)lParam!=hWndScrollBar)break;3.switch(LOWORD(wParam)4.case SB_LINEUP:nRectWidth+=1;break;5.case SB_LINEDOWN:nRectWidth-=1;break;6.case SB_PAGEUP:nRectWidth+=10;break;7.case SB_PAGEDOWN:nRectWidth-=10;break;8.case SB_THUMBPOSITION:nRectWidth=101-HIWORD(wParam);break;9.default:return(DefWindowProc(hWnd,message,wParam,lParam);10.if(nRectWidth100)nRectWidth=100;12.stScrollInfo.fMask=SIF_POS;13.stScrollInfo.nPos=101-nRectWidth;14.SetScrollInfo(hWndScrollBar,SB_CTL,1.case WM_COMMAND:2.switch(LOWORD(wParam)3.case IDM_RGB:4.DialogBox(hInst,RGBDlg,hWnd,(DLGPROC)RGBDlgProc);break;5.case IDM_DRAW:6.hDC=GetDC(hWnd);7.hBrush=CreateSolidBrush(RGB(255,255,255);8.SelectObject(hDC,hBrush);9.Rectangle(hDC,30,30,130,130);10.hBrush=CreateSolidBrush(RGB(crRGB0,crRGB1,crRGB2);11.SelectObject(hDC,hBrush);12.Rectangle(hDC,30,130-nRectWidth,30+nRectWidth,130);13.ReleaseDC(hWnd,hDC);14.break;15.case IDM_EXIT:16.PostQuitMessage(0);break;17.case IDM_ABOUT:18.DialogBox(hInst,AboutBox,hWnd,(DLGPROC)About);break;19.default:20.return(DefWindowProc(hWnd,message,wParam,lParam);21.22.break;23.case WM_DESTROY:PostQuitMessage(0);break;24.default:return(DefWindowProc(hWnd,message,wParam,lParam);25.26.return(0);27.,1.BOOL APIENTRY RGBDlgProc(.)2.3.static int CurrentVal3,PrevVal3;4.static HWND hwScroll3;5.char szString10;6.int i;7.switch(message)8.9.case WM_INITDIALOG:/分别设置滚动条的范围和初始位置。10.for(i=0;i3;i+)11.12.CurrentVali=crRGBi;13.PrevVali=crRGBi;14.hwScrolli=GetDlgItem(hDlg,IDC_RED+i);15.SetScrollRange(hwScrolli,SB_CTL,0,255,FALSE);16.SetScrollPos(hwScrolli,SB_CTL,CurrentVali,TRUE);17.SetDlgItemText(hDlg,IDC_VALRED+i,itoa(CurrentVali,szString,10);18.19.SetFocus(hwScroll0);20.break;,1./处理滚动条通知消息2.case WM_HSCROLL:3.i=0;4.while(hwScrolli!=(HWND)lParam)i+;5.switch(LOWORD(wParam)6.case SB_LINEDOWN:7.CurrentVali+;8.if(CurrentVali255)CurrentVali=255;9.break;10.case SB_LINEUP:11.CurrentVali-;12.if(CurrentVali0)CurrentVali=0;13.break;case SB_PAGEDOWN:CurrentVali+=(255-CurrentVali)/2;15.break;16.case SB_PAGEUP:CurrentVali-=CurrentVali/2;break;17.case SB_THUMBTRACK:CurrentVali=HIWORD(wParam);break;18.case SB_TOP:CurrentVali=0;break;19.case SB_BOTTOM:CurrentVali=255;break;,/设定滚动条的位置及其对应的文字1.SetScrollPos(hwScrolli,SB_CTL,CurrentVali,TRUE);2.SetDlgItemText(hDlg,IDC_VALRED+i,itoa(CurrentVali,szString,10);3.crRGBi=CurrentVali;4.SendMessage(hWndMain,WM_COMMAND,IDM_DRAW,0L);5.break;6.case WM_COMMAND:7.switch(wParam)8.case IDOK:9.for(i=0;i3;i+)10.crRGBi=CurrentVali;11.EndDialog(hDlg,TRUE);return(TRUE);12.case IDCANCEL:13.for(i=0;i3;i+)14.crRGBi=CurrentVali;15.EndDialog(hDlg,TRUE);return(TRUE);16.17.break;18.19.return(FALSE);20.,BOOL APIENTRY About(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)switch(message)case WM_INITDIALOG:return(TRUE);case WM_COMMAND:if(LOWORD(wParam)=IDOK|LOWORD(wParam)=IDCANCEL)EndDialog(hDlg,TRUE);return(TRUE);break;return(FALSE);,【例】创建一个水平滚动条控件,用这个控件来控制字体的大小,字体大小由50到100线性变化;同时创建一个垂直滚动条,用此滚动条来控制字体的颜色,颜色由RGB(0,0,255)到RGB(0,0,0)线性变化。,long WINAPI WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)HDC hDC;/定义设备环境句柄HFONT hF;/定义字体句柄PAINTSTRUCT ps;/定义包含绘图信息的结构体static HWND hWndScrollBarHor,hWndScrollBarVer;/定义水平和竖直滚动条的句柄static SCROLLINFO stScrollInfo;/定义包含滚动条信息的结构体static int iHorPos=1,iVerPos=100;/定义滚动条位置char cOut=祝您成功.;/输出字符串RECT rcRedrawArea=0,0,380,200;/定义刷新区域,switch(iMessage)case WM_CREATE:/窗口创建消息hWndScrollBarVer=CreateWindowEx(0L,/创建竖直滚动条SCROLLBAR,(LPSTR)NULL,WS_CHILD|SBS_VERT,/样式400,30-GetSystemMetrics(SM_CYVSCROLL),/左上角坐标GetSystemMetrics(SM_CYVSCROLL),/滚动条宽度100+2*GetSystemMetrics(SM_CYVSCROLL),/高度条高度hWnd,(HMENU)NULL,hInst,(LPVOID)NULL);hWndScrollBarHor=CreateWindowEx(0L,/创建水平滚动条SCROLLBAR,(LPSTR)NULL,WS_CHILD|SBS_HORZ,/样式50,200,/左上角坐标100+2*GetSystemMetrics(SM_CYHSCROLL),/滚动条宽度GetSystemMetrics(SM_CYHSCROLL),/高度条高度hWnd,(HMENU)NULL,hInst,(LPVOID)NULL);,stScrollInfo.cbSize=sizeof(SCROLLINFO);/定义此结构体的大小stScrollInfo.fMask=SIF_POS|SIF_RANGE|SIF_PAGE;/定义滚动条特性参数stScrollInfo.nMin=1;/定义滚动条的最小位置stScrollInfo.nMax=100;/定义滚动条的最大位置stScrollInfo.nPos=1;/定义滚动条上下滚动的增量stScrollInfo.nPage=10;/定义滚动条上下滚动的增量/设置滚动条的特性参数SetScrollInfo(hWndScrollBarVer,SB_CTL,case WM_VSCROLL:/若是竖直滚动条的消息if(HWND)lParam!=hWndScrollBarVer)break;switch(LOWORD(wParam)case SB_LINEUP:iVerPos+=5;break;/向上走一行,位置+5case SB_LINEDOWN:iVerPos-=5;break;/向下走一行.位置-5case SB_PAGEUP:iVerPos+=20;break;/向上走一页,位置+20case SB_PAGEDOWN:iVerPos-=20;break;/向下走一页,位置-20case SB_THUMBPOSITION:/拖动滚动条iVerPos=101-HIWORD(wParam);break;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam);if(iVerPos100)iVerPos=100;/设定滚动条的信息.主要是设定位置stScrollInfo.fMask=SIF_POS;stScrollInfo.nPos=101-iVerPos;SetScrollInfo(hWndScrollBarVer,SB_CTL,case WM_HSCROLL:/水平滚动条的消息 if(HWND)lParam!=hWndScrollBarHor)break;switch(LOWORD(wParam)case SB_LINELEFT:iHorPos-=5;break;/向左滚动一行,位置-5case SB_LINERIGHT:iHorPos+=5;break;/向右滚动一行,位置+5case SB_PAGELEFT:iHorPos-=20;break;/向左滚动一页,位置+20case SB_PAGERIGHT:iHorPos+=20;break;/向右滚动一页,位置+20case SB_THUMBPOSITION:/拖动滚动条iHorPos=HIWORD(wParam);break;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam);if(iHorPos100)iHorPos=100;/设定滚动条的信息.主要是设定位置stScrollInfo.fMask=SIF_POS;stScrollInfo.nPos=iHorPos;SetScrollInfo(hWndScrollBarHor,SB_CTL,静态控件是一种包含正文或图形的小窗口,8.5 静态控件,静态控件应用举例,【例8-3】本例通过演示位图静态控件的创建于操作方法,说明静态控件消息的强制生成与处理过程,当单击位图时,就报告该位图的尺寸。,本例的源程序代码如下:#include#include#include#define IDS_BITMAP 101/定义静态控件标识char lpszClassName1=STATIC;char lpszText=;HWND hwndStatic;/静态控件句柄HINSTANCE hInst;HDC hdc;HBITMAP hBm;BITMAP bm;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);,1.LRESULT CALLBACK WndProc(.)2.switch(message)3.case WM_CREATE:/创建位图静态控件 4.hwndStatic=CreateWindow(lpszClassName1,Internet_Wall,/该风格允许静态控件强制发送消息 WS_CHILD|WS_VISIBLE|WS_BORDER|SS_BITMAP|SS_NOTIFY,30,30,0,0,/系统将根据位图尺寸自动调节静态控件的大小hwnd,(HMENU)IDS_BITMAP,hInst,NULL);5.break;6.case WM_COMMAND:7.switch(LOWORD(wParam)8.case IDS_BITMAP:/处理控件消息9.DestroyWindow(hwndStatic);10.hdc=GetDC(hwnd);/在窗口中显示位图大小信息11.TextOut(hdc,130,100,lpszText,strlen(lpszText);12.ReleaseDC(hwnd,hdc);break;13.14.break;15.case WM_DESTROY:16.DeleteObject(hBm);PostQuitMessage(0);break;17.default:return DefWindowProc(hwnd,message,wParam,lParam);18.19.return 0;,向父窗口发送单击/双击可用/不可用等消息,在静态控件区显示特定的位图,本例在窗口用户区的中央显示静态文本“单击此处显示一个位图”单击这个静态文本时,将在静态文本所在处显示一个位图。,本例资源文件:abitmap BITMAP a.BMP,#include#include#include#define IDS_BITMAP 101/定义静态控件标识char lpszText=;HWND hwndStatic;/静态控件句柄HINSTANCE hInst;HDC hdc;HDC hdcmem;HBITMAP hBm;BITMAP bm;,LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)static RECT rect;switch(message)1.case WM_CREATE:2.hdc=GetDC(hwnd);3.hdcmem=CreateCompatibleDC(hdc);4.ReleaseDC(hwnd,hdc);5.GetClientRect(hwnd,8.case WM_COMMAND:9.switch(LOWORD(wParam)10.case IDS_BITMAP:11.DestroyWindow(hwndStatic);12.hdc=GetDC(hwnd);13.SelectObject(hdcmem,hBm);/在窗口中显示位图14./粘贴位图15.BitBlt(hdc,(rect.right-rect.left)/2-bm.bmWidth/2,(rect.bottom-rect.top)/2-bm.bmHeight/2,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);16.ReleaseDC(hwnd,hdc);17.break;18.break;case WM_DESTROY:DeleteObject(hBm);DeleteDC(hdcmem);PostQuitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam,lParam);return 0;,8.6 列表框子窗口控件,列表框常用于集中显示同种类型的内容,如同类型文件等,列表框一般具有如下特点:1可提供大量的可选项(需要时自动显示滚动条);2可设置单选(单个选项)或多选(多项选择)功能;3单选时,单击列表项,被选的项以“反相”显示表示被选中;再次单击该选项,恢复为非选中状态。,创建列表框子窗口控件,列表框和应用程序之间消息传递,LBN_SELCHANGE表明列表框中的用户选择已发生改变LBN_DBCLK双击LBN_SELCANCLE列表框中的选择被取消LBN_SETFOCUS列表框收到输入焦点LBN_KILLFOCUS列表框失去输入焦点,列表框应用举例,【例8-4】创建一个采用常用样式的单选列表框,并在该列表框中列出磁盘驱动器名、当前目录的文件和子目录名等。,本例的源程序代码如下:#include#include#include#define IDL_SAMPLE 101/定义列表框标识#define FILE_LIST 0 x4010/定义文件属性值 HWND hwndList;HINSTANCE hInst;char lpszClassName1=ListBox;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);,LRESULT CALLBACK WndProc(.)int nIndex;switch(message)case WM_CREATE:hwndList=CreateWindow(.);/设置列表框中的所列文件类型 SendMessage(hwndList,LB_DIR,FILE_LIST,(LPARAM)*.*);break;case WM_COMMAND:switch(LOWORD(wParam)case IDL_SAMPLE:/处理列表框消息 if(HIWORD(wParam)=LBN_DBLCLK)nIndex=SendMessage(hwndList,LB_GETCURSEL,0,0L);SendMessage(hwndList,LB_DELETESTRING,nIndex,0L);break;break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam,lParam);return 0;,获取当前选中项的索引值,删除该列表项,编辑框的主要作用在于接收用户键盘输入,两种创建编辑框控件方式,8.7 编辑框控件,编辑框与应用程序间的消息传递,应用程序创建编辑框控件后,可通过接收控件发出的消息得知用户的请求,并可通过向编辑框发送消息对其进行操作。,编辑框控件应用举例,【例8-5】本例介绍一个包含编辑框控件的“乘法器”示例程序,如图所示。当在乘数的输入框中输入一个数,然后单击“”(乘号),再在乘数的输入框中输入另一个数,在结果输出框中就可以看到运算的结果,如本例第一次输入数字5,第二次输入数字8,得到的结果为40。,LRESULT CALLBACK WndProc(.)switch(message)case WM_CREATE:/定义各种子窗口控件 hStatic1=CreateWindow(STATIC,乘数:,WS_CHILD|WS_VISIBLE,40,20,50,20,hwnd,(HMENU)IDS_1,hInst,NULL);hStatic2=CreateWindow(STATIC,结果:,WS_CHILD|WS_VISIBLE,40,70,50,20,hwnd,(HMENU)IDS_2,hInst,NULL);hEditItem=CreateWindow(EDIT,NULL,WS_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER,130,20,80,20,hwnd,(HMENU)IDE_ADDITEM,hInst,NULL);hEditResult=CreateWindow(EDIT,NULL,S_CHILD|WS_VISIBLE|ES_LEFT|WS_BORDER|ES_READONLY,130,70,80,20,hwnd,(HMENU)IDE_RESULT,hInst,NULL);hButtonAdd=CreateWindow(BUTTON,WS_CHILD|WS_VISIBLE,20,120,70,20,hwnd,(HMENU)IDB_ADD,hInst,NULL);hButtonReset=CreateWindow(“BUTTON”,“重新开始”,WS_CHILD|WS_VISIBLE,100,120,70,20,hwnd,(HMENU)IDB_RESET,hInst,NULL);hButtonCancle=CreateWindow(BUTTON,退出,WS_CHILD|WS_VISIBLE,180,120,70,20,hwnd,(HMENU)IDB_CANCLE,hInst,NULL);/设置“结果”编辑框的初始值 SetWindowText(hEditResult,0);break;,case WM_SETFOCUS:/设置编辑框获得输入焦点 SetFocus(hEditItem);break;case WM_COMMAND:switch(LOWORD(wParam)case IDB_ADD:nMax=GetWindowTextLength(hEditItem)+1;GetWindowText(hEditItem,lpszAddItem,nMax);nAddItem=strtol(lpszAddItem,获取编辑框中用户输入的文本长度,获取用户输入,将输入的字符串转换成整形,在“乘数”框中清除用户输入,准备接收新的输入,在“结果”编辑框中输出结果,使“乘数”框重新得到输入焦点,case IDB_RESET:/在“乘数”框中清除用户输入,准备接收新的输入 SetWindowText(hEditItem,);/使“乘数”框重新得到输入焦点 SendMessage(hwnd,WM_SETFOCUS,0,0L);/恢复“结果”编辑框的初始状态 SetWindowText(hEditResult,0);nResult=1;nAddItem=1;break;case IDB_CANCLE:SendMessage(hwnd,WM_DESTROY,0,0L);break;break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam

    注意事项

    本文(第8章Windows标准控件.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开