WINCE中的一些常用代码
一、窗口全屏显示,去掉任务栏
//全屏显示//隐藏HHTaskBar窗口代码如下:HWNDhTaskBar=::FindWindow(TEXT("HHTaskBar"),NULL);if(hTaskBar!=NULL){::EnableWindow(hTaskBar,FALSE);::ShowWindow(hTaskBar,SW_HIDE);}intiFullWidth=GetSystemMetrics(SM_CXSCREEN);intiFullHeight=GetSystemMetrics(SM_CYSCREEN);::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,iFullWidth,iFullHeight,SWP_NOOWNERZORDER|SWP_SHOWWINDOW);
二、获取当前程序路径
CStringCscaleweightDlg::GetAppllicationPath(){WCHARbuff[255]={0};::GetModuleFileName(0,buff,255);CStringstrAppFullName;strAppFullName.Format(_T("%s"),buff);CStringstrAppPath=_T("");strAppPath=strAppFullName.Left(strAppFullName.ReverseFind('\\')+1);returnstrAppPath;}
三、加载字库
//加载字体CStringstrFontPath=GetAppllicationPath()+_T("msyh.ttf");if(NULL!=AddFontResource(strFontPath)){::SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);}else{AfxMessageBox(L"字体加载失败");}
程序退出时,卸载字库
CStringstrFontPath=GetApplicationPath()+_T("msyh.ttf");if(RemoveFontResource(strFontPath)){::SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);}elseAfxMessageBox(L"FailedtoUNLOADfont!");
四、加载位图用LoadImage无效
HBITMAPhBitmap=(HBITMAP)::SHLoadDIBitmap(szBitmapFile);
五、要以共享MFC的DLL库的方式发布程序,须将如下目录中DLL全部复制到目标机器上。
C:\ProgramFiles(x86)\MicrosoftVisualStudio8\VC\ce\Dll\armv4i
六、wchar_t*转char*
如,sCaption为 LPCTSTR类型字符串,要转成char *字符串,如下:
intnum=WideCharToMultiByte(CP_OEMCP,NULL,sCaption,-1,NULL,0,NULL,FALSE);char*pChar=newchar[num];WideCharToMultiByte(CP_OEMCP,NULL,sCaption,-1,pChar,num,NULL,FALSE);
七、字体平滑,需要修改注册表
HKEY_LOCAL_MACHINE\\System\\GDI\\ClearTypeDefault=2
八、不关闭屏幕,常期显示工作界面
//电源参数请求更新HANDLEhevReloadActivityTimeouts=OpenEvent(EVENT_ALL_ACCESS,FALSE,_T("PowerManager/ReloadActivityTimeouts"));if(hevReloadActivityTimeouts){SetEvent(hevReloadActivityTimeouts);CloseHandle(hevReloadActivityTimeouts);}
同时,在注册表中也要修改超时设置。
九、Sqlite数据库读写
voidCSimpleModeData::TempTableWrite(CStringCarNo,CStringstrWeight,CStringGoodsName,CStringTime){CStringstr;str.Format(_T("insertintoSimpleModeTempTable(CarNo,GoodsName,Weight,Time)\values('%s','%s','%s','%s')"),CarNo,strWeight,GoodsName,Time);TRACE(str);m_sqliteDB.execQuery(str);}BOOLCSimpleModeData::TempTableRead(CStringstrCarNo){CStringstr;str.Format(_T("select*fromSimpleModeTempTablewhereCarNo='%s'"));TRACE(str);CppSQLite3Queryquery=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));returnTRUE;}query.finalize();returnFALSE;}
十、软件重启
#include"windows.h"#include"winioctl.h"#definePOWER_STATE_RESET(DWORD)(0x00800000)#definePOWER_FORCE(DWORD)(0x00001000)extern"C"__declspec(dllimport)DWORDSetSystemPowerState(LPCWSTRpwsSystemState,DWORDStateFlags,DWORDOptions);voidCtestDlg::OnBnClickedButton2(){SetSystemPowerState(NULL,POWER_STATE_RESET,POWER_FORCE);}
十一、字符串转浮点数
_tstof在WinCE中未实现,需要自己实现。如果转成double型可以如下:
doubleStringToDouble(LPCTSTRlpszSrc){TCHAR*endptr;return_tcstod(lpszSrc,&endptr);}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。