工学嵌入式系统11.docx

上传人:b****6 文档编号:7985914 上传时间:2023-05-12 格式:DOCX 页数:11 大小:130.56KB
下载 相关 举报
工学嵌入式系统11.docx_第1页
第1页 / 共11页
工学嵌入式系统11.docx_第2页
第2页 / 共11页
工学嵌入式系统11.docx_第3页
第3页 / 共11页
工学嵌入式系统11.docx_第4页
第4页 / 共11页
工学嵌入式系统11.docx_第5页
第5页 / 共11页
工学嵌入式系统11.docx_第6页
第6页 / 共11页
工学嵌入式系统11.docx_第7页
第7页 / 共11页
工学嵌入式系统11.docx_第8页
第8页 / 共11页
工学嵌入式系统11.docx_第9页
第9页 / 共11页
工学嵌入式系统11.docx_第10页
第10页 / 共11页
工学嵌入式系统11.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

工学嵌入式系统11.docx

《工学嵌入式系统11.docx》由会员分享,可在线阅读,更多相关《工学嵌入式系统11.docx(11页珍藏版)》请在冰点文库上搜索。

工学嵌入式系统11.docx

工学嵌入式系统11

课题

实验十编写Dialog程序

需6课时

教学

目的

要求

教学

重点

教学

难点

教案编写日期

2011年5月10日

教学内容及教学过程

提示与补充

一、组织教学

二、内容讲解

10.1实验目的

进一步熟悉EVC集成开发环境以及相关配置,掌握对话框应用程序的设计与实现。

10.2实验内容

编写Dialog应用程序

10.3实验设备

1.OURS-PXA270-RP实验箱,烧录有WinCE的Flash,交叉网线及USB延长线。

2.安装Windows系统的PC机,EVC集成开发环境

10.4实验步骤

1.硬件连接

2.程序剖析

#include

#include"resource.h"

#defineMAX_TEXT1024

BOOLCALLBACKDialogProc(HWND,UINT,WPARAM,LPARAM);//对话框窗口过程回调函数

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow)//程序入口

{

returnDialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1//对话框资源标识),NULL,DialogProc//对话框窗口过程);

}

HWNDhLogList;//日志列表框句柄

voidOutputLog(LPCTSTRlpFormat,...)//写日志函数

{

va_listarg;

TCHARbuf[256];

if(hLogList!

=NULL)

{

va_start(arg,lpFormat);

wvsprintf(buf,lpFormat,arg);

va_end(arg);

SendMessage(hLogList,LB_ADDSTRING//增加字符串事件,0,(LPARAM)buf);

}

}

BOOLCALLBACKDialogProc(HWNDhDlg//对话框句柄,UINTuMsg,WPARAMwParam,LPARAMlParam)

{

TCHARstrText[MAX_TEXT];

WORDwID,wNotifyCode;

DWORDnIndex;

switch(uMsg)

{

caseWM_INITDIALOG:

//对话框初始化消息

SendMessage(GetDlgItem(hDlg,IDC_CKLOG)//根据对话框控件标识得到对话框上某控件的操作句柄,BM_CLICK//复选框单击事件,0,0);

SendMessage(GetDlgItem(hDlg,IDC_CHECK1),BM_CLICK,0,0);

OutputLog(_T("initializationdialogdone"));

break;

caseWM_CLOSE:

EndDialog(hDlg,0);

break;

caseWM_COMMAND:

wID=LOWORD(wParam);//控件标识

wNotifyCode=HIWORD(wParam);//控件事件标识

switch(wID)

{

caseIDC_CKLOG:

//IDC_CKLOG复选框的事件处理

if(wNotifyCode==BN_CLICKED)

{

if(SendMessage(GetDlgItem(hDlg,IDC_CKLOG),BM_GETCHECK,0,0)==BST_CHECKED//BST_CHECKED指的是IDC_CKLOG复选框处于被选中状态;如果被选中的话,使IDC_LISTLOG列表框与IDC_BTNCLEAR可用(Enable))

{

hLogList=GetDlgItem(hDlg,IDC_LISTLOG);

EnableWindow(hLogList,TRUE);

EnableWindow(GetDlgItem(hDlg,IDC_BTNCLEAR),TRUE);

}

Else//如果IDC_CKLOG未被选中,则使IDC_LISTLOG列表框与IDC_BTNCLEAR不可用。

{

EnableWindow(GetDlgItem(hDlg,IDC_BTNCLEAR),FALSE);

EnableWindow(hLogList,FALSE);

hLogList=NULL;

}

break;

}

returnFALSE;

caseIDC_BTNCLEAR:

//IDC_BTNCLEAR按钮的事件处理

if(hLogList!

=NULL)

while(SendMessage(hLogList,LB_DELETESTRING//循环删除日志列表框的字符串,(WPARAM)0,0)!

=LB_ERR);

break;

caseIDC_LIST1:

//IDC_LIST列表框的事件处理

if(wNotifyCode==LBN_SELCHANGE)//列表框选择项发生变化事件处理

OutputLog(_T("选择第%d项"),SendMessage(GetDlgItem(hDlg,IDC_LIST1),LB_GETCURSEL,0,0));

elseif(wNotifyCode==LBN_DBLCLK)//列表框双击事件处理

OutputLog(_T("双击第%d项"),SendMessage(GetDlgItem(hDlg,IDC_LIST1),LB_GETCURSEL,0,0));

else

returnFALSE;

break;

caseIDC_BTNADD:

//IDC_BTNADD按钮事件处理

if(GetDlgItemText(hDlg,IDC_EDIT1,strText,MAX_TEXT)>0)//返回对话框子控件的文本

SendMessage(GetDlgItem(hDlg,IDC_LIST1),LB_ADDSTRING,0,(LPARAM)strText);//将文本内容追加到IDC_LIST1列表框内

OutputLog(_T("单击Add按钮"));

break;

caseIDC_BTNDEL:

//IDC_BTNDEL按钮事件处理

nIndex=SendMessage(GetDlgItem(hDlg,IDC_LIST1),LB_GETCURSEL,0,0);

if(nIndex!

=LB_ERR)

SendMessage(GetDlgItem(hDlg,IDC_LIST1),LB_DELETESTRING,(WPARAM)nIndex,0);

OutputLog(_T("单击Delete按钮"));

break;

caseIDC_CHECK1:

//IDC_CHECK1复选框事件处理

if(wNotifyCode==BN_CLICKED)

{

BOOLbEnab=FALSE;

if(SendMessage(GetDlgItem(hDlg,IDC_CHECK1),BM_GETCHECK,0,0)==BST_CHECKED)

bEnab=TRUE;

EnableWindow(GetDlgItem(hDlg,IDC_RADIO1),bEnab);

EnableWindow(GetDlgItem(hDlg,IDC_RADIO2),bEnab);

EnableWindow(GetDlgItem(hDlg,IDC_BUTTON1),bEnab);

EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),bEnab);

if(bEnab)

OutputLog(_T("Check1ischecked"));

else

OutputLog(_T("Check1isunchecked"));

break;

}

returnFALSE;

caseIDC_RADIO1:

caseIDC_RADIO2:

if(wNotifyCode==BN_CLICKED)

{

if(SendMessage(GetDlgItem(hDlg,IDC_RADIO1),BM_GETCHECK,0,0)==BST_CHECKED)

OutputLog(_T("Radio1ischecked"));

elseif(SendMessage(GetDlgItem(hDlg,IDC_RADIO2),BM_GETCHECK,0,0)==BST_CHECKED)

OutputLog(_T("Radio2ischecked"));

break;

}

returnFALSE;

caseIDC_EDIT2:

if(wNotifyCode==EN_CHANGE)

{

if(GetDlgItemText(hDlg,IDC_EDIT2,strText,MAX_TEXT)>0)

SetDlgItemText(hDlg,IDC_BUTTON1,strText);

break;

}

returnFALSE;

}

break;

default:

returnFALSE;

}

returnTRUE;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2