[참고] Touch Screen Driver Step (Calibation관련)  (W.E.E.G cafe)

http://cafe.naver.com/wincepro.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=3446



Touch Calibrate 구성..  (W.E.E.G cafe)

http://cafe.naver.com/wincepro/16185



Touch Screen Driver Development Concepts  (MSDN)

http://msdn.microsoft.com/en-us/windowsembedded//aa924519.aspx



Touch calibration restart (social.msdn)

http://social.msdn.microsoft.com/Forums/en-US/4a9c1786-9048-4330-b13a-eae2f7c9a48f/touch-calibration-restart?forum=winembplatdev



how do I force touch driver to use new calibration data? (social.msdn)

http://social.msdn.microsoft.com/Forums/en-US/49db94a3-4ded-4009-847f-2151957b043c/how-do-i-force-touch-driver-to-use-new-calibration-data?forum=winembplatdev



TouchPanelSetCalibration (Windows CE 5.0)

http://msdn.microsoft.com/en-us/library/aa448206.aspx


regedit.exe


Visual Studio 에서 어플리케이션을 개발하다 보면 변수/함수 등의 이름 자동 완성, Go to Declaration, Go to Definition 등의 기능을 하는 intellisense 가 매우 편리하다. 허나 플랫폼 빌더에서 BSP 개발 중에는 기본적으로 intellisense 가 동작하지 않는다.


플랫폼 빌더에서 intellisense 를 이용할 수 있는 방법을 공유한다.


'Solution Explorer' 에서 원하는 모듈(예를들어 C:/WINCE600/PLATFORM/MYBSP/SRC/DRIVERS/MYDRIVER )을 마우스 우클릭 한 후, 'Show in Favorites' 을 선택 한다. 그러면 'Solution Explorer'의 아랫쪽에 'Favorites' 항목에 해당 모듈이 추가된다. 이제 해당 소스를 다시 열면 intellisense 가 동작하는 것을 볼 수 있다.


BSP의 전체 소스를 한번에 favorites에 추가하는 것보다 한 모듈씩 추가하는 것을 추천한다.


출처 : http://developce.blogspot.kr/2009/03/intellisense-for-platform-builder.html



Windows CE의 standard shell 인 explorer.exe 를 실행 시키지 않으면 액티브싱크(Active Sync,Windows Mobile Device Center, 이하 액티브싱크)가 동작하지 않는다


[HKEY_LOCAL_MACHINE\init]

"Launch50"="explorer.exe"

"Depend50"=hex:14,00, 1e,00

해서 위 Registry 를 막고 custom Shell 이나 다른 어플을 실행시켰다면 액티브 싱크가 동작하지 않는다.



Custom Shell에서 액티싱크를 동작시키려면 ShellRegisterCallbacks 함수를 return 해야 한다는데... 잘 모르겠다.


\WINCE700\public\wceshellfe\oak\taskman\minserver.cpp 파일을 참고하면 될 듯....?




데스크탑에 연결할 때 마다 파트너쉽을 연결할 지 여부를 묻는 팝업창이 자꾸 뜨는데 귀찮다


BSP 작업 하다보면 어느순간 작업표시줄에 십여개의 노티가 떠있기도...


데스크탑에 아래 레지스트리를 수정해 주면 된다

  

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services]
"GuestOnly"=dword:00000001


#ifndef __WFUNCTION__

#define __WFUNCTION__               _T(__FUNCTION__)

#endif




개발 환경 
- Windows XP SP3
- Visual Studio 2005 Professional Edition SP1
- Windows Mobile 6.5.3 DTK


corelibc.lib(armsecgs.obj) : fatal error LNK1103: debugging information corrupt; recompile module

Build 시 위와 같은  에러 메시지가 나올 때 해결 방법


위의 HotFix를 설치한다.

Reference :


WM_CLOSE
윈도우가 닫히기 전에 전달되며 메인 윈도우인 경우는 응용 프로그램이 종료된다는 신호.
이 메시지가 전달 되었을 때는 아직 윈도우가 파괴되기 전이기 때문에 윈도우의 파괴를 중간에서 막을 수 있다. 작업중이던 파일이 저장되이 않았거나 프로그램을 종료하면 안되는 경우에 메시지 박스 등을 이용하여 이용자에게 확인 시킬 수 있다.



WM_DESTROY
윈도우가 파괴될 때 이 메시지가 전달된다.
WM_CLOSE 메시지를 별도로 처리하지 않으면 DefWindowProc은 DestroyWindow 함수를 호출하여 윈도우를 파괴한다. 윈도우가 파괴될 때 WM_DESTROY 메시지가 전달된다. 
 이 메시지를 받은 윈도우는 열어 놓은 파일을 닫고 할당한 메모리를 해제하는 등의 정리작업을 한다. WM_CREATE 에서의 초기화 처리의 반대 동작이 작성되는 것이 일반적이다.



WM_QUIT
WM_QUIT
응용 프로그램을 종료하라는 신호.
PostQuitMessage 함수 호출에 의해 발생하며 GetMessage 함수가 0을 리턴하도록 함으로써 메시지 루프를 종료시키는 역할을 한다.





사용자가 [X] 버튼을 클릭하면 WM_CLOSE  -> WM_DESTROY  -> WM_QUIT

#include "stdio.h"

int main()

{
    SYSTEMTIME stSt;

    // 그리니치 표준일시 얻기
    GetSystemTime(&stSt);

    printf("%04d-%02d-%02d %02d:%02d:%02d\n",
        stSt.wYear,
        stSt.wMonth,
        stSt.wDay,
        stSt.wHour,
        stSt.wMinute,
        stSt.wMinute);

    // 시스템의 현재 일시 얻기
    GetLocalTime(&stSt);

    printf("%04d-%02d-%02d %02d:%02d:%02d\n",
        stSt.wYear,
        stSt.wMonth,
        stSt.wDay,
        stSt.wHour,
        stSt.wMinute,
        stSt.wMinute);

    return;
}