WinAPI 사용자 정의 메시지

야민·2023년 3월 31일
0

OS 메시지
1 - 400

윈도우 사용자정의 메시지
401 - 8000

외부 메시지 - 프로그램간 통신
8000 - C000

메시지 번호
C000 - 10000

예비용
10000 - 41억

#define WM_SORI WM_USER+1
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR *Mes=TEXT("마우스 왼쪽 버튼을 누르면 WM_SORI메시지를 전달합니다.");
	int i;
	RECT rt;
	switch (iMessage) {
	case WM_LBUTTONDOWN:
		SendMessage(hWnd,WM_SORI,0,0);
		return 0;
	case WM_SORI:
		hdc=GetDC(hWnd);
		MessageBeep(0);
		SelectObject(hdc,GetStockObject(NULL_BRUSH));
		for (i=0;i<100;i+=5) {
			Ellipse(hdc,200-i,200-i/2,200+i,200+i/2);
			Sleep(10);
		}
		Sleep(100);
		SetRect(&rt,100,100,300,300);
		FillRect(hdc,&rt,(HBRUSH)GetStockObject(WHITE_BRUSH));
		ReleaseDC(hWnd,hdc);
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,50,50,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

윈도우 사용자정의 메시지

사용자 정의 메시지를 사용해 다른 프로그램에 메시지를 보내는 방법

	TCHAR *Mes=TEXT("UserMes 프로그램에게 메시지를 보냅니다");
    
    // skip
    
	case WM_LBUTTONDOWN:
		// 캡션으로 구분
		hWndSori=FindWindow(NULL,TEXT("UserMes"));
		if (hWndSori==NULL) {
			MessageBox(hWnd,TEXT("UserMes 프로그램이 실행되어 있지 않습니다"),
				TEXT("이럴수가"),MB_OK);
		} else {
			SendMessage(hWndSori,WM_SORI,0,0);
		}
		return 0;

0개의 댓글