Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konuda, bir pencerenin istemci alanına çok satırlı düzenleme denetimi ekleyerek basit bir sözcük işlemcisinin nasıl uygulandığı gösterilmektedir. Kullanıcı, çok satırlı düzenleme denetimini kullanarak bir menüden düzenleme komutlarını seçebilir. Bu komutlar kullanıcının önceki bir eylemi geri alma, seçimleri kesme veya panoya kopyalama, panodan metin yapıştırma ve geçerli seçimi silme gibi basit düzenleme işlemleri gerçekleştirmesini sağlar.
Bilmeniz gerekenler
Teknolojileri
Önkoşullar
- C/C++
- Windows Kullanıcı Arabirimi Programlama
Talimatlar
Uygulamanızın bir örneği oluşturmak ve çok satırlı düzenleme denetimi başlatmak ve ardından kullanıcı düzenleme komutlarını işlemek için kod içermesi gerekir.
Aşağıdaki C++ kod örneği, pencerenin istemci alanına çok satırlı düzenleme denetimi ekleyerek basit bir sözcük işlemcisinin işlevlerinin çoğunu uygular. Sistem, düzenleme denetimi için wordwrap işlemlerini otomatik olarak gerçekleştirir ve dikey kaydırma çubuğu için işlemeyi de işler (create by specifying ES_AUTOVSCROLL in the call in the CreateWindow function).
Kullanıcı düzenleme komutları, WM_COMMAND bildirim iletileri aracılığıyla pencere işlemine gönderilir.
Not
Pencere Windows Şeridi içeriyorsa, düzenleme denetiminin boyutu Şeridin yüksekliğini karşılayacak şekilde ayarlanmalıdır. Daha fazla bilgi için bkz. Windows Şerit Çerçevesi.
#define ID_EDITCHILD 100
LRESULT CALLBACK MainWndProc(HWND hwnd, // window handle
UINT message, // type of message
WPARAM wParam, // additional information
LPARAM lParam) // additional information
{
static HWND hwndEdit;
TCHAR lpszLatin[] = L"Lorem ipsum dolor sit amet, consectetur "
L"adipisicing elit, sed do eiusmod tempor "
L"incididunt ut labore et dolore magna "
L"aliqua. Ut enim ad minim veniam, quis "
L"nostrud exercitation ullamco laboris nisi "
L"ut aliquip ex ea commodo consequat. Duis "
L"aute irure dolor in reprehenderit in "
L"voluptate velit esse cillum dolore eu "
L"fugiat nulla pariatur. Excepteur sint "
L"occaecat cupidatat non proident, sunt "
L"in culpa qui officia deserunt mollit "
L"anim id est laborum.";
switch (message)
{
case WM_CREATE:
hwndEdit = CreateWindowEx(
0, L"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) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
NULL); // pointer not needed
// Add text to the window.
SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) lpszLatin);
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,
L"Nothing to undo.",
L"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_ABOUT:
DialogBox(hInst, // current instance
L"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;
}
İlgili konular
-
Denetimleri Düzenle Kullanarak