Microsoft MVP성태의 닷넷 이야기
안녕하십니까 루프안에서 메세지처리에 관하여 질문드립니다! [링크 복사], [링크+제목 복사],
조회: 6649
글쓴 사람
이건우 (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분
[이건우] 항상 감사합니다~ 좋은 한 주 되세요
[guest]

... [16]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5559최가운10/5/20218972C# debugging 중에 Thread Pool Worker들이 사라지는데요 [3]
5558옥코드9/29/20219236안녕하세요! EntityFramework Linq 질문 드리겠습니다. [4]
5557임기성9/16/20219765웹 사이트(IIS)가 오류로 인하여 빈번하게 죽는 이슈 문의 [1]
5556hjlee9/13/20218618visual studio 설치 없이 csi.exe (C# interactive) tool을 설치할 수 있을까요? [2]
5555이성열 donator9/2/20218291C# 런타임(Reflection)에서 소스코드에 입력한 함수설명(Summary)을 가져올 수 있을까요? [3]
5554농상9/2/20219312enum 원소값이 중복인 경우 출력 [4]
5553shdt...8/31/20217979제너릭을 new로 할당했는데 null인 경우가 존재하나요? [1]
5552hjsh...8/30/20218363C# 폼 - 마우스가 다른 버튼 위를 움직일 때도 폼의 페인트핸들러가 호출되는 것이 맞나요? [2]
5551하나다라마8/27/20218502뽀모도로 타이머 개선사항 [1]
5550하영8/27/20219650SqlDataReader 관련 질문입니다. [8]
5549책 감사...8/23/202111437C# 9.0 책 오타 [1]
5548Dev8/23/20219402String의 IndexOfAny 함수 질문 [3]
5547민성8/20/20218514WPF Radio 버튼을 GroupName으로 읽어와서 비교하기 [1]
5546Deve...8/19/20219343C++ C# API 연동 관련 [1]
5545영귤8/18/20218576C# 14.3장 예제에서 반환 값의 값 복사 부하가 어디서 발생하는 것인가요? [4]
5544이상호8/18/20218665C# Graphics 객체 저장 가능 여부 [2]
5543정형지8/18/20218482c# outofmemoryexception [3]
5542영귤8/11/202111689C#9.0 886쪽 오류 발생 안 해요 [2]
5541서지훈8/11/202112396C# 응용프로그램(Winform)의 비정상 종료(Exit Code) [2]
5540산들마을...8/11/20219088C# 많은 Control(Label 300개) Update 관련 문의 [2]파일 다운로드1
5539초초초촙8/9/20217857c# textbox 입력값이 다름 [1]파일 다운로드1
5538VS8/7/20218280vsmacros 확장자 파일을 사용하는 방법을 알 수 있을까요? [2]
5537민성8/6/20218597안녕하세요 WPF에서 이미 있는창이 있다면 안띠우게 하는 방법 [1]
55358/5/202110140안녕하세요. 초보 웹 개발자입니다. [10]파일 다운로드2
5534하영7/28/20218584clrprofiler 를 사용하여 세션정보 접근 [6]파일 다운로드1
5533함준혁7/20/20218167.net fpspread 관련 질문입니다.. [1]
... [16]  17  18  19  20  21  22  23  24  25  26  27  28  29  30  ...