LRESULT SendMessage( HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam );hWnd にはメッセージを受け取るウィンドウのハンドルを指定します
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
	switch (msg) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	case WM_LBUTTONDOWN:
		SendMessage(hwnd , WM_CLOSE , 0 , 0);
		return 0;
	}
	return DefWindowProc(hwnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
			PSTR lpCmdLine , int nCmdShow ) {
	HWND hwnd;
	MSG msg;
	WNDCLASS winc;
	winc.style		= CS_HREDRAW | CS_VREDRAW;
	winc.lpfnWndProc	= WndProc;
	winc.cbClsExtra	= winc.cbWndExtra	= 0;
	winc.hInstance		= hInstance;
	winc.hIcon		= LoadIcon(NULL , IDI_APPLICATION);
	winc.hCursor		= LoadCursor(NULL , IDC_ARROW);
	winc.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);
	winc.lpszMenuName	= NULL;
	winc.lpszClassName	= TEXT("KITTY");
	if (!RegisterClass(&winc)) return -1;
	hwnd = CreateWindow(
			TEXT("KITTY") , TEXT("Kitty on your lap") ,
			WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			NULL , NULL , hInstance , NULL
	);
	if (hwnd == NULL) return -1;
	while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);
	return msg.wParam;
}
このプログラムを実行して、ウィンドウのクライアント領域をBOOL PostMessage( HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam );hWnd には、メッセージを受け取るウィンドウのハンドルを指定します
| 定数 | 解説 | 
|---|---|
| HWND_BROADCAST | すべてのトップレベルウィンドウにメッセージをポストします 子ウィンドウにはポストしません | 
| NULL | dwThreadId パラメータに現在のスレッドの ID を設定して PostThreadMessage() 関数を呼び出したかのように動作します | 
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
	HDC hdc;
	int iWidth , iHeight;
	switch (msg) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	case WM_LBUTTONDOWN:
		PostMessage(hwnd , WM_RBUTTONDOWN , wp , lp);
		hdc = GetDC(hwnd);
		SelectObject(hdc , GetStockObject(BLACK_BRUSH));
		Rectangle(hdc , 200 , 50 , 500 , 200);
		ReleaseDC(hwnd , hdc);
		return 0;
	case WM_RBUTTONDOWN:
		hdc = GetDC(hwnd);
		for (iHeight = 0 ; iHeight < 400 ; iHeight++) 
			for (iWidth = 0 ; iWidth < 400 ; iWidth++)
				SetPixel(hdc , iWidth , iHeight , 255);
		ReleaseDC(hwnd , hdc);
		return 0;
	}
	return DefWindowProc(hwnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
			PSTR lpCmdLine , int nCmdShow ) {
	HWND hwnd;
	MSG msg;
	WNDCLASS winc;
	winc.style		= CS_HREDRAW | CS_VREDRAW;
	winc.lpfnWndProc	= WndProc;
	winc.cbClsExtra	= winc.cbWndExtra	= 0;
	winc.hInstance		= hInstance;
	winc.hIcon		= LoadIcon(NULL , IDI_APPLICATION);
	winc.hCursor		= LoadCursor(NULL , IDC_ARROW);
	winc.hbrBackground	= (HBRUSH)GetStockObject(WHITE_BRUSH);
	winc.lpszMenuName	= NULL;
	winc.lpszClassName	= TEXT("KITTY");
	if (!RegisterClass(&winc)) return -1;
	hwnd = CreateWindow(
			TEXT("KITTY") , TEXT("Kitty on your lap") ,
			WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			CW_USEDEFAULT , CW_USEDEFAULT ,
			NULL , NULL , hInstance , NULL
	);
	if (hwnd == NULL) return -1;
	while(GetMessage(&msg , NULL , 0 , 0)) DispatchMessage(&msg);
	return msg.wParam;
}

LRESULT SendMessage( HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam );メッセージを一つ、または複数のウィンドウに送ります
BOOL PostMessage( HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam );メッセージを一つ、または複数のウィンドウに関連付けられた