Download presentation
Presentation is loading. Please wait.
1
标准控件的应用 控件概述 按钮控件 滚动条控件 静态控件 列表框控件 编辑框控件 组合框控件
2
控件概述 控件的创建形式有两种: 在对话框中创建控件 通过CreateWindow函数或CreateWindowEx函数创建控件子窗口。
3
系统预定义的窗口类 BUTTON 按钮控件 COMBOBOX 组合框控件 EDIT 编辑框控件 LISTBOX 列表框控件
SCROLLBAR 滚动条控件 STATIC 静态控件
4
控件消息 子窗口控件向父窗口发送WM_COMMAND消息进行通讯。 wParam:子窗口的标志 lParam: 低位:子窗口的句柄
高位:通知代码告诉父窗口用户在子窗口中所进行的操作。
5
关于控件的描述 MSDN Library 2001 Embedded Developer Documentation
Windows CE Docunetation Windows CE API Reference Windows User Interface Services
6
常用子窗口型控件操作函数 EnableWindow 禁止或激活窗口 MoveWindow 移动窗口或改变窗口的大小
SetWindowText(SetDlgItemText) 设置窗口标题或文本 GetWindowText( GetDlgItemText ) 获取制定窗口的标题和文本 DestroyWindow 关闭窗口
7
按钮控件 按钮控件的创建 按钮控件的消息传递
8
按钮控件的创建 创建按钮子窗口: CreateWindow("BUTTON", "DIALOG1", BS_PUSHBUTTON
|WS_CHILD |WS_VISIBLE, 200,200,120,30, hwnd, (HMENU)ID_BUTTON_DIALOG1, hInst, NULL);
9
按钮控件与应用程序之间的消息传递 接收按钮控件消息: 控件向父窗口中发送WM_COMMAND消息, 向按钮控件发送消息:
wParam低字节:控件的ID; wParam高字节:控件向父窗口发出的通知代码。 向按钮控件发送消息: SendMessage 向子窗口按钮控件发送消息 SendDlgMessage: 向对话框按钮控件发送消息。
10
例如: case WM_COMMAND: switch(LOWORD(wParam)) { case ID_BUTTON_DIALOG1: //响应按钮消息 DialogBox(hInst,(LPCTSTR)IDD_DIALOG1, hwnd,(DLGPROC)DlgProc1); //弹出对话框 } break;
11
滚动条控件的创建 从功能上分垂直与水平滚动条
从形式上分窗口滚动条和子窗口滚动条,窗口滚动条由系统创建,其位置和尺寸固定,子窗口滚动条由应用程序创建,位置和尺寸由程序员确定。
12
创建窗口滚动条 在主窗口的创建过程中设置窗口类的样式为:WS_VSROLL或WS_HSCROLL。 例如:
hwnd=CreateWindow(…… …… WS_OVERLAPPEDWINDOW| WS_VSCROLL| WS_HSCROLL );
13
创建滚动条控件子窗口 通过调用函数CreateWindow创建滚动条控件子窗口。 CreateWindow(”BUTTON”, NULL,
WS_CHILD|WS|VISIBLE|SBS_VERT, 200,200,10,100, hwnd, ID_SCROLLBAE, hInstance, NULL );
14
例如: CreateWindow("scrollbar", NULL, WS_CHILD|WS_VISIBLE|SBS_VERT, 300, 20, 120, hwnd, (HMENU)ID_SCROLL1, hInst, NULL );
15
滚动条控件消息 滚动条控件与按钮等其他控件不同:
滚动条控件不发送WM_COMMAND消息,而是发送WM_VSCROLL和WM_HSCROLL,消息字参数的低位字节包含了滚动条的动作标识(详见MSDN)。
16
常用滚动条操作函数 SetScrollRange 设置滚动条的滚动范围 SetScrollPos 设置滚动块的位置
GetSystemMetrics 获取系统提供的滚动条尺寸 GetScrollPos 获取滚动块的位置 GetScrollRange 获取滚动条的滚动范围
17
例如: BOOL CALLBACK DlgProc1 ( HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam ) { static int scrollpos=0;//记录滚动条的当前位置 static HWND hScroll;//滚动条子窗口句柄 char statictext[10];//静态控件显示文本
18
switch(message) { case WM_INITDIALOG: hScroll=GetDlgItem(hdlg,IDC_SCROLLBAR1); //得到对话框中滚动条控件的句柄 SetScrollRange(hScroll,SB_CTL,0,10,1); //设置滚动条范围 SetScrollPos(hScroll,SB_CTL,2,1); //设置滚动条初始位置 SetDlgItemText(hdlg,IDC_STATIC,itoa(2,statictext,10)); //静态文本初始值与滚动条初始位置相同 break;
19
case WM_HSCROLL://水平滚动条响应消息
switch(LOWORD(wParam)) { case SB_LINERIGHT: scrollpos=GetScrollPos(hScroll,SB_CTL)+1; //得到滚动条当前位置 if(scrollpos>10) scrollpos=10; //防止出界 SetScrollPos(hScroll,SB_CTL,scrollpos,1); //将滚动条位置向右移一位 SetDlgItemText(hdlg,IDC_STATIC, itoa(scrollpos,statictext,10)); //静态文本与滚动条位置相同 break; }
20
case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: EndDialog(hdlg,0); return 1; } break; case WM_CLOSE: return 0;
21
静态控件 静态控件常用来标记其它控制窗口或分隔不同组别的控件。
一般情况下,静态控件不接收输入,也不发送消息;当静态控件响应用户输入时,静态控件便成为超文本。
22
静态控件的创建 调用CreateWindow函数创建静态控件。
当静态控件的样式设为SS_NOTIFY时可以发送消息,此时静态文本相当于超文本。
23
静态控件的消息 静态控件向父窗口发送WM_COMMAND消息。 lParam:静态控件的句柄 wParam低字节:静态控件的ID。
STN_CLICHED 单击静态控件 STN_DBLCLK 双击静态控件 STN_ENABLE 激活静态控件 STN_DISABLE 禁止静态控件
24
列表框控件 集中显示同种类型的内容: (1)可提供大量的可选项,自动显示滚动条 (2)可设置单选或多选功能。
(3)被选中的项以反相表示被选中,再次单击,恢复为非选中状态。
25
列表框控件的创建 调用CreateWindow函数创建列表框。
26
列表框的消息传递 列表框向应用程序发送消息 列表框向应用程序发送WM_COMMAND消息 wParam低字节:控件ID
LBN_SETFOCUS 收到输入焦点 LBN_KILLFOCUS 失去输入焦点 LBN_SELCHANGE 用户选择发生改变 LBN_DBCLK 双击 IBN_SELCANCLE 列表框中的选择被取消
27
应用程序向列表框发送消息: 调用函数SendMessage或SendDlgItemMessage(常用消息见MSDN) 注意问题:
索引号的使用 第一项的默认索引号为0,最后一项为-1。 例如:在列表框的第三个位置插入一项: SendMessage(hwndlist,LB_INSERTSTRING,2, (LPARAM)NewItem); 应用程序向列表框发送LB_GETCURSEL获取当前选中的索引号 Int nIndex=SendMessage(hwndlist, LB_GETCURSEL,0,0L);
28
多选列表框消息的发送 当列表框样式为LBS_GETCURSEL和LBS_MULTIPLSEL时,用户可选取多个项,通过发送LB_GETSELCOUNT可获取选中的项数: Int nCount=SendMessage(hwndlist, LB_GETSELCOUNT,0,0L);
29
编辑框控件 接收用户键盘输入: (1)自动转换用户输入,如大小写转换。 (2)使用某个字符代替显示用户输入。 (3)可支持多行编辑。
30
编辑框的创建 调用CreateWindow函数。
31
编辑框的消息传递 编辑框向应用程序发送消息 发送WM_COMMAND消息 wParam低字节:控件ID。 wParam高字节:消息通知码:
EN_SETFOCUS 获取输入焦点 EN_KILLFOCUS 失去输入焦点 EN_CHANGE 内容发生改变 EN_UPDATE 内容被更新 EN_MAXTEXT 用户输入已达到允许的最大字节数 EN_HSCROLL 有水平滚动条 EN_VSCROLL 有垂直滚动条
32
应用程序向编辑框发送消息 调用函数SendMessage或SendDlgItemMessage发送消息,各种消息代码详见MSDN。
33
组合框控件 组合框是两种预定义窗口的组合形式。 常用的组合框是列表及与其相联系的静态文本和编辑框。
34
组合框控件的创建 调用CreateWindow函数。
35
组合框的消息传递 组合框向应用程序发送消息 组合框向父窗口发送WM_COMMAND消息: wParam低字节:控件ID
CBN_SELCHANGE 列表框部分选中项发生改变 CBN_DBLCLK 双击 CBN_SETFOCUS 收到输入焦点 CBN_FILLFOCUS 失去输入焦点 CBN_EDITCHANGE 组合框中编辑框文本发生改变 CBN_EDITUPDATE 编辑框显示修改过的文本 CBN_DROPDOWN 组合框中列表框将下拉 CBN_CLOSEUP 列表框隐藏
36
应用程序向消息框发送消息 应用程序通过函数SendMessage或SendDlgItemMessage向组合框发送消息(详见MSDN)
Similar presentations