일단 조이스틱, 마우스, 키보드의 일정 값들을 산술화 하는 테스트 프로그램을 FLTK 로 제작 중 이었습니다만, 이게 왠걸 ... DriectX 의 DInput 에 SetCooperativeLevel() 에서 계속 실패가 나는 것 이었습니다.
대체 왜 이러나 하고 보니, ( Process Hacker 사용 )
엄? FLTK 에서 fl_xid( window ); 로 가져 온 HWND 와 실제 FLTK 에서 사용하고 있는 HWND 가 다릅니다.... 대체 저건 어디서 나온 값이지 ...
그래서 이전에 만든 FLTK 조이스틱 테스트 하는걸 보면, 이건 또 fl_xid() 로 정상인 HWND 를 넘겨 줍니다 ... 대체 왜 ?? 왜 ?? 왜 ??
아마 FLTK 에서 2개 이상의 window를 생성 하고 있는 상태에서 fl_xid() 로 가져오면 뭔가 잘못된 값을 가져 오는거 같기도 합니다만, 원인을 분석 할 여유는 없어 보였습니다.
그래서 다음과 같이 바꿧습니다.
HWND hCurWin = GetWinHandle( GetCurrentProcessId() );
여기서 사용된 GetWinHandle() 라는건 다음과 같이 구현 되었습니다.
HWND GetWinHandle(ULONG pid)
{
HWND hTmp = FindWindow( NULL, NULL );
while( hTmp != NULL )
{
if( GetParent(hTmp) == NULL )
{
if( pid == ProcIDFromWnd( hTmp ) )
{
return hTmp;
}
}
hTmp = GetWindow( hTmp, GW_HWNDNEXT );
}
return NULL;
}
근본적인 문제를 해결 하고 싶지만 당장은 여유가 없는 관계로 다음으로 미뤄야 겠습니다만, 의아한 부분 입니다...