天天看點

WINCE中的一些常用代碼

一、視窗全屏顯示,去掉工作列

<code>//全屏顯示</code>

<code>//隐藏HHTaskBar視窗代碼如下:       </code>

<code>HWND</code> <code>hTaskBar = ::FindWindow(TEXT(</code><code>"HHTaskBar"</code><code>), NULL);        </code>

<code>if</code> <code>(hTaskBar != NULL)       </code>

<code>{       </code>

<code>     </code><code>::EnableWindow(hTaskBar, FALSE);       </code>

<code>     </code><code>::ShowWindow(hTaskBar, SW_HIDE);       </code>

<code>}       </code>

<code>int</code> <code>iFullWidth  = GetSystemMetrics(SM_CXSCREEN);</code>

<code>int</code> <code>iFullHeight = GetSystemMetrics(SM_CYSCREEN);</code>

<code>::SetWindowPos(</code><code>this</code><code>-&gt;m_hWnd, HWND_TOPMOST, 0, 0, iFullWidth, iFullHeight,</code>

<code>    </code><code>SWP_NOOWNERZORDER|SWP_SHOWWINDOW);</code>

二、擷取目前程式路徑

<code>CString CscaleweightDlg::GetAppllicationPath()</code>

<code>{</code>

<code>    </code><code>WCHAR</code>  <code>buff[255]={0};</code>

<code>    </code><code>::GetModuleFileName(0,buff,255);</code>

<code>    </code><code>CString strAppFullName;</code>

<code>    </code><code>strAppFullName.Format(_T(</code><code>"%s"</code><code>),buff);</code>

<code>    </code><code>CString strAppPath = _T(</code><code>""</code><code>);</code>

<code>    </code><code>strAppPath = strAppFullName.Left(strAppFullName.ReverseFind(</code><code>'\\'</code><code>)+1);</code>

<code>    </code><code>return</code> <code>strAppPath;</code>

<code>}</code>

三、加載字庫

<code>//加載字型</code>

<code>    </code><code>CString strFontPath = GetAppllicationPath()+_T(</code><code>"msyh.ttf"</code><code>);</code>

<code>    </code><code>if</code> <code>(NULL != AddFontResource(strFontPath))</code>

<code>    </code><code>{</code>

<code>        </code><code>::SendMessage( HWND_BROADCAST, WM_FONTCHANGE, 0, 0);</code>

<code>    </code><code>}</code>

<code>    </code><code>else</code>

<code>        </code><code>AfxMessageBox(L</code><code>"字型加載失敗"</code><code>);</code>

程式退出時,解除安裝字庫

<code>CString strFontPath = GetAppllicationPath()+_T(</code><code>"msyh.ttf"</code><code>);</code>

<code>if</code><code>(RemoveFontResource(strFontPath))</code>

<code>    </code><code>::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);</code>

<code>else</code>

<code>    </code><code>AfxMessageBox(L</code><code>"Failed to UNLOAD font!"</code><code>);</code>

四、加載位圖用LoadImage無效

<code>HBITMAP</code>   <code>hBitmap = (</code><code>HBITMAP</code><code>)::SHLoadDIBitmap(szBitmapFile);</code>

五、要以共享MFC的DLL庫的方式釋出程式,須将如下目錄中DLL全部複制到目标機器上。

<code>C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\Dll\armv4i</code>

六、wchar_t*轉char*

如,sCaption為 LPCTSTR類型字元串,要轉成char *字元串,如下:

<code>int</code> <code>num = WideCharToMultiByte(CP_OEMCP, NULL, sCaption, -1, NULL, 0, NULL, FALSE);</code>

<code>char</code> <code>*pChar = </code><code>new</code> <code>char</code><code>[num];</code>

<code>WideCharToMultiByte(CP_OEMCP, NULL, sCaption, -1, pChar, num, NULL, FALSE);</code>

七、字型平滑,需要修改系統資料庫

<code>HKEY_LOCAL_MACHINE\\System\\GDI\\ClearType </code>

<code>Default=2</code>

八、不關閉螢幕,常期顯示工作界面

<code>//電源參數請求更新</code>

<code>HANDLE</code> <code>hevReloadActivityTimeouts =  OpenEvent(EVENT_ALL_ACCESS, FALSE,</code>

<code>                                      </code><code>_T(</code><code>"PowerManager/ReloadActivityTimeouts"</code><code>));</code>

<code>if</code> <code>(hevReloadActivityTimeouts) </code>

<code>    </code><code>SetEvent(hevReloadActivityTimeouts);</code>

<code>    </code><code>CloseHandle(hevReloadActivityTimeouts);</code>

同時,在系統資料庫中也要修改逾時設定。

九、Sqlite資料庫讀寫

<code>void</code> <code>CSimpleModeData::TempTableWrite(CString CarNo,CString strWeight,CString GoodsName, </code>

<code>CString Time)</code>

<code>    </code><code>CString str ;</code>

<code>    </code><code>str.Format(_T("insert into SimpleModeTempTable(CarNo,GoodsName,Weight,Time)\</code>

<code>                  </code><code>values(</code><code>'%s'</code><code>,</code><code>'%s'</code><code>,</code><code>'%s'</code><code>,</code><code>'%s'</code><code>)"),CarNo,strWeight,GoodsName,</code>

<code>                  </code><code>Time);</code>

<code>    </code><code>TRACE(str);</code>

<code>    </code><code>m_sqliteDB.execQuery(str);</code>

<code>BOOL</code> <code>CSimpleModeData::TempTableRead(CString strCarNo)</code>

<code>    </code><code>str.Format(_T(</code><code>"select * from SimpleModeTempTable where CarNo = '%s'"</code><code>));</code>

<code>    </code><code>CppSQLite3Query  query = m_sqliteDB.execQuery(str);</code>

<code>    </code><code>if</code><code>(!query.eof())</code>

<code>        </code><code>wcscpy_s(CGlobal::g_TempTable.CarNo,20,query.fieldValue(1));</code>

<code>        </code><code>wcscpy_s(CGlobal::g_TempTable.GoodsName,20 ,query.fieldValue(2));</code>

<code>        </code><code>wcscpy_s(CGlobal::g_TempTable.Weight,20,query.fieldValue(3));</code>

<code>        </code><code>return</code> <code>TRUE;</code>

<code>    </code><code>query.finalize();</code>

<code>    </code><code>return</code> <code>FALSE;</code>

十、軟體重新開機

<code>#include "windows.h"</code>

<code>#include "winioctl.h"</code>

<code>#define POWER_STATE_RESET       (DWORD)(0x00800000)</code>

<code>#define POWER_FORCE             (DWORD)(0x00001000)</code>

<code>extern</code>  <code>"C"</code>   <code>__declspec</code><code>(</code><code>dllimport</code><code>)  </code><code>DWORD</code> <code>SetSystemPowerState(</code><code>LPCWSTR</code> <code>pwsSystemState,</code>

<code>DWORD</code>   <code>StateFlags,</code><code>DWORD</code>   <code>Options);</code>

<code>void</code> <code>CtestDlg::OnBnClickedButton2()</code>

<code>    </code><code>SetSystemPowerState(NULL, POWER_STATE_RESET, POWER_FORCE);</code>

十一、字元串轉浮點數

_tstof在WinCE中未實作,需要自己實作。如果轉成double型可以如下:

<code>double</code> <code>StringToDouble(</code><code>LPCTSTR</code> <code>lpszSrc)</code>

<code>    </code><code>TCHAR</code> <code>* endptr;</code>

<code>    </code><code>return</code> <code>_tcstod(lpszSrc, &amp;endptr);</code>

<code></code>

本文轉自Chinayu201451CTO部落格,原文連結:http://blog.51cto.com/9233403/197230 ,如需轉載請自行聯系原作者