2013-06-25 3 views
1

이것은 아마도 어리석은 질문이지만 여기에 있습니다.명령 기반 컴파일러로 Windows 메시지와 상호 작용

드라이버 API와 상호 작용한다고 가정합니다. 당신은 C를 사용하고 명령 프롬프트를 통해 전적으로하고 있습니다. GUI가 없습니다. 이러한 파일에서 Windows 메시지를 수신하고 처리 할 수 ​​있습니까?

나는 모든 곳에서 Windows 핸들을 NULL로 사용하고 있음을 의미합니다. 이것이 가능하거나 심지어 의미가 있는지 나는 모른다.

답변

2

는 스레드의 모든 창 필요하지 않습니다 GetMessage 함수 또는를 PeekMessage를 사용하려면 http://msdn.microsoft.com/en-us/library/ms644946%28v=vs.85%29.aspx

메시지가 PostThreadMessage 실패에 메시지 큐, 또는 다른 전화를 작성해야합니다 게시되는 스레드 .

이 상황을 처리하려면 다음 방법을 사용하십시오.

이벤트 객체를 만든 다음 스레드를 으로 만듭니다.

WaitForSingleObject 함수를 사용하여 PostThreadMessage를 호출하기 전에 이벤트가 신호 상태로 설정 될 때까지 대기합니다.

를 PeekMessage (& MSG, NULL, WM_USER, WM_USER, PM_NOREMOVE) : 스레드에서

는 메시지가 게시되는 데, 상기 메시지 큐를 생성하는 시스템을 강제로 여기에 도시 로를 PeekMessage 전화 > 이벤트가 으로 설정되어 스레드가 게시 된 메시지를받을 준비가되었음을 나타냅니다. 메시지가 게시 된 스레드는 GetMessage 또는 PeekMessage 함수를 호출하여 메시지를 검색합니다. 반환 된 의 hwnd 멤버는 NULL입니다.

+1

그리고'console'과'gui' 서브 시스템에 대해 약간의 내용을 읽으십시오. GUI 하위 시스템을 사용하려고합니다. – ixe013