[MFC - C++] 함수 실행중 다른 함수 우선순위 넘기기 문의 드립니다.

pwy1575의 이미지


안녕하세요

1. MFC Dialog class 에서 버튼 클릭 이벤트로 함수를 호출하였습니다.

2. 호출된 함수가 완전 종료되기 이전에 타 클래스에서 PostMessage를 이용하여 Dlg에 메시지를 전송합니다.

3. 버튼클릭로 호출된 함수가 종료 되기 이전에는 Message로 호출한
ON_MESSAGE(PARK, &CModule_CM_TOOLDlg::OnReceive)
의 OnReceive 함수가 호출되지 않습니다.
추후 버튼클릭으로 인한 함수가 종료되면 호출이 되는것으로 보입니다.

4. 여기서 질문은 버튼 클릭 이벤트로 호출한 함수 내부에 MessageBox 함수를 호출하면 MessageBox가 호출되는 순간에
Message Queue에 들어온 Message가 처리 되어 OnReceive 함수를 호출하는걸 볼 수 있었습니다.(버튼 클릭으로 인한 함수가 종료 되기 이전에)

위와 같이 MessageBox를 호출하지 않고 메시지가 들어오면 우선적으로 처리 할 수 있는 방법이 없을까요?

감사합니다.

Anti-Lock의 이미지

PostMessage 와 SendMessage 의 차이점
검색해보세요.

shint의 이미지

- 다이얼로그의 종료 시점 확인 (F9 F10 F5 디버그 모드)
- 메시지를 전달 한 시점 확인
- 메시지를 전달 받은 시점 확인
- PostMessage() 함수의 인자값. 리턴값. 오류값 확인
- PostMessage() 함수가 전달 할 수 있는 메모리버퍼'와 갯수'에 한계를 초과 했는지 확인
- 사용자 정의 메시지 번호가 잘 정의 되어 있는지 확인. WM_USER + 1000
- 사용자 정의 메시지와 함수가 잘 연결 되어 있는지 확인.
- 컴파일이 제대로 되어 있는지 확인 (재빌드. debug. release. 32. 64. static. multi thread 등등)

//
- Event 를 사용하거나.
- Socket 통신을 사용하거나.
- CreateFileMapping() 등으로 파일이나. 메모리를 공유하는 방법도 있을겁니다.

//
모달리스 메시지 박스'를 사용하는 방법도 있을겁니다.
message box non modal
http://www.cplusplus.com/forum/windows/43982/

//
TRACE() 함수 : 255자 이상에 문자는 메모리 오류가 발생할 수 있으니. 주의해야 합니다.
OutputDebugString() 함수'로 Visual Studio 디버그 화면'에서 확인이 가능합니다.

//
printf() 함수로 메시지 확인 방법으로는 그냥 콘솔로 사용하셔도 됩니다.
AllocConsole();
FreeConsole();

MFC Console
https://www.google.co.kr/search?q=MFC+Console&oq=MFC+Console&aqs=chrome..69i57j0l5.4431j0j8&sourceid=chrome&ie=UTF-8

//
그냥. 잘되는 책과 사이트에 예제 소스를 참고 하는것이 좋습니다.

PostMessage - MSDN
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms644944(v=vs.85).aspx

PostMessage - 코드 프로젝트
https://www.codeproject.com/search.aspx?q=PostMessage&x=0&y=0&sbo=kw

PostMessage - 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=PostMessage

IPC - 코드구루
http://www.codeguru.com/cpp/w-p/system/sharedmemory/article.php/c2879/Shared-Memory-Inter-Process-Communication-IPC.htm

IPC Visual C - 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=IPC+Visual+C

Interprocess Communications - MSDN
https://msdn.microsoft.com/ko-kr/library/windows/desktop/aa365574(v=vs.85).aspx

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.