WINCE中的一些常用代码

简介:

一、窗口全屏显示,去掉任务栏

1
2
3
4
5
6
7
8
9
10
11
12
13
//全屏显示
//隐藏HHTaskBar窗口代码如下:       
HWND  hTaskBar = ::FindWindow(TEXT( "HHTaskBar" ), NULL);        
if  (hTaskBar != NULL)       
{       
      ::EnableWindow(hTaskBar, FALSE);       
      ::ShowWindow(hTaskBar, SW_HIDE);       
}       
 
int  iFullWidth  = GetSystemMetrics(SM_CXSCREEN);
int  iFullHeight = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos( this ->m_hWnd, HWND_TOPMOST, 0, 0, iFullWidth, iFullHeight,
     SWP_NOOWNERZORDER|SWP_SHOWWINDOW);

二、获取当前程序路径

1
2
3
4
5
6
7
8
9
10
11
12
CString CscaleweightDlg::GetAppllicationPath()
{
     WCHAR   buff[255]={0};
     ::GetModuleFileName(0,buff,255);
 
     CString strAppFullName;
     strAppFullName.Format(_T( "%s" ),buff);
 
     CString strAppPath = _T( "" );
     strAppPath = strAppFullName.Left(strAppFullName.ReverseFind( '\\' )+1);
     return  strAppPath;
}

三、加载字库

1
2
3
4
5
6
7
8
9
10
//加载字体
     CString strFontPath = GetAppllicationPath()+_T( "msyh.ttf" );
     if  (NULL != AddFontResource(strFontPath))
     {
         ::SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
     }
     else
     {
         AfxMessageBox(L "字体加载失败" );
     }

程序退出时,卸载字库

1
2
3
4
5
6
7
CString strFontPath = GetAppllicationPath()+_T( "msyh.ttf" );
if (RemoveFontResource(strFontPath))
{
     ::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
}
else
     AfxMessageBox(L "Failed to UNLOAD font!" );

四、加载位图用LoadImage无效

1
HBITMAP    hBitmap = ( HBITMAP )::SHLoadDIBitmap(szBitmapFile);

五、要以共享MFC的DLL库的方式发布程序,须将如下目录中DLL全部复制到目标机器上。

1
C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\Dll\armv4i

六、wchar_t*转char*
如,sCaption为 LPCTSTR类型字符串,要转成char *字符串,如下:

1
2
3
int  num = WideCharToMultiByte(CP_OEMCP, NULL, sCaption, -1, NULL, 0, NULL, FALSE);
char  *pChar =  new  char [num];
WideCharToMultiByte(CP_OEMCP, NULL, sCaption, -1, pChar, num, NULL, FALSE);

七、字体平滑,需要修改注册表

1
2
HKEY_LOCAL_MACHINE\\System\\GDI\\ClearType 
Default=2

八、不关闭屏幕,常期显示工作界面

1
2
3
4
5
6
7
8
//电源参数请求更新
HANDLE  hevReloadActivityTimeouts =  OpenEvent(EVENT_ALL_ACCESS, FALSE,
                                       _T( "PowerManager/ReloadActivityTimeouts" ));
if  (hevReloadActivityTimeouts) 
{
     SetEvent(hevReloadActivityTimeouts);
     CloseHandle(hevReloadActivityTimeouts);
}

同时,在注册表中也要修改超时设置。

九、Sqlite数据库读写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void  CSimpleModeData::TempTableWrite(CString CarNo,CString strWeight,CString GoodsName, 
CString Time)
{
     CString str ;
     str.Format(_T("insert into SimpleModeTempTable(CarNo,GoodsName,Weight,Time)\
                   values( '%s' , '%s' , '%s' , '%s' )"),CarNo,strWeight,GoodsName,
                   Time);
     TRACE(str);
     m_sqliteDB.execQuery(str);
}
 
BOOL  CSimpleModeData::TempTableRead(CString strCarNo)
{
     CString str ;
     str.Format(_T( "select * from SimpleModeTempTable where CarNo = '%s'" ));
     TRACE(str);
 
     CppSQLite3Query  query = m_sqliteDB.execQuery(str);
     if (!query.eof())
     {
         wcscpy_s(CGlobal::g_TempTable.CarNo,20,query.fieldValue(1));
         wcscpy_s(CGlobal::g_TempTable.GoodsName,20 ,query.fieldValue(2));
         wcscpy_s(CGlobal::g_TempTable.Weight,20,query.fieldValue(3));
 
         return  TRUE;
     }
     query.finalize();
 
     return  FALSE;
}

十、软件重启

1
2
3
4
5
6
7
8
9
10
11
12
13
#include "windows.h"
#include "winioctl.h"
 
#define POWER_STATE_RESET       (DWORD)(0x00800000)
#define POWER_FORCE             (DWORD)(0x00001000)
 
extern   "C"    __declspec ( dllimport )   DWORD  SetSystemPowerState( LPCWSTR  pwsSystemState,
DWORD    StateFlags, DWORD    Options);
 
void  CtestDlg::OnBnClickedButton2()
{
     SetSystemPowerState(NULL, POWER_STATE_RESET, POWER_FORCE);
}

十一、字符串转浮点数
_tstof在WinCE中未实现,需要自己实现。如果转成double型可以如下:

1
2
3
4
5
double  StringToDouble( LPCTSTR  lpszSrc)
{
     TCHAR  * endptr;
     return  _tcstod(lpszSrc, &endptr);
}
















本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/197230  ,如需转载请自行联系原作者


相关文章
|
10月前
|
小程序
续:将基于Nasm汇编的打字小游戏,移植到DOSBox
前情提要 上一篇:【编程实践】黑框框里的打字小游戏,但是汇编语言-CSDN博客 在上一篇文章中我对这个小程序进行了介绍,但由于运行环境的安装比较复杂,估计没有谁会将我的代码跑起来,可那样实在是太遗憾了。学习过汇编语言的你大概率是使用过DOSBox的,为此我献祭了2小时的宝贵生命,成功地将代码在DOS上跑起来了。 如果对具体移植过程不感兴趣,可以直接跳到运行体验部分。
135 0
|
10月前
|
编译器 C语言 C++
C语言,C++编程软件比较(推荐的编程软件)
C语言,C++编程软件比较(推荐的编程软件)
116 1
|
9月前
|
Unix
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
184 0
|
Linux C语言
Linux下C语言编写贪吃蛇小游戏源码
Linux下C语言编写贪吃蛇小游戏源码
372 0
Linux下C语言编写贪吃蛇小游戏源码
|
IDE Linux Shell
C语言入门开发:Windows下安装vscode编写C语言代码
C语言入门开发:Windows下安装vscode编写C语言代码
365 0
C语言入门开发:Windows下安装vscode编写C语言代码
|
小程序 C语言
如何让朋友也能玩自己写的游戏(.exe文件如何附带静态链接库)C语言从入门到入土(入门特别篇)
第一步:项目 第二步:把MD(DLL)改为MTD​第三步:创建文件夹准备把文件放进去 第四步:找到你的游戏放在哪里的 第五步:把Debug里面的文件全部拖进你准备放的文件夹 第六步:压缩打包发送
如何让朋友也能玩自己写的游戏(.exe文件如何附带静态链接库)C语言从入门到入土(入门特别篇)
|
Linux 程序员 开发工具
Linux环境搭建 | 代码阅读神器——Sourceinsight
Linux环境搭建 | 代码阅读神器——Sourceinsight
1180 0
Linux环境搭建 | 代码阅读神器——Sourceinsight
|
C语言 Windows 存储
【C语言】学习笔记11——简单链表及多文件程序编译(windows下)
1. 在Windows下需要在一个工程project下才能进行多文件编译。用的IDE是Dev c++ 5.11   简单介绍:   .h 文件:主要是结构定义,函数签名, 每个 .h 文件必须有一个同名 .
1119 0
|
监控 JavaScript 前端开发