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분
[이건우] 항상 감사합니다~ 좋은 한 주 되세요
[guest]

1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5909guest4/22/20233830Visual Studio 구매 시(1인 개발자) [4]
5908guest4/22/20233661텅빈 원그리기 [5]
5907민성4/21/20233306안녕하세요 서버 백업 문제에 대해서 [2]
5906guest4/21/20233439Dispatcher 서비스 구현 질문 [1]
5905guest4/20/20233758tabControl의 tabPage가 여러 개일 때 순서를 바꾸기가 까다롭네요 [5]
5904guest4/18/20233689[신규자료첨부] DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [4]파일 다운로드1
5903guest4/18/20233136fileSystemWatcher 이벤트 관련 질문입니다 [2]
5902guest4/17/20233772c#으로 USB 관련 질문 [2]
5901guest4/17/20233332내솔루션 판매 시 1.0.0.0 폴더와 Sqlite 배포 [5]
5900guest4/17/20234509DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [2]파일 다운로드1
5899guest4/17/20233445Dictionary와 Linq [4]
5898차가워4/17/20233258CNTK 교육 문의 [1]
5897guest4/17/20233179Socket스레드와 UI thread [4]
5896HAN4/16/20233162c언어 return 에 대해 궁금한게 있어요. [1]파일 다운로드1
5895guest4/15/20232920Drag and Drop - 모든 컨트롤 [2]
5894송부장4/14/20234327[질문] Visual Studio 2022에서 '도구 상자 항목 선택'의 'COM 구성 요소' 탭에서 ActiveX 목록이 보이지 않습니다. [3]파일 다운로드2
5893감사합니...4/14/20232918오라클 OLEDB방식 접속 후 SELECT 'TEST' TEST_VALUE FROM DUAL의 값이 이상합니다. [1]
5892한무4/14/20233102C# 으로 백그라운드에서 워드를 실행하여 매크로 실행이 가능 할까요? [2]
5891리세4/14/20233004안녕하세요.C# 서버프로그램에서의 Mysql 쿼리문제(다중쿼리 실행)에 대해 문의드립니다. [2]
5890guest4/14/20233662C# 프리랜서로 돈 벌려면 성태님 책 마스터하면 되나요? [6]
5889전예찬4/14/20232840C# 파일 복사 관련 질문 드립니다. [3]
5888정경구4/12/20233125C# 첫 환경 세팅과 관련해서 [4]
5887HAN4/12/20232752안녕하세요 파이썬도 공유 가능 할까요? [1]
5886guest4/11/20233144필요한 어셈블리만 다운로드 및 재로딩하는 방법에 관하여 [2]
5885guest4/11/20232994c#으로 드림위버같은 거 만들어볼려는데요 [6]
5884궁금이4/11/20232868부모 클래스에서 예외 발생시 힙 영역에 할당 ? [2]
1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...