Microsoft MVP성태의 닷넷 이야기
글쓴 사람
이건우 (rjsdn101 at naver.com)
홈페이지
첨부 파일
 

안녕하세요 성태님 일전에 dll관련 질문드렸던 이건우입니다
다름아니라 사인패드에 연결하고 사용자의 패드입력을 기다리는 동안 윈폼에 입력된 메세지들을 처리하는데 문제가 생겼습니다.
기존의 C++에서 작성된 소스입니다. 예제 프로젝트를 첨부하기가 어려운상황이라 죄송합니다.. 문제가 되면 글 삭제해주시면 감사하겠습니다.
bool bDone = false;
MSG msg;
while(!iDone)
{
  //사인패드API가 사용자가 확인이나 취소를 할경우 bDone이 true가 되어 루프탈출하는 소스부분 이후 메세지처리

  while(PeekMessage(&msg, NUL, 0, 0, PM_REMOVE)) //메세지꺼내옴
  {
      if(msg,message == WM_QUIT)
      {
           bDone = true;
      }
      else
      {
           TransLateMessage(&msg); //키보드메세지를 WM_CHAR로 변경
           DispatchMessage(&msg); //윈도우프로시저에 메세지를 보낸다
      }
  }
}
기능을 보자면 WM_QUIT 이외에 메시지가 메시지 큐에 있었다면 메시지를 처리하고 큐에서 제거하는것으로 보입니다. WM_QUIT 메세지면 루프 종료이구요.
이를 C#에서 구현해보려고 찾아보니 System.Windows.Forms.Application.DoEvents(); 을 발견했는데
둘이 똑같이 동작하는지 WM_QUIT 체크부분이 빠지고 메세지를 처리하는지 궁금합니다. 질문을 정리해보겠습니다.

1. C++의 구현부와 C#의 DoEvents() 가 같은 동작을 기대해도 될까요?

2. 같은 동작을 기대하기 어렵다면 일전의 PInvoke를 통해 peekmessage , translatemessage 등을 가져와서 처리해도 될까요?



      








[최초 등록일: ]
[최종 수정일: 1/2/2023]


비밀번호

댓글 작성자
 



2023-01-02 07시32분
1. 아주 동일하진 않지만 대충 비슷하게는 맞습니다.
2. 어디까지 같은 것을 원하는 것인지를 알 수 없어 100% 확신을 드릴 수는 없지만, 만약 원하는 결과가 나오지 않는다면 어차피 P/Invoke 호출이 어렵지 않으니 그냥 메시지 루프 API를 직접 호출해도 되지 않을까요?

그다지, 어려운 선택의 문제는 아닐 것입니다.
정성태
2023-01-03 09시45분
[이건우] 항상 감사합니다~ 좋은 한 주 되세요
[손님]

1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5839손님3/2/2023271윈도우 서비스 프로그램 - FORM 애플리케이션 감시서비스 [8]
5838랄랄라3/1/2023171event 사용 시 두 표현의 차이점이 있을까요? [1]
5837감사...2/28/2023125오라클 DB서버 접속관련 문의 드립니다.(Load Balancing, HA Events) [2]
5836박지범2/27/2023202static instance의 initialize 순서가 보장되나요? [6]
5835주민호2/25/2023278Windows Software Development Kit - 최신버전 1개 남기고 다 삭제하면 안되는지요? [10]파일 다운로드1
5834손님2/24/2023184Python IDE - 비주얼스튜디오 [2]
5833무지남2/23/2023188Async 메서드 그리고 나서 Bool 메서드 [5]
5832김지우2/21/2023290event와 delegate의 차이 , event를 써야하는 이유 [1]
5831이우람2/20/2023358ref 전역변수가 pinned가 될수 있나요? [2]
5830냉수...2/19/2023317C# GridView에 Column별 데이터 추가하는 방법에 대해 [1]
5829수박...2/19/2023338키움 API를 윈폼과 WPF의 네임스페이스 없이 콘솔이나 WinUI3에서 사용할 수 있는 방법이 있나요? [2]파일 다운로드1
5828김재영2/19/2023347장기적으로는 this 구문을 안쓰는게 맞을까요? [2]
5827lee2/18/2023277파이썬 설치 오류 질문입니다 [1]
5826Sy...2/14/2023449Socket 관련 Leak (OverlappedAsyncResult, OverlappedData) 관련 문의 [7]파일 다운로드1
5825박성원2/14/2023295Listview 컨트롤의 화면 전환 시 갱신 속도 [1]
5823검은콩2/13/2023355catch(Exception ex)의 line번호를 쉽게 알 수 없는지요? [7]
5822김지우2/11/2023378책을 보면서 sync, async 이해가 되지 않는 부분이 있습니다. [5]파일 다운로드2
5821검은콩2/9/2023347Async 신뢰성과 소켓데이터 [4]
5820차가워2/8/2023334다른 프로세스 실행 후 포커스 가져오기 [3]
5819취준생2/7/2023488WPF 관련 실무가 궁금합니다. [3]
5818윤길2/7/2023314ObservableCollection 에서 INotifyPropertyChanged 구현해야하나요? [2]
5817흰털...2/7/2023301배포 시 winform 실행 콘솔로그 보는 방법 [1]
5816흰털...2/6/2023286.net core json array validation 질문 드립니다. [1]
5815김재영2/6/2023278종단간 암호화에 대해 시나리오인데 타당한 시나리오일까요? [2]
5814한예지2/6/2023341decompile? [9]
5813김재영2/5/2023264openssl genrsa 2048시 키 생성이 다르게 됩니다. - 파일첨부 [4]파일 다운로드1
1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...