edit类型的子窗口
ES_MULTILINE:多行输入文本框
窗口的消息:
WL_COMMAND:
EN_CHANGE:当edit窗口内的文本内容改变的时候,edit子窗口给父窗口发送一个WL_COMMAND消息,其通知码是EN_CHANGE。
WM_GETTEXT:
用SendMessage函数给edit窗口发送这个消息,同时,给wparam参数传递我们想要获得的字符个数,lParam传递一个内存块地址,sendMessage函数返回后,
lParam指向的内存中,将保存获得的字符。
WL_GETTEXTLENGTH:
用 SendMessage函数给edit窗口发送这个消息,将wParam和1Param都赋值为NULL,那SendMessage函数,将返回edit中的字符个数,但这个字符个数不包括NULL结尾字符。
edit空间演示源码
1 #include<Windows.h> 2 3 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); 4 5 int WinMain(HINSTANCE hInst, HINSTANCE tmp, LPSTR szCmd, int nShow) 6 { 7 WNDCLASS WndClass; 8 TCHAR* ClassName = TEXT("MyClass"); 9 HWND hwnd; 10 MSG msg; 11 HBRUSH hBrush; 12 hBrush = CreateSolidBrush(RGB(249,98,241)); 13 14 WndClass.cbClsExtra = 0; 15 WndClass.cbWndExtra = 0; 16 WndClass.hbrBackground = hBrush; 17 WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); 18 WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); 19 WndClass.hInstance = hInst; 20 WndClass.lpfnWndProc = WindProc; 21 WndClass.lpszClassName = ClassName; 22 WndClass.lpszMenuName = NULL; 23 WndClass.style = CS_VREDRAW | CS_HREDRAW; 24 25 if (!RegisterClass(&WndClass)) 26 { 27 MessageBox(NULL, TEXT("Gegister Class Fail!!"), TEXT("error"), MB_OK); 28 return 0; 29 } 30 31 hwnd = CreateWindow(ClassName, TEXT("Hello"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, hInst, NULL); 32 if (hwnd == NULL) 33 { 34 MessageBox(NULL, TEXT("Create Window Fail!!"), TEXT("error"), MB_OK); 35 return 0; 36 } 37 ShowWindow(hwnd, nShow); 38 UpdateWindow(hwnd); 39 40 while (GetMessage(&msg, NULL, 0, 0)) 41 { 42 TranslateMessage(&msg); 43 DispatchMessage(&msg); 44 } 45 46 return 0; 47 } 48 49 LRESULT CALLBACK WindProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 50 { 51 HDC hdc; 52 static int cx, cy; 53 static editHwnd, staticHwnd; 54 TCHAR str[1024]; 55 int length; 56 switch (message) 57 { 58 case WM_CREATE: 59 editHwnd = CreateWindow(TEXT("edit"),NULL, WS_CHILD | WS_VISIBLE|WS_BORDER|ES_MULTILINE|ES_AUTOVSCROLL , 0, 0, 0, 0, hwnd, (HMENU)1, GetModuleHandle(NULL), NULL); 60 staticHwnd = CreateWindow(TEXT("static"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER, 0, 0, 0, 0, hwnd, (HMENU)2, GetModuleHandle(NULL), NULL); 61 return 0; 62 case WM_SIZE: 63 cx = LOWORD(lParam); 64 cy = HIWORD(lParam); 65 MoveWindow(editHwnd, 0, 0, cx/2, cy/2, TRUE); 66 MoveWindow(staticHwnd, cx / 2, cy / 2, cx, cy, TRUE); 67 return 0; 68 case WM_COMMAND: 69 if (HIWORD(wParam)==EN_CHANGE) 70 { 71 length = SendMessage(editHwnd, WM_GETTEXTLENGTH, NULL, NULL) + 1; 72 length = length > 1023 ? 1023 : length; 73 SendMessage(editHwnd, WM_GETTEXT, length, (LPARAM)str) ; 74 str[length] = '/0'; 75 SetWindowText(staticHwnd,str); 76 } 77 return 0; 78 case WM_DESTROY: 79 PostQuitMessage(0); 80 return 0; 81 default: 82 break; 83 } 84 85 return DefWindowProc(hwnd, message, wParam, lParam); 86 }