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  ,如需转载请自行联系原作者


相关文章
|
9月前
|
存储 C++ 内存技术
Keil5使用心得以及知识总结
Keil5使用心得以及知识总结
249 0
|
存储 数据可视化 安全
ucgui在嵌入式linux下的移植
ucgui在嵌入式linux下的移植
|
IDE 开发工具 Android开发
AndroidStudio是最难用的IDE,没有之一
AndroidStudio是最难用的IDE,没有之一
348 0
|
监控 JavaScript 前端开发