Aşağıdaki örnek çok basit bir kelime işlemci işlevine sahip bir çok satırlı düzenleme denetimi bir pencerenin istemci alanı doldurarak uygular. Sistem otomatik olarak sözcük kaydırma işlemleri için bu düzenleme denetimi gerçekleştirir ve ayrıca ( Cw_usedefault işlevi çağrısı es_autovscroll belirterek oluşturulan) dikey kaydırma çubuğu için işleme. wm_command mesaj menü öğeleri işler; onlar önceki eylemi geri almak kullanıcının izin kesmek veya seçim Pano'ya kopyalayın, Metni Pano'dan yapıştırmak ve geçerli seçimi silme.
LONG APIENTRY MainWndProc(
HWND hwnd, // window handle
UINT message, // type of message
WPARAM wParam, // additional information
LPARAM lParam) // additional information
{
static HWND hwndEdit;
CHAR lpszTrouble[] = "When in the Course of human Events "
"it becomes necessary for one People "
"to dissolve the Political Bands which "
"have connected them with another, and "
"to assume among the Powers of the "
"Earth, the separate and equal Station "
"to which the Laws of Nature and of "
"Nature's God entitle them, a decent "
"Respect to the Opinions of Mankind "
"requires that they should declare the "
"causes which impel them to the "
"Separation. ";
switch (message)
{
case WM_CREATE:
hwndEdit = CreateWindow(
"EDIT", // predefined class
NULL, // no window title
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
0, 0, 0, 0, // set size in WM_SIZE message
hwnd, // parent window
(HMENU) ID_EDITCHILD, // edit control ID
(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
NULL); // pointer not needed
// Add text to the window.
SendMessage(hwndEdit, WM_SETTEXT, 0,
(LPARAM) lpszTrouble);
return 0;
case WM_COMMAND:
switch (wParam)
{
case IDM_EDUNDO:
// Send WM_UNDO only if there is something
// to be undone.
if (SendMessage(hwndEdit, EM_CANUNDO, 0, 0))
SendMessage(hwndEdit, WM_UNDO, 0, 0);
else
{
MessageBox(hwndEdit,
"Nothing to undo.",
"Undo notification", MB_OK);
}
break;
case IDM_EDCUT:
SendMessage(hwndEdit, WM_CUT, 0, 0);
break;
case IDM_EDCOPY:
SendMessage(hwndEdit, WM_COPY, 0, 0);
break;
case IDM_EDPASTE:
SendMessage(hwndEdit, WM_PASTE, 0, 0);
break;
case IDM_EDDEL:
SendMessage(hwndEdit, WM_CLEAR, 0, 0);
break;
case IDM_PASSWORD:
DialogBox(hinst, // current instance
"PassBox", // resource to use
hwnd, // parent handle
(DLGPROC) PassProc);
break;
case IDM_WRAP:
SendMessage(hwndEdit,
EM_SETWORDBREAKPROC,
(WPARAM) 0,
(LPARAM) (EDITWORDBREAKPROC) WordBreakProc);
SendMessage(hwndEdit,
EM_FMTLINES,
(WPARAM) TRUE,
(LPARAM) 0);
SendMessage(hwndEdit,
EM_SETSEL,
0, -1); // select all text
SendMessage(hwndEdit, WM_CUT, 0, 0);
SendMessage(hwndEdit, WM_PASTE, 0, 0);
break;
case IDM_ABOUT:
DialogBox(hinst, // current instance
"AboutBox", // resource to use
hwnd, // parent handle
(DLGPROC) About);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
break;
case WM_SETFOCUS:
SetFocus(hwndEdit);
return 0;
case WM_SIZE:
// Make the edit control the size of the window's
// client area.
MoveWindow(hwndEdit,
0, 0, // starting x- and y-coordinates
LOWORD(lParam), // width of client area
HIWORD(lParam), // height of client area
TRUE); // repaint window
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return NULL;
}