0060637
Visit Today : 119
This Month : 6158
Your IP Address: 3.235.172.213

mfc sendmessage 예제

이전 예제 코드로 이 것을 시도했지만 유니 코드 / ANSI 번역, 타이머 콜백 호출 등과 같은 다양한 문제가 있어이 메서드가 고려하지 않고 사소한 응용 프로그램을 제외한 모든 응용 프로그램을 중단 할 가능성이 큽니다. 그래서 그것을 시도 하, 하지만 실제 코드에서 그것을 하지 마십시오 🙂 이제 응용 프로그램에는 모든 메시지를 처리하는 큰 사례 문이 있는 함수가 있습니다. 예: 호출의 예는 FindWindow(NULL, my_window_title)입니다. 기본 사용으로 간단합니다. 그냥 예제 코드입니다. 그것은 충분히 분명하다. 각 윈도우 메시지에는 wParam 및 lParam의 매개 변수가 최대 두 개까지 있을 수 있습니다. 원래 wParam은 16 비트였고 lParam은 32 비트였지만 Win32에서는 모두 32 비트입니다. 모든 메시지가 이러한 매개 변수를 사용하는 것은 아니며 각 메시지는 매개 변수를 다르게 사용합니다. 예를 들어 WM_CLOSE 메시지도 사용하지 않으므로 둘 다 무시해야 합니다. WM_COMMAND 메시지는 둘 다 를 사용하며, wParam은 두 값을 포함하고, HIWORD(wParam)는 알림 메시지(해당하는 경우)이고 LOWORD(wParam)는 메시지를 보낸 컨트롤 또는 메뉴 ID이다.

lParam은 메시지가 컨트롤에서 온 것이 아닌 경우 메시지 또는 NULL을 보낸 컨트롤에 대한 HWND(창 핸들)입니다. 이 코드 조각에서는 C ++ Windows 유형 응용 프로그램 간에 정보를 보내는 방법에 대한 솔루션을 제공합니다. 두 응용 프로그램 간에 특정 정보를 전달해야 하는 상황이 있었습니다. 이 경우 windows 응용 프로그램의 한 인스턴스에서 동일한 응용 프로그램의 다른 인스턴스로 명령줄 인수를 전달해야 했습니다. 따라서 응용 프로그램의 주요 인스턴스인 먼저 열린 인스턴스는 두 번째 명령줄 인수를 알 수 있습니다. 한 인스턴스에서 다른 인스턴스로 정보를 보내려면 Windows.h 헤더가 필요한 SendMessage 함수를 사용해야 합니다. 호출의 예로는 SendMessage(main_window_handle, WM_ID, 0, LPARAM(„보내고 싶은 정보”)가 있습니다. 이 예제에서는 두 번째 인스턴스에서 받은 정보가 포함된 메시지 상자만 표시됩니다. 중요: GetMessage()는 오류가 발생하면 -1을 반환합니다. 당신이 이것을 기억해야, 또는 그것은 어떤 시점에서 당신을 잡을 것입니다 … GetMessage()는 BOOL을 반환하는 것으로 정의되어 있지만 BOOL이 UINT(서명되지 않은 int)로 정의되므로 TRUE 또는 FALSE 이외의 값을 반환할 수 있습니다.

다음은 작동 할 수 있지만 특정 조건을 올바르게 처리하지 않는 코드의 예입니다: 이것은 COPYDATASTRUCT를 사용하여 정보를 참조하는 방법의 예입니다: WM_PAINT 메시지를 처리하느라 바쁘고 갑자기 사용자가 키보드에 물건의 무리. 어떻게 해야 할까요? 키를 처리하기 위해 드로잉에서 중단되어야합니까 아니면 키를 버려야합니까? 잘못! 물론 이러한 옵션 중 어느 것도 합리적이지 않으므로 메시지 큐가 있고 메시지가 게시될 때 메시지가 메시지 큐에 추가되고 처리하면 제거됩니다. 이렇게하면 메시지를 처리하는 경우 다른 메시지가 도착할 때까지 큐에 대기됩니다. 1.2 클래스 CTest_SDIApp(CWinApp의 파생)의 멤버 함수는 CMainFrame에 메시지를 보내고 CTest_SDIView(CView 파생)에 메시지를 보내는 클래스 CMainFrame의 자체 작성 멤버 함수를 호출합니다.