1. Trang chủ
  2. » Công Nghệ Thông Tin

Lớp edit text trong lập trình c trên windows

5 348 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 91,66 KB

Nội dung

Lớp edit text lập trình c windows Lớp edit text lập trình c windows Bởi: Khuyet Danh LỚP EDIT TEXT TRONG LẬP TRÌNH C TRÊN WINDOWS Trong phương diện lớp soạn thảo (edit text) xem cửa sổ định nghĩa sẵn đơn giản Nhưng xét khía cạnh khác lại phức tạp Dùng tên lớp "edit" với thông số ví trí x, vị trí y, chiều rộng, chiều cao hàm CreateWindow để tạo cửa sổ soạn thảo Khi cửa sổ soạn thảo nhận focus gõ chữ vào, xoá chữ, đánh dấu chữ…vv Các thao tác Windows hỗ trợ hoàn toàn Một ứng dụng thường xuyên nhất, đơn giản lớp soạn thảo tạo cửa sổ cho phép người dùng nhập chữ vào Để minh họa cho cửa sổ nhập ta xét ví dụ 3.2 sau * EDITTEXT.CPP #include #define ID_EDIT LRESULTCALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); TCHAR szAppName[] = TEXT ("PopPad1") ; LRESULTCALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hwndEdit ; switch (message) 1/5 Lớp edit text lập trình c windows { case WM_CREATE : hwndEdit = CreateWindow (TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0, 0, 0, 0, hwnd, (HMENU)ID_EDIT, ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ; return ; case WM_SETFOCUS : SetFocus (hwndEdit) ; return ; case WM_SIZE : MoveWindow (hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); return ; case WM_COMMAND : if (LOWORD (wParam) == ID_EDIT) if ( HIWORD(wParam)==EN_ERRSPACE || HIWORD(wParam)==EN_MAXTEXT ) MessageBox(hwnd, TEXT("Edit control out of space."), szAppName, MB_OK | MB_ICONSTOP) ; return ; case WM_DESTROY : PostQuitMessage(0) ; return ; } return DefWindowProc (hwnd, message, wParam, lParam) ; 2/5 Lớp edit text lập trình c windows } Hạn chế edit box định nghĩa sẵn số ký tự người dùng nhập vào phải không 30.000 ký tự chữ Các kiểu lớp Edit Text Trong ví dụ tạo edit box cách gọi hàm CreateWindow Có kiểu cửa sổ WS_CHILD, số tùy chọn Chúng ta canh trái, phải, chữ vùng cửa sổ edit box cách thay đổi thông số kiểu cửa sổ ES_LEFT, ES_RIGHT, ES_CENTER hàm CreateWindow Có thể tạo edit control cho phép hiển thị nhiều hàng cách chọn kiểu cửa sổ ES_MULTILINE Một edit control mặc định cho phép nhập hàng ký tự cuối edit box Sử dụng ES_AUTOHSCROLL, ES_AUTOVSCROLL để tạo edit control có cuộn ngang, cuộn đứng tự động Có thể thêm cuộn ngang đứng vào edit control cách sử dụng kiểu cửa sổ WS_HSCROLL, WS_VSCROLL Dùng kiểu cửa sổ WS_BORDER để tạo đường viền cho edit control Kích thước edit control xác định cách gọi hàm MoveWindow hàm WndProc xử lý thông điệp WM_SIZE Trong ví dụ kích thước edit control đặt kích thước cửa sổ MoveWindow(hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); Các edit control gởi thông điệp WM_COMMAND thông số wParam, lParam đến window cửa sổ cha Với ý nghĩa : LOWORD(wParam) ID cửa sổ con, HIWORD(wParam) mã thông báo lParam handle edit control Danh sách mã thông báo edit Control Mã thông báo ý nghĩa EN_SETFORCUS Endit control nhận focus nhập EN_KILLFORCUS Endit control focus nhập EN_CHANGE Nội dung edit control thay đổi EN_UPDATE Nội dung edit control thay đổi EN_ERRSPACE Edit control chạy thời gian EN_MAXTEXT Edit control chạy không gian chèn EN_HSCROLL Thanh cuộn đứng edit control bị tác động 3/5 Lớp edit text lập trình c windows EN_VSCROLL Thanh cuộn nằm edit control bị tác động Các thông điệp đến lớp Edit Text Các thứ tự thông điệp sau cho phép cắt, chép, xoá phần chữ chọn (selected) SendMessage (hwndEdit, WM_CUT, 0, 0); SendMessage (hwndEdit, WM_COPY, 0, 0); SendMessage (hwndEdit, WM_CLEAR, 0, 0); Với WM_CUT cắt phần chữ đánh dấu đưa vào vùng Clipboard WM_COPY chép phần chữ đánh dấu đưa vào Clipboard phần đánh dấu edit control WM_CLEAR xóa phần chữ đánh dấu mà không đưa vào clipboard Chèn phần chữ nằm clipboard vào vùng soạn thảo edit control cách gọi hàm SendMessage (hwndEdit, WM_PASTE , 0, 0); Nhận bắt đầu kết thúc phần chữ chọn cách gọi hàm : SendMessage (hwndEdit, EM_GETSEL, (WPARAM)&iStart, (LPARAM)&iEnd ); iStart lưu vị trí bắt đầu iEnd lưu ví trí kết thúc Để thay phần chữ chọn chữ khác, ta dùng hàm ; SendMessage(hwndEdit,EM_REPLACESEL,0,(LPARAM)szString); Trong szString chuỗi muốn thay Đối với edit control nhiều dòng, ta đếm số dòng chữ hàm iCount = SendMessage (hwndEdit, EM_GETLINECOUNT, 0, 0); Các dòng edit control đánh số bắt thứ tự từ Lấy chiều dài dòng lệnh iLength = SendMessage (hwndEdit, EM_LINELENGTH, iLine, 0) 4/5 Lớp edit text lập trình c windows Chép hàng vào đệm cách gọi hàm iLength = SendMessage ( hwdEdit, EM_GETLINE, iLine, (LPARAM)Buffer ) 5/5

Ngày đăng: 20/10/2016, 05:46

TỪ KHÓA LIÊN QUAN