WINDOWS CE 窗体编译通过了,却不能在模拟器运行解决思路
WINDOWS CE 窗体编译通过了,却不能在模拟器运行 - C++ Builder / Windows SDK/API
学Win CE程序设计的菜鸟,按照教材把一个窗体程序代码输入,生成解决方案成功。就是不能在模拟器下运行 特此请问下老鸟?
开发环境:VS2008 模拟器:WM6.0
问题补充:代码
//filename:myFirst.h
//所有Windows CE API程序必须包括的头文件
#include <windows.h>
//窗口顶部命令栏所需要的头文件
#include <commctrl.h>
//Go:可以在此处加入你所需要的其他头文件
//返回数组x的元素数
#define dim(x) (sizeof(x)/sizeof(x[0]))
/*
int a[1024];
sizeof(a)是求a数组的总长度, 1024*4=4096字节。
sizeof(a[i])是求a[i]变量的长度,这里就是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<dim(mainMessages);i++)
{
if(msgCode==mainMessages[i].uCode)
return(*mainMessages[i].funtionName)(hWnd,msgCode,wParam,lParam);
}
//对于不再消息查找表中的消息,调用WindowsCE的缺省窗口过程
return DefWindowProc(hWnd,msgCode,wParam,lParam);
}
//主窗口收到WM_CREATE消息后的处理过程体
LRESULT goCreateMain(HWND hWnd,UINT msgCode,WPARAM wParam,LPARAM lParam)
学Win CE程序设计的菜鸟,按照教材把一个窗体程序代码输入,生成解决方案成功。就是不能在模拟器下运行 特此请问下老鸟?
开发环境:VS2008 模拟器:WM6.0
问题补充:代码
//filename:myFirst.h
//所有Windows CE API程序必须包括的头文件
#include <windows.h>
//窗口顶部命令栏所需要的头文件
#include <commctrl.h>
//Go:可以在此处加入你所需要的其他头文件
//返回数组x的元素数
#define dim(x) (sizeof(x)/sizeof(x[0]))
/*
int a[1024];
sizeof(a)是求a数组的总长度, 1024*4=4096字节。
sizeof(a[i])是求a[i]变量的长度,这里就是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<dim(mainMessages);i++)
{
if(msgCode==mainMessages[i].uCode)
return(*mainMessages[i].funtionName)(hWnd,msgCode,wParam,lParam);
}
//对于不再消息查找表中的消息,调用WindowsCE的缺省窗口过程
return DefWindowProc(hWnd,msgCode,wParam,lParam);
}
//主窗口收到WM_CREATE消息后的处理过程体
LRESULT goCreateMain(HWND hWnd,UINT msgCode,WPARAM wParam,LPARAM lParam)