Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

ON_REGISTERED_MESSAGE

DarkKaiser, 2010년 5월 27일2023년 9월 6일

다른 프로그램과 메세지를 주고 받는 방법중의 한 가지…

RegisterWindowMessage 함수를 사용하는 경우는 아래와 같이 메세지를 등록한다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
UINT nRegMsg = RegisterWindowMessage("My Message");
UINT nRegMsg = RegisterWindowMessage("My Message");
UINT nRegMsg = RegisterWindowMessage("My Message");

여기서 입력으로 들어가는 “My Message” 라는 문자열은 메세지를 서로 주고 받기로 한 프로그램간에 서로 약속한 문자열입니다. 이 함수는 메세지를 송신하는쪽이나, 메세지를 수신하는 쪽이나 모두 수행해야 합니다.

메세지가 등록되어 송수신 준비가 되면 SendMessage 또는 PostMessage 함수로 메세지를 전송하면 됩니다.
이때 메세지가 다른 프로그램으로 전달이 되게 하려면 SendMessage 또는 PostMessage함수의 첫번째 입력 인수로 반드시 HWND_BROADCAST를 지정해야 합니다. 그렇지 않으면 다른 프로그램으로 메세지가 전송되지 않습니다. 이때 wParam, lParam을 이용해서 각각 2Byte와 4Byte의 추가적인 정보를 전달할 수 있습니다.

즉 ::PostMessage(HWND_BROADCAST, nRegMsg, (WPARAM)m_hWnd, (LPARAM)0);
이런식으로 사용하면 됩니다.

메세지를 수신하려는 쪽은 다음의 코드를 추가하면 됩니다.

즉 RegisterWindowMessage로 등록된 메시지를 받을때는 ON_REGISTERED_MESSAGE 매크로를 사용합니다.

즉 ON_REGISTERED_MESSAGE(nRegMsg, OnMessageFunc) 이런 식으로 메세지 수신을 처리하는 함수를 등록해 줍니다. 그리고 이 처리함수에서 메세지 수신을 처리하면 됩니다.

메세지 처리 함수는 다음과 같은 형식을 가집니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
LRESULT MyClass::OnMessageFunc(WPARAM wParam, LPARAM lParam)
{
// 작업 코드
return 0;
}
LRESULT MyClass::OnMessageFunc(WPARAM wParam, LPARAM lParam) { // 작업 코드 return 0; }
LRESULT MyClass::OnMessageFunc(WPARAM wParam, LPARAM lParam)
{
    // 작업 코드
    return 0;
}
C/C++/VC++

글 내비게이션

Previous post
Next post

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    Assert() CImage CVS cvsnt DefaultTraceListener eclipse Generic Git MDI new OSI 7 layer pragma setPoperty snoopspy std::auto_ptr STL STLFit STLPort synchronized TCP/IP Thread UNICODE useBean volatile watch WinSXS XP테마 기하학 날짜 드라이브 디버깅 마스크 버그트래킹시스템 상수 설치프로젝트 스레드 시간 실용주의 자바빈즈 캡쳐 탭 트랜젝션 형변환 후킹 히스토그램

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2025 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes
    DarkKaiser의 블로그
    DarkKaiser의 블로그
    • 개발 관련 자료(노션)
    • Raspberry Pi(노션)
    • WD My Cloud(노션)
    • GitHub