TN024: MFC에서 정의한 메시지 및 리소스TN024: MFC-Defined Messages and Resources

참고

다음 기술 노트는 온라인 설명서에 먼저 포함되어 있었으므로 업데이트되지 않았습니다.The following technical note has not been updated since it was first included in the online documentation. 따라서 일부 절차 및 항목은 만료되거나 올바르지 않을 수 있습니다.As a result, some procedures and topics might be out of date or incorrect. 최신 정보를 보려면 온라인 설명서 색인에서 관심 있는 항목을 검색하는 것이 좋습니다.For the latest information, it is recommended that you search for the topic of interest in the online documentation index.

이 참고에서는 MFC에서 사용 하는 내부 Windows 메시지 및 리소스 형식을 설명 합니다.This note describes the internal Windows messages and resource formats used by MFC. 이 정보는 프레임 워크의 구현에 대해 설명 하 고 응용 프로그램을 디버깅 하는 데 도움이 됩니다.This information explains the implementation of the framework, and will assist you in debugging your application. 모험의 경우이 정보는 공식적으로 지원 되지 않지만 고급 구현에는이 정보 중 일부를 사용할 수 있습니다.For the adventurous, even though all this information is officially unsupported, you may use some of this information for advanced implementations.

이 메모는 MFC 개인 구현 세부 정보를 포함 합니다. 모든 콘텐츠는 나중에 변경 될 수 있습니다.This note contains MFC private implementation details; all the contents are subject to change in the future. MFC 개인 Windows 메시지는 한 응용 프로그램의 범위 내에서 의미가 있지만 나중에 시스템 차원의 메시지를 포함 하도록 변경 됩니다.MFC private Windows messages have meaning in the scope of one application only but will change in the future to contain system-wide messages.

MFC 개인 Windows 메시지 및 리소스 종류의 범위는 Microsoft Windows에서 별도로 설정 된 예약 된 "시스템" 범위에 있습니다.The range of MFC private Windows messages and resource types are in the reserved "system" range set aside by Microsoft Windows. 현재 범위의 모든 숫자가 사용 되는 것은 아닙니다. 앞으로는 범위의 새 숫자가 사용 될 수 있습니다.Currently not all numbers in the ranges are used and, in the future, new numbers in the range may be used. 현재 사용 되는 숫자가 변경 될 수 있습니다.The currently used numbers may be changed.

MFC 개인 Windows 메시지는 0x360->0x37F의 범위에 있습니다.MFC private Windows messages are in the range 0x360->0x37F.

MFC 개인 리소스 형식은 0->0xFF 범위에 있습니다.MFC private resource types are in the range 0xF0->0xFF.

MFC 전용 Windows 메시지MFC Private Windows Messages

이러한 Windows 메시지는 window 개체와 c + + 가상 함수가 적절 하지 않은 경우 비교적 느슨한 결합이 필요한 c + + 가상 함수 대신 사용 됩니다.These Windows messages are used in place of C++ virtual functions where relatively loose coupling is required between window objects and where a C++ virtual function would not be appropriate.

이러한 개인 Windows 메시지 및 연결 된 매개 변수 구조는 MFC 전용 헤더 ' AFXPRIV.H에 선언 됩니다. H '.These private Windows messages and associated parameter structures are declared in the MFC private header 'AFXPRIV.H'. 이 헤더를 포함 하는 코드는 문서화 되지 않은 동작에 의존 하 고 이후 버전의 MFC에서 중단 될 수 있다는 경고를 표시 합니다.Be warned that any of your code that includes this header may be relying on undocumented behavior and will likely break in future versions of MFC.

드문 경우 지만 이러한 메시지 중 하나를 처리 해야 하는 경우 ON_MESSAGE 메시지 맵 매크로를 사용 하 고 일반 LRESULT/WPARAM/LPARAM 형식의 메시지를 처리 해야 합니다.In the rare case of needing to handle one of these messages, you should use the ON_MESSAGE message map macro and handle the message in the generic LRESULT/WPARAM/LPARAM format.

WM_QUERYAFXWNDPROCWM_QUERYAFXWNDPROC

이 메시지는 생성 중인 창으로 전송 됩니다.This message is sent to a window that is being created. 이는 WndProc가 AfxWndProc 여부를 확인 하는 방법으로 만들기 프로세스의 초기에 전송 됩니다 . AfxWndProc 는 1을 반환 합니다.This is sent very early in the creation process as a method of determining if the WndProc is AfxWndProc. AfxWndProc returns 1.

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam 사용되지 않음Not used
lParamlParam 사용되지 않음Not used
다음을 반환합니다.returns AfxWndProc 에서 처리 되는 경우 11 if processed by AfxWndProc

WM_SIZEPARENTWM_SIZEPARENT

이 메시지는 크기를 조정 하는 동안 프레임 창에서 직계 자식으로 전송 되어 CFrameWnd::OnSize CFrameWnd::RecalcLayout CWnd::RepositionBars 프레임의 측면을 기준으로 컨트롤 막대의 위치를 변경 합니다.This message is sent by a frame window to its immediate children during resizing (CFrameWnd::OnSize calls CFrameWnd::RecalcLayout which calls CWnd::RepositionBars) to reposition the control bars around the side of the frame. AFX_SIZEPARENTPARAMS 구조체에는 다시 DeferWindowPos 그리기를 최소화 하기 위해 호출 하는 HDWP (NULL 일 수 있음)의 현재 사용 가능한 클라이언트 사각형이 포함 되어 있습니다.The AFX_SIZEPARENTPARAMS structure contains the current available client rectangle of the parent and a HDWP (which may be NULL) with which to call DeferWindowPos to minimize repainting.

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam 사용되지 않음Not used
lParamlParam AFX_SIZEPARENTPARAMS 구조체의 주소Address of an AFX_SIZEPARENTPARAMS structure
다음을 반환합니다.returns 사용 안 함 (0)Not used (0)

메시지를 무시 하면 창이 레이아웃에 포함 되지 않는다는 것을 나타냅니다.Ignoring the message indicates that the window doesn't take part in the layout.

WM_SETMESSAGESTRINGWM_SETMESSAGESTRING

이 메시지는 상태 표시줄에서 메시지 줄을 업데이트 하 라는 메시지를 표시 하기 위해 프레임 창으로 전송 됩니다.This message is sent to a frame window to ask it to update the message line in the status bar. 문자열 ID 또는 LPCSTR 중 하나만 지정할 수 있습니다.Either a string ID or a LPCSTR can be specified (but not both).

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam 문자열 ID (또는 0)String ID (or zero)
lParamlParam 문자열의 LPCSTR (또는 NULL)LPCSTR for the string (or NULL)
다음을 반환합니다.returns 사용 안 함 (0)Not used (0)

WM_IDLEUPDATECMDUIWM_IDLEUPDATECMDUI

이 메시지는 업데이트 명령 UI 처리기의 유휴 시간 업데이트를 구현 하기 위해 유휴 시간에 전송 됩니다.This message is sent in idle time to implement the idle-time update of update-command UI handlers. 창 (일반적으로 컨트롤 막대)이 메시지를 처리 하는 경우 CCmdUI 개체 (또는 파생 클래스의 개체)를 만들고 CCmdUI::DoUpdate 창에서 각 "항목"에 대해를 호출 합니다.If the window (usually a control bar) handles the message, it creates a CCmdUI object (or an object of a derived class) and call CCmdUI::DoUpdate for each of the "items" in the window. 그러면 명령 처리기 체인의 개체에 대 한 ON_UPDATE_COMMAND_UI 처리기가 검사 됩니다.This will in turn check for an ON_UPDATE_COMMAND_UI handler for the objects in the command-handler chain.

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam BOOL bDisableIfNoHandlerBOOL bDisableIfNoHandler
lParamlParam 사용 안 함 (0)Not used (0)
다음을 반환합니다.returns 사용 안 함 (0)Not used (0)

ON_UPDATE_COMMAND_UI 또는 ON_COMMAND 처리기가 모두 없는 경우 Bdisableifnohandler 는 0이 아닌 값으로 설정 됩니다.bDisableIfNoHandler is nonzero to disable the UI object if there is neither an ON_UPDATE_COMMAND_UI nor an ON_COMMAND handler.

WM_EXITHELPMODEWM_EXITHELPMODE

이 메시지는 상황에 맞는 CFrameWnd 도움말 모드를 종료 하기 위해에 게시 됩니다.This message is posted to a CFrameWnd that to exit context sensitive help mode. 이 메시지가 수신 되 면에서 시작한 모달 루프가 종료 CFrameWnd::OnContextHelp 됩니다.The receipt of this message terminates the modal loop started by CFrameWnd::OnContextHelp.

매개 변수 및 반환 값Parameter and return value 설명Description
wParamwParam 사용 안 함 (0)Not used (0)
lParamlParam 사용 안 함 (0)Not used (0)
다음을 반환합니다.returns 사용되지 않음Not used

WM_INITIALUPDATEWM_INITIALUPDATE

이 메시지는 문서 템플릿에서 초기 업데이트를 수행 하는 데 안전 하면 프레임 창의 모든 하위 항목에 전송 됩니다.This message is sent by the document template to all descendants of a frame window when it is safe for them to do their initial update. 에 대 한 호출에 매핑되고 CView::OnInitialUpdate CWnd 다른 단일 샷 업데이트의 경우 다른 파생 클래스에서 사용할 수 있습니다.It maps to a call to CView::OnInitialUpdate but can be used in other CWnd-derived classes for other one-shot updating.

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam 사용 안 함 (0)Not used (0)
lParamlParam 사용 안 함 (0)Not used (0)
다음을 반환합니다.returns 사용 안 함 (0)Not used (0)

WM_RECALCPARENTWM_RECALCPARENT

이 메시지는 레이아웃 다시 계산을 강제로 수행 하기 위해 뷰에서 부모 창에 전송 됩니다 ( GetParent 일반적으로 부모가 호출 됨) RecalcLayout .This message is sent by a view to its parent window (obtained via GetParent) to force a layout recalculation (usually, the parent will call RecalcLayout). 이는 보기의 총 크기가 증가 함에 따라 프레임 크기가 증가 해야 하는 OLE 서버 응용 프로그램에서 사용 됩니다.This is used in OLE server applications where it is necessary for the frame to grow in size as the view's total size grows.

부모 창에서이 메시지를 처리 하는 경우 TRUE를 반환 하 고 lParam에 전달 된 RECT를 클라이언트 영역의 새 크기로 채웁니다.If the parent window processes this message it should return TRUE and fill the RECT passed in lParam with the new size of the client area. CScrollView서버 개체가 활성화 되어 있을 때 스크롤 막대를 적절 하 게 처리 (추가 될 때 창 외부에 삽입) 하는 데 사용 됩니다.This is used in CScrollView to properly handle scrollbars (place then on the outside of the window when they are added) when a server object is in-place activated.

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam 사용 안 함 (0)Not used (0)
lParamlParam LPRECT rectClient, NULL 일 수 있습니다.LPRECT rectClient, may be NULL
다음을 반환합니다.returns 새 클라이언트 사각형이 반환 되 면 TRUE이 고, 그렇지 않으면 FALSE입니다.TRUE if new client rectangle returned, FALSE otherwise

WM_SIZECHILDWM_SIZECHILD

이 메시지는 COleResizeBar GetOwner 사용자가 크기 조정 핸들을 사용 하 여 크기 조정 막대의 크기를 조정할 때에서를 통해 소유자 창으로 전송 됩니다.This message is sent by COleResizeBar to its owner window (via GetOwner) when the user resizes the resize bar with the resize handles. COleIPFrameWnd 사용자가 요청한 대로 프레임 창의 위치를 변경 하 여이 메시지에 응답 합니다.COleIPFrameWnd responds to this message by attempting to reposition the frame window as the user has requested.

크기 조정 막대를 포함 하는 프레임 창에 상대적인 클라이언트 좌표에 지정 된 새 사각형은 lParam에서 가리킵니다.The new rectangle, given in client coordinates relative to the frame window which contains the resize bar, is pointed at by lParam.

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam 사용 안 함 (0)Not used (0)
lParamlParam LPRECT rectNewLPRECT rectNew
다음을 반환합니다.returns 사용 안 함 (0)Not used (0)

WM_DISABLEMODALWM_DISABLEMODAL

이 메시지는 비활성화 되는 프레임 창이 소유 하는 모든 팝업 창으로 전송 됩니다.This message is sent to all pop-up windows owned by a frame window that is being deactivated. 프레임 창에서는 결과를 사용 하 여 팝업 창을 사용 하지 않도록 설정할지 여부를 결정 합니다.The frame window uses the result to determine whether or not to disable the pop-up window.

프레임이 모달 상태로 들어가거나 특정 팝업 창을 사용 하지 않도록 설정할 때 팝업 창에서 특수 처리를 수행 하는 데 사용할 수 있습니다.You can use this to perform special processing in your pop-up window when the frame enters a modal state or to keep certain pop-up windows from getting disabled. 도구 설명 예를 들어 프레임 창이 모달 상태로 전환 될 때이 메시지를 사용 하 여 자신을 제거 합니다.Tooltips use this message to destroy themselves when the frame window goes into a modal state, for example.

매개 변수 및 반환 값Parameters and return value 설명Description
wParamwParam 사용 안 함 (0)Not used (0)
lParamlParam 사용 안 함 (0)Not used (0)
다음을 반환합니다.returns 창을 사용 하지 않도록 설정 하려면 0 이 아닌 값을 지정 합니다. 0은 창을 사용 하지 않도록 설정 합니다.Non-zero to NOT disable the window, 0 indicates the window will be disabled

WM_FLOATSTATUSWM_FLOATSTATUS

이 메시지는 다른 최상위 프레임 창에서 프레임을 활성화 하거나 비활성화 한 경우 프레임 창이 소유 하는 모든 팝업 창에 전송 됩니다.This message is sent to all pop-up windows owned by a frame window when the frame is either activated or deactivated by another top-level frame window. 이는 CMiniFrameWnd 최상위 프레임 창의 활성화와 동기화 된 이러한 팝업 창의 활성화를 유지 하기 위해에서 MFS_SYNCACTIVE를 구현 하는 데 사용 됩니다.This is used by the implementation of MFS_SYNCACTIVE in CMiniFrameWnd, to keep the activation of these pop-up windows in sync with the activation of the top level frame window.

매개 변수Parameters 설명Description
wParamwParam "Admin"Is one of the following values:

FS_SHOWFS_SHOW

FS_HIDEFS_HIDE

FS_ACTIVATEFS_ACTIVATE

FS_DEACTIVATEFS_DEACTIVATE

FS_ENABLEFS_DISABLEFS_ENABLEFS_DISABLE

FS_SYNCACTIVEFS_SYNCACTIVE
lParamlParam 사용 안 함 (0)Not used (0)

FS_SYNCACTIVE 설정 되 고 창이 부모 프레임을 사용 하 여 활성화를 syncronizes 경우 반환 값은 0이 아니어야 합니다.The return value should be non-zero if FS_SYNCACTIVE is set and the window syncronizes its activation with the parent frame. CMiniFrameWnd 스타일이 MFS_SYNCACTIVE로 설정 된 경우 0이 아닌 값을 반환 합니다.CMiniFrameWnd returns non-zero when the style is set to MFS_SYNCACTIVE.

자세한 내용은의 구현을 참조 하십시오 CMiniFrameWnd .For more information, see the implementation of CMiniFrameWnd.

WM_ACTIVATETOPLEVELWM_ACTIVATETOPLEVEL

이 메시지는 "최상위 그룹"의 창이 활성화 또는 비활성화 된 경우 최상위 창으로 전송 됩니다.This message is sent to a top-level window when a window in its "top-level group" is either activated or deactivated. 최상위 창 (부모 또는 소유자가 아님) 이거나 이러한 창이 소유 하 고 있는 경우 창이 최상위 그룹의 일부입니다.A window is part of a top-level group if it is a top-level window (no parent or owner), or it is owned by such a window. 이 메시지는 WM_ACTIVATEAPP 하는 데 사용 하는 것과 유사 하지만 서로 다른 프로세스에 속하는 창이 단일 창 계층 구조 (OLE 응용 프로그램에서는 일반)에서 혼합 되어 있는 경우에 작동 합니다.This message is similar in use to WM_ACTIVATEAPP, but works in situations where windows belonging to different processes are mixed in a single window hierarchy (common in OLE applications).

WM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODEWM_COMMANDHELP, WM_HELPHITTEST, WM_EXITHELPMODE

이러한 메시지는 상황에 맞는 도움말을 구현 하는 데 사용 됩니다.These messages are used in the implementation of context-sensitive Help. 자세한 내용은 Technical Note 28 을 참조 하십시오.Please refer to Technical Note 28 for more information.

MFC 전용 리소스 형식MFC Private Resource Formats

현재 MFC에서는 두 개의 개인 리소스 형식 RT_TOOLBAR 및 RT_DLGINIT을 정의 합니다.Currently, MFC defines two private resource formats: RT_TOOLBAR and RT_DLGINIT.

RT_TOOLBAR 리소스 형식RT_TOOLBAR Resource Format

응용 프로그램 마법사에서 제공 하는 기본 도구 모음은 MFC 4.0에 도입 된 RT_TOOLBAR 사용자 지정 리소스를 기반으로 합니다.The default toolbar supplied by AppWizard is based on an RT_TOOLBAR custom resource, which was introduced in MFC 4.0. 도구 모음 편집기를 사용 하 여이 리소스를 편집할 수 있습니다.You can edit this resource using the Toolbar editor.

RT_DLGINIT 리소스 형식RT_DLGINIT Resource Format

하나의 MFC 개인 리소스 형식을 사용 하 여 추가 대화 상자 초기화 정보를 저장 합니다.One MFC private resource format is used to store extra dialog initialization information. 여기에는 콤보 상자에 저장 된 초기 문자열이 포함 됩니다.This includes the initial strings stored in a combo box. 이 리소스의 형식은 수동으로 편집할 수 없지만 Visual C++에 의해 처리 됩니다.The format of this resource is not designed to be manually edited, but is handled by Visual C++.

리소스의 정보를 사용 하는 대신 API를 사용할 수 있기 때문에 Visual C++이 RT_DLGINIT 리소스는 MFC의 관련 기능을 사용 하는 데 필요 하지 않습니다.Visual C++ and this RT_DLGINIT resource are not required to use the related features of MFC since there are API alternative to using the information in the resource. Visual C++를 사용 하면 장기 실행에서 응용 프로그램을 더 쉽게 작성 하 고 유지 관리 하 고 변환할 수 있습니다.Using Visual C++ makes it much easier to write, maintain, and translate your application in the long run.

RT_DLGINIT 리소스의 기본 구조는 다음과 같습니다.The basic structure of a RT_DLGINIT resource is as follows:

+---------------+    \
| Control ID    |   UINT             |
+---------------+    |
| Message #     |   UINT             |
+---------------+    |
|length of data |   DWORD            |
+---------------+    |   Repeated
|   Data        |   Variable Length  |   for each control
|   ...         |   and Format       |   and message
+---------------+    /
|     0         |   BYTE
+---------------+

반복 되는 섹션에는 메시지를 보낼 컨트롤 ID, 보낼 메시지 (일반적인 Windows 메시지) 및 가변 길이 데이터가 포함 되어 있습니다.A repeated section contains the control ID to send the message to, the Message # to send (a normal Windows message) and a variable length of data. Windows 메시지는 다음과 같은 형식으로 전송 됩니다.The Windows message is sent in a form:

SendDlgItemMessage(<Control ID>, <Message #>, 0, &<Data>);

이것은 Windows 메시지 및 데이터 콘텐츠를 허용 하는 매우 일반적인 형식입니다.This is a very general format, allowing any Windows messages and data content. Visual C++ 리소스 편집기와 MFC는 Windows 메시지의 제한 된 하위 집합만 지원 합니다. 콤보 상자에 대 한 초기 목록 선택 (데이터는 텍스트 문자열)의 경우 CB_ADDSTRING 합니다.The Visual C++ resource editor and MFC only support a limited subset of Windows messages: CB_ADDSTRING for the initial list-choices for combo boxes (the data is a text string).

참고 항목See also

번호로 기술 참고 사항Technical Notes by Number
범주별 기술 참고 사항Technical Notes by Category