4235|10

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINDOWS CE 窗体编译通过了,却不能在模拟器运行 [复制链接]

学Win CE程序设计的菜鸟,按照教材把一个窗体程序代码输入,生成解决方案成功。就是不能在模拟器下运行  特此请问下老鸟?
开发环境:VS2008  模拟器:WM6.0


问题补充:代码
//filename:myFirst.h

//所有Windows CE API程序必须包括的头文件
#include

//窗口顶部命令栏所需要的头文件
#include

//Go:可以在此处加入你所需要的其他头文件

//返回数组x的元素数
#define dim(x) (sizeof(x)/sizeof(x[0]))
/*
int  a[1024];  
   
  sizeof(a)是求a数组的总长度,  1024*4=4096字节。  
  sizeof(a)是求a变量的长度,这里就是int的长度4字节。  
  sizeof(a)/sizeof(a[0])    4096/4  =  1024  
  实际上求的是数组的长度
  */


//定义消息ID号与消息处理过程的结构体

typedef struct{
UINT  uCode;
LRESULT (*funtionName)(HWND,UINT,WPARAM,LPARAM);//指的是从窗口程序或者回调函数返回的32位值
}MessageProc;

//定义一个全局正整数标号,这里用于表示处理过程的结构体。本程序没有用到
typedef struct{
UINT uCode;
LRESULT (*futionName)(HWND,HWND,WORD,WORD);//指的是从窗口程序或者回调函数返回的32位值
}CommandProc;
//定义一个全局正整数标号,这里用于表示窗口顶部的命令栏控件ID号
#define IDC_CMDBAR 1

//注册主窗口类
int registerWnd(HINSTANCE);

//创建主窗口并显示
int showMainWnd(HINSTANCE,LPWSTR,int);

//退出主窗口,即退出程序
int quitMainWnd(HINSTANCE,int);

//主窗口过程的原型,窗口过程必须是回调函数
LRESULT CALLBACK mainWndProc(HWND,UINT,WPARAM,LPARAM);

//主窗口收到WM_CReate消息后的处理过程原型
LRESULT goCreateMain (HWND,UINT,WPARAM,LPARAM);

//主窗口收到WM_PAINT消息后的处理过程原型
LRESULT goPaintMain (HWND,UINT,WPARAM,LPARAM);

//主窗口收到WM_DESTROY消息后的处理过程原型
LRESULT goDestroyMain (HWND,UINT,WPARAM,LPARAM);

//主窗口收到WM_CLOSE消息后的处理过程原型
LRESULT goCloseMain (HWND,UINT,WPARAM,LPARAM);


//主窗口过程文件mainWndProc.c
//该文件为主窗口的各种消息处理子过程,是实现程序功能自定义的过程

//包括自定义头文件
#include"myFirst.h"

//定义全局变量字符串类名
const TCHAR mainClassName[]=TEXT("myFirst");

//定义全局程序实例句柄
HINSTANCE hInst;

//定义全局常量消息ID号与消息处理过程指针查找表
const MessageProc mainMessages[]={
WM_CREATE, goCreateMain,
WM_PAINT,  goPaintMain,
WM_DESTROY,goDestroyMain,
WM_CLOSE,  goCloseMain,
};

//注册主窗口类
int registerWnd(HINSTANCE hInstance)
{
//定义窗口结构体对象
WNDCLASS wc;
//填充结构体中的各成员
wc.hInstance=hInstance;
wc.lpszClassName=mainClassName;
wc.lpfnWndProc=mainWndProc;
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.style=CS_DBLCLKS;
wc.hIcon=NULL;
wc.hCursor=NULL;
wc.lpszMenuName=NULL;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
//注册窗口类
if(RegisterClass(&wc))
return 0;
return 1;
}

//创建主窗口并显示
int showMainWnd(HINSTANCE hInstance,LPWSTR lpCmdLine,int nShowCmd)
{
//定义窗口句柄
HWND hWnd;

//存储全局程序实例句柄
hInst=hInstance;

//创建窗口
hWnd=CreateWindow(
mainClassName,
TEXT("myFirst"),
WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
//如果窗口不存在,返回0并退出
if(!IsWindow(hWnd))
return 0;

//显示并刷新窗口
ShowWindow(hWnd,nShowCmd);
UpdateWindow(hWnd);

return 1;
}

//退出主窗口,即退出程序
int quitMainWnd(HINSTANCE hInstance,int nExitCode)
{
return nExitCode;
}

//主窗口过程体,窗口过程必须是回调函数
LRESULT CALLBACK mainWndProc(HWND hWnd,UINT msgCode,
WPARAM wParam,LPARAM lParam)
{
INT i;
//查找对应的消息ID号,并执行相应的消息处理过程
for(i=0;i {
if(msgCode==mainMessages.uCode)
return(*mainMessages.funtionName)(hWnd,msgCode,wParam,lParam);
}
//对于不再消息查找表中的消息,调用WindowsCE的缺省窗口过程
return DefWindowProc(hWnd,msgCode,wParam,lParam);
}

//主窗口收到WM_CREATE消息后的处理过程体
LRESULT goCreateMain(HWND hWnd,UINT msgCode,WPARAM wParam,LPARAM lParam)
{
HWND wndCB;
//创建命令栏控件
wndCB=CommandBar_Create(hInst,hWnd,IDC_CMDBAR);

//在命令栏加上Close按钮
CommandBar_AddAdornments(wndCB,0,0);
return 0;
}

//主窗口收到WM_Paint的处理过程
LRESULT goPaintMain(HWND hWnd,UINT msgCode,WPARAM wParam,LPARAM lParam)
{
//定义画板结构体对象
PAINTSTRUCT ps;

//定义巨型结构体对象
RECT rect;
//定义设备环境句柄(或称设备上下文,一般指触摸屏)
HDC hdc;
//获得客户区矩形大小
GetClientRect(hWnd,&rect);
//客户区举行顶部位置增加命令行的高度
rect.top+=CommandBar_Height(GetDlgItem(hWnd,IDC_CMDBAR));
//获得设备环境,必须与EndPaint配对使用
hdc=BeginPaint(hWnd,&ps);
//客户区窗口中央输出一行文字
DrawText(hdc,TEXT("学号Windows CE程序设计"),-1,&rect,
DT_CENTER|DT_VCENTER|DT_SINGLELINE);
//释放设备环境资源
EndPaint(hWnd,&ps);

return 0;
}

//主窗口收到WM_DESTROY的处理过程体
LRESULT goDestroyMain(HWND hWnd,UINT msgCode,WPARAM wParam,LPARAM lParam)
{
//向主窗口发送WM_QUIT消息,并把1传给msg.wParam
PostQuitMessage(1);
return 0;
}

//主窗口收到WM_CLOSE消息后的处理过程体
LRESULT goCloseMain(HWND hWnd,UINT msgCode,WPARAM wParam,LPARAM lParam)
{
INT idCode;
//弹出带有YES和NO控件的简单消息对话框
idCode=MessageBox(hWnd,TEXT("退出软件吗?"),TEXT("退出"),MB_YESNO|MB_ICONQUESTION);
//如果点击NO,则返回0
if(idCode==IDNO)
return 0;

PostQuitMessage(1);
return 0;

}


//该文件为主程序入口文件,即程序执行的入口点,格式固定

//包括的头文件,其中,有windows.h头文件和其他所有需要的头文件

#include "myFirst.h"

//主程序过程以WinMain为入口
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPWSTR lpCmdLine,int nShowCmd)
{
//定义一个消息结构体对象变量
MSG msg;

//判断注册窗口成功否,不成功,返回值1并退出
if(!registerWnd(hInstance))
return 1;

//判断创建主窗口成功否,不成功,返回值2并推出
if(!showMainWnd(hInstance,lpCmdLine,nShowCmd))
return 2;

//获取Windows CE操作系统发来的额消息,并翻译和回发
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//退出主窗口
return quitMainWnd(hInstance,msg.wParam);

}

最新回复

各位帮忙编译一下。。。  详情 回复 发表于 2009-10-2 13:26
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没有人帮忙吖。。。
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
sdk选的是模拟器的吗?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 xuefeng_baggio 的回复:
sdk选的是模拟器的吗?

工程是不是没Create正确。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 rockursoul 的回复:
引用 2 楼 xuefeng_baggio 的回复:
sdk选的是模拟器的吗?

工程是不是没Create正确。


什么叫create正确??

sdk选择的是wm6.0 模拟器运行正常   能够生成exe文件
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
估计是代码问题吖。。大虾们能帮我运行一下吗??
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
把错误号报一下。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
先建一个DEMO程序,什么都不加,看能否运行?
如果能,那么就是你的程序有问题 !
哪里有问题? 自己找吧
如果不能  ,  就先解决 你所建工程的类型 在你的模拟器上的支持问题
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
一步一步做。

先做一下基于pocket PC2003的 dialog程序。

运行起来会有一个空白窗口。

其它慢慢加。
 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(初级)

10
 
boling大侠的编程风格啊
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
各位帮忙编译一下。。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表