WindowsCEアプリケーション開発(EVCベース)


1

現在のプロセスの
HINSTANCE
HMODULE hModule =::GetModuleHandle(NULL);
HINSTANCE hInst = hModule;
 
2
、現在のプロセスの絶対パスを得る
GetModuleFileName()関数.この関数の最初のパラメータがNULLの場合、最後のWM_の発行を返します.CREATメッセージのファイルの絶対パス.
 
3
、ステータスバー上のアプリケーションのアイコンを手動で作成する
CreateStatusIcon関数は、CreateIconIndirectを呼び出して16 x 16アイコンを手動で作成することです.
 
4
、ポイント・ツー・ポイント・メッセージ・キューによるプロセス間通信
CreateMsgQueue();
OpenMsgQueue();
GetMsgQueueInfo();
ReadMsgQueue();
WriteMsgQueue();
CloseMsgQueue();
RequestDeviceNotifications();
 
5.taskbarを隠すいくつかの方法:
5.1フルスクリーン時非表示、フルスクリーン終了時表示、この場合はまずFindwindow(「HHTASKBAR」)を作成し、movewindowでフルスクリーン範囲外に移動し、必要に応じて移動する
5.2ずっと隠している(つまりシステムが立ち上がってからtaskbarを見たくない)、Findwindowとshowwindowで実現することもできるし、taskbarを修正することもできる.cpp(public/shell/oak/hpc/explorer/taskbar/)のCTaskBar::Register関数を直接trueに戻す
5.3ダイナミック表示と非表示でplatformを変更できます.regファイル
HKEY_LOCAL_MACHINESoftwareMicrosoftShellAutoHide("default"=dword:1)とHKEY_LOCAL_MACHINESoftwareMicrosoftShellOnTop(「default」=dword:0)およびHKEY_LOCAL_MACHINE\Software\Microsoft\Shell\SlideTaskBar("default"=dword:0)
 
6.ソフトウェアディスク操作の関数:
SipGetInfo(&si)
SipSetInfo(&si)
SipShowIM(SIPF_ON)
 
7.スタートアッププログラムを追加または削除するには:
ここでcpp(public/shell/oak/hpc/explorer/taskbar)ではstmenuDataという構造体配列に対してメンバーを追加または削除する
 
8.ストリームドライバレジストリのindex:
ドライバのプレフィックスprefixは3つの大文字で表され、indexはドライバのインデックスであることはよく知られています.アプリケーションでcreatefileでデバイスを開くと、この関数の最初のパラメータはprefixとindexの組み合わせです.
 
9.EVCでWebプログラムを開く
SHELLEXECUTEINFO   ShExecInfo   =   {0};   ShExecInfo.cbSize   =   sizeof(SHELLEXECUTEINFO);   ShExecInfo.fMask   =   SEE_MASK_NOCLOSEPROCESS;   ShExecInfo.hwnd   =   NULL;   ShExecInfo.lpVerb   =   NULL;   ShExecInfo.lpFile   =   TEXT("[url]http://www.163.com[/url]");                   ShExecInfo.lpParameters   =NULL;           ShExecInfo.lpDirectory   =   NULL;   ShExecInfo.nShow   =   SW_SHOWNORMAL;           ShellExecuteEx(&ShExecInfo);  
 
10.設備情報の取得
機器OEM情報を取得する:
TCHAR wszMachineName[128];SystemParametersInfo(SPI_GETOEMINFO, sizeof(wszMachineName),&wszMachineName, 0);
プラットフォーム情報の取得:
TCHAR wszVersion[256]; SystemParametersInfo(SPI_GETPLATFORMTYPE, sizeof(wszVersion),&wszVersion, 0);
 
11.wince画面の回転
Windows CE 4.0からは、DEVMODE構造に1つの属性dmDisplayOrientationが追加され、画面回転モードを取得または設定することができます.これに対応する値は次のとおりです.DMDO_0回転しないDMDO_90回転90度DMDO_180回転180度DMDO_270回転270度
画面回転モードの切り替えは、DEVMODE devmode={0};devmode.dmSize = sizeof(DEVMODE);devmode.dmDisplayOrientation = DMDO_90;//水平モードdmFields = DM_DISPLAYORIENTATION;ChangeDisplaySettingsEx(NULL, &devmode, NULL, 0, NULL);
現在のモードを取得するコードは以下の通りである:DEVMODE devmode={0};devmode.dmSize = sizeof(DEVMODE);devmode.dmFields = DM_DISPLAYORIENTATION;ChangeDisplaySettingsEx(NULL, &devmode, 0, CDS_TEST, NULL);devmodeを通ります.dmDisplayOrientationの値は、現在のモードを判断します.
このようにスイッチングモードは永続的ではなく,デバイスが再起動すると初期状態に戻ることに注目すべきである.切り替えた画面モードを保持する必要がある場合は、レジストリのHKEY_を設定します.LOCAL_MACHINESystemGDIRotationの2つのキー値はAngle-DWORD(0,90,180,270)LandscapeMode-DWORD(0,1)を実現する
 
12.スクリーンをコピーしてbmpピクチャとして保存する
void SaveDCToBMP(HDC hDC,int nStartX,int nStartY,int nWidth,int nHeight,LPCTSTR szFileName){//グラフィック色の深さint iPixel=32を定義する;
 //     
 LPBITMAPINFO lpbmih = new BITMAPINFO;
 lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
 lpbmih->bmiHeader.biWidth = nWidth;
 lpbmih->bmiHeader.biHeight = nHeight;
 lpbmih->bmiHeader.biPlanes = 1;
 lpbmih->bmiHeader.biBitCount = iPixel;
 lpbmih->bmiHeader.biCompression = BI_RGB;
 lpbmih->bmiHeader.biSizeImage = 0;
 lpbmih->bmiHeader.biXPelsPerMeter = 0;
 lpbmih->bmiHeader.biYPelsPerMeter = 0;
 lpbmih->bmiHeader.biClrUsed = 0;
 lpbmih->bmiHeader.biClrImportant = 0;
 //      
 HDC hdcMem;
 HBITMAP hBitMap = NULL;
 CBitmap *pBitMap = NULL;
 CDC *pMemDC = NULL;
 BYTE *pBits;
 hdcMem = CreateCompatibleDC(hDC);
 hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_PAL_COLORS,(void **)&pBits,NULL,0);
 pBitMap = new CBitmap;
 pBitMap->Attach(hBitMap);
 pMemDC = new CDC;
 pMemDC->Attach(hdcMem);
 pMemDC->SelectObject(pBitMap);
 
 pMemDC->BitBlt(0,0,nWidth,nHeight,CDC::FromHandle(hDC),nStartX,nStartY,SRCCOPY);
 BITMAPFILEHEADER bmfh;//     
 ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
 *((char *)&bmfh.bfType) = 'B';
 *(((char *)&bmfh.bfType) + 1) = 'M';
 bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
 bmfh.bfSize = bmfh.bfOffBits + (nWidth * nHeight) * iPixel / 8;
 int iBMPBytes = nWidth * nHeight * iPixel / 8;
 CFile file;
 if(file.Open(szFileName,CFile::modeWrite | CFile::modeCreate))
 {
  file.Write(&bmfh,sizeof(BITMAPFILEHEADER));
  file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER));
  file.Write(pBits,iBMPBytes);
  file.Close();
 }
 
 DeleteObject(hBitMap);
 DeleteObject(hDC);
 pMemDC->DeleteDC();
 delete pMemDC; pMemDC = NULL;
 delete pBitMap; pBitMap = NULL;
 delete lpbmih; lpbmih = NULL;
}
13.        
          
0409 // Enaglish US
0404 //
0804 //
   GetSystemDefaultLangID())  GetUserDefaultLangID()   
switch(GetSystemDefaultLangID()/*GetUserDefaultLangID()*/) {
case 0x0804:
break;
case 0x0404:
break;
case 0x0409:
break;
}