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

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

5 351 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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lớp edit text trong lập trìnhc trên windows Bởi: Khuyet Danh LỚP EDIT TEXT TRONG LẬP TRÌNH C TRÊN WINDOWS Trong một phương diện nào đó thì lớp soạn thảo edit text được xem là một cửa sổ

Trang 1

Lớp edit text trong lập trình

c trên windows

Bởi:

Khuyet Danh

LỚP EDIT TEXT TRONG LẬP TRÌNH C TRÊN WINDOWS

Trong một phương diện nào đó thì lớp soạn thảo (edit text) được xem là một cửa sổ

được định nghĩa sẵn đơn giản nhất Nhưng xét một khía cạnh khác thì nó lại phức tạp

nhất Dùng tên lớp "edit" cùng với các thông số ví trí x, vị trí y, chiều rộng, chiều cao trong hàm CreateWindow để tạo ra cửa sổ soạn thảo Khi cửa sổ soạn thảo nhận focus

thì chúng ta có thể gõ chữ vào, xoá các chữ, đánh dấu các chữ…vv Các thao tác trên được Windows hỗ trợ hoàn toàn

Một trong những ứng dụng thường xuyên nhất, và đơn giản nhất của lớp soạn thảo là tạo ra một cửa sổ cho phép người dùng nhập các chữ vào Để minh họa cho cửa sổ nhập

ta xét ví dụ 3.2 sau

* EDITTEXT.CPP

#include <windows.h>

#define ID_EDIT 1

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)

Trang 2

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 0 ;

case WM_SETFOCUS :

SetFocus (hwndEdit) ;

return 0 ;

case WM_SIZE :

MoveWindow (hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); return 0 ;

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 0 ;

case WM_DESTROY :

PostQuitMessage(0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

Trang 3

Hạn chế của edit box được định nghĩa sẵn là số ký tự người dùng nhập vào phải không quá 30.000 ký tự chữ

Các kiểu lớp Edit Text

Trong ví dụ trên đã tạo một edit box bằng cách gọi hàm CreateWindow Có kiểu cửa

sổ là WS_CHILD, cùng một số tùy chọn Chúng ta có thể canh trái, phải, giữa các chữ trong vùng cửa sổ edit box bằng cách thay đổi thông số kiểu cửa sổ ES_LEFT, ES_RIGHT, ES_CENTER trong hàm CreateWindow.

Có thể tạo một edit control cho phép hiển thị nhiều hàng bằng cách chọn kiểu cửa

sổ ES_MULTILINE Một edit control mặc định chỉ cho phép nhập một hàng ký tự cho đến cuối edit box Sử dụng ES_AUTOHSCROLL, ES_AUTOVSCROLL để

tạo một edit control có thanh cuộn ngang, và cuộn đứng tự động Có thể thêm thanh

cuộn ngang và đứng vào edit control bằng 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 của edit control được xác định bằng cách gọi hàm MoveWindow khi hàm WndProc xử lý thông điệp WM_SIZE Trong ví dụ trên thì kích thước của edit control

được đặt bằng kích thước của cửa sổ chính

MoveWindow(hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);

Các edit control gởi thông điệp WM_COMMAND cùng các thông số wParam, lParam đến window cửa sổ cha Với ý nghĩa : LOWORD(wParam) là ID cửa sổ con, HIWORD(wParam) là mã thông báo lParam là handle của edit control.

Danh sách mã thông báo của edit Control

Mã thông báo ý nghĩa

EN_SETFORCUS Endit control nhận focus nhập

EN_KILLFORCUS Endit control mất focus nhập

EN_CHANGE Nội dung của edit control sẽ thay đổi

EN_UPDATE Nội dung của edit control thay đổi

EN_ERRSPACE Edit control chạy quá thời gian

EN_MAXTEXT Edit control chạy quá không gian khi chèn

EN_HSCROLL Thanh cuộn đứng của edit control bị tác động

Trang 4

EN_VSCROLL Thanh cuộn nằm của edit control bị tác động.

Các thông điệp đến một lớp Edit Text

Các thứ tự thông điệp sau cho phép cắt, sao chép, xoá các phần chữ được 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ữ đã được đánh dấu đưa vào vùng Clipboard WM_COPY sao chép phần chữ đã được đánh dấu đưa vào Clipboard nhưng phần đánh dấu vẫn còn trên edit control WM_CLEAR xóa phần chữ đã được đánh dấu mà không đưa vào clipboard

Chèn phần chữ nằm trong clipboard vào vùng soạn thảo edit control bằng cách gọi hàm

SendMessage (hwndEdit, WM_PASTE , 0, 0);

Nhận bắt đầu và kết thúc của phần chữ đã chọn bằng cách gọi hàm :

SendMessage (hwndEdit, EM_GETSEL, (WPARAM)&iStart, (LPARAM)&iEnd );

iStart lưu vị trí bắt đầu và iEnd lưu ví trí kết thúc

Để thay thế phần chữ đã chọn bằng chữ khác, ta dùng hàm ;

SendMessage(hwndEdit,EM_REPLACESEL,0,(LPARAM)szString);

Trong đó szString là chuỗi muốn thay thế

Đối với edit control nhiều dòng, ta đếm số dòng chữ bằng hàm

iCount = SendMessage (hwndEdit, EM_GETLINECOUNT, 0, 0);

Các dòng trong edit control được đánh số bắt thứ tự từ 0 Lấy chiều dài của một dòng bằng lệnh

Trang 5

Chép hàng này vào bộ đệm bằng cách gọi hàm.

iLength = SendMessage ( hwdEdit, EM_GETLINE, iLine, (LPARAM)Buffer ).

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

TỪ KHÓA LIÊN QUAN