2.win32应用程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• TEXT宏:当定义了UNICODE时返回 UNICODE字符,否则返回ASCII字符
Hello3.cpp
Window CE的消息机制
Windows CE编程仍然是Windows编程,有 相同的消息循环、相同的窗口,大部分相 同的资源和控件等SS)
OS层
驱动层
驱动层、HAL、BSP
Hardware
WinMain()的几个参数
• hInstance:当前实例 • hPrevInstance:历史遗留,始终是0,可以忽略 • lpCmdLine:指向一个UNICODE字符串,包含了 命令行文本 • nCmdShow:指明了程序主窗口的初始状态, WinCE只支持三个状态:
#include "windows.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{ MessageBox(NULL,TEXT("Hello World!"),TEXT("Hello2"),MB_OKCANCEL); return 0; }
– SW_SHOW(显示窗口) – SW_HIDE(隐藏窗口) – SW_SHOWNOACTIVATE(显示不激活)
功能行
• printf("Hello World\n");
• 向控制台输出Hello World 字样,由于很多 WINCE系统没有控制台驱动,因此Hello0 不会显示任何东西
Hello2
• Style:
– CS_GLOBALCLASS:类是全局的 – CS_HREDRAW:窗口改变水平大小时,重绘 窗口 – CS_VREDRAW:窗口改变垂直大小时重绘 – CS_NOCLOSE:如果“关闭”按钮出现在标 题栏上,则使其失效 – CS_DBLCLKS:允许双击事件传递给父窗口
2.创建窗口
• HWND CreateWindowEx(DWORD dwExStyle, • LPCSTR lpClassName, • LPCSTR lpWindowName, • DWORD dwStyle, • int X, • int Y, • int nWidth, • int nHeight, • HWND hWndParent , • HMENU hMenu, • HINSTANCE hInstance, • LPVOID lpParam);
窗口大小及位置
• Wince只支持默认大小,即全屏显示窗口
(0,0) (x,y) x
nHeight
nWidth y
DrawText()
• int DrawText( • HDC hDC, // 设备描述表句柄 • LPCTSTR lpString, // 将要绘制的字符串 • int nCount, // 字符串的长度 -1表示自动计算 • LPRECT lpRect, // 指向矩形结构RECT的指 针 • UINT uFormat // 正文的绘制选项 • );
创建一个HelloWorld应用程序
嵌入式操作系统设计 ——Windows CE 应用程序设计
安装EVC安装目录下的 STANDARDSDK以便仿真
创建一个空的win32应用程序 CPU 选中emulator
Hello1
• • • • • • • • • • • • • • • //Hello1.cpp //=========================================================== // //Hello- A simple application for windows CE // //===========================================================
}
WinMain介绍
• 是一个API函数 • 包含在windows.h头文件中 • 是任何一个Windows程序的入口
API定义
操作系统提供给应用程序的编程接口。
应用程序 应用层 应用程序接口(API)
基本模块 内存管理 文件管理 OS内核 Database 模块 进程调度 扩展模块 网络模块 图形驱动
dwStyle
• • • •
• • • •
WS_BORDER 创建一个有边框的窗口 WS_CAPTION 创建一个有标题栏的窗口 WS_DISABLED 创建一个初始被禁止的窗口 WS_DLGFRAME 创建一个有双边框但无标题的 窗口 WS_HSCROLL 创建一个带水平滚动杠的窗口 WS_VSCROLL 创建一个带垂直滚动杠的窗口 WS_SYSMENU 窗口带有系统选单框,仅用于带 标题栏的窗口 WS_VISIBLE 创建一个初始可见的窗口
MessageBox()的几个参数
• 原型
• int MessageBox(HWND hWnd , LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
• 参数
– – – – hwnd:消息窗口的父窗口句柄 lpText:显示在窗口里的文字 lpCaption:窗口的标题文字 uType:规定消息如何显示在窗口上
Windows CE应用程序的类型
• 空项目 已有源代码文件时选择,仅需要将这些文件放 到一起进行编译链接构造应用程序 • 简单 Windows CE 应用程序 选择简单 Windows CE应用程序可得到程序入 口点WinMain。用于没有开头的 Windows CE 系统, 因为最后的选项(即典型Hello World应 用程序)要求有窗口管理器 • 典型 Hello World应用程序 当平台支持全部窗口和GWES的图形部分时选 择典型 ‘Hello World’ 应用程序
• //Hello2.cpp
• • • • •
• • • • • • • • •
//=========================================================== // //Hello- A simple application for windows CE // //===========================================================
nType MB_OK
按钮 OK
IDRETRY IDIGNORE
MB_OKCANCEL
MB_RETRYCANCE L …….
OK and Cancel
Retry and Cancel …….
UNICODE
• ASCII一个字节组成 • UNICODE:两个字节(UCS-2)或者四个 字节(UCS-4)组成
uFormat
WM_PAINT消息
• 系统发送WM_PAINT消息的时间:
– – – – 第一次创建一个窗口时 窗口大小改变时 窗口移动 窗口最大最小化
• 程序主动发送WM_PAINT消息
– 当显示数据发生变化时,通过InvalidateRect和 InvalidateRgn来完成。 – InvalidateRect和InvalidateRgn把指定的区域加到窗口 的Update Region中,当应用程序的消息队列没有其他 消息,如果Update Region不为空,系统会产生 WM_PAINT消息
#include "windows.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{ printf("Hello World\n"); return 0;
返回值 IDOK
对应按钮 OK button pressed
IDYES
IDNO IDCANCEL IDABORT
YES button pressed
No button pressed Cancel or Esc button pressed Abort button pressed Retry button pressed Ignore button pressed
dwExStyle
• • • • • • • • • • WS_EX_TOPMOST:窗口置顶 WS_EX_WINDOWEDGE:窗口有突起的边框 WS_EX_CLIENTEDGE:窗口有凹陷的边框 WS_EX_STATICEDGE:静态窗口具有3D外观 WS_EX_OVERLAPPEDWINDOW:是WS_EX_ WINDOWEDGE和 WS_EX_CLIENTEDGE的组合 WS_EX_CAPTIONOKBUTTON:标题栏上有OK按钮 WS_EX_CONTEXTHELP:标题栏上有帮助按钮 WS_EX_NOACTIVATE:单击窗口时,窗口成为不活动窗口 WS_EX_NOANIMATION:该窗口没有弹出动画,同时在任务栏条上 没有按钮 WS_EX_NODRAG:窗口无法拖动
相关文档
最新文档