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

Giáo trình lập trình C cho Winform- P13

5 13 0

Đ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 268,78 KB

Nội dung

Giáo trình lập trình C cho Winform- P13: Các ứng dụng của Windows rất dễ sử dụng, nhưng rất khó đối với người đã tạo lập ra chúng. Để đạt được tính dễ dùng đòi hỏi người lập trình phải bỏ ra rất nhiều công sức để cài đặt.

Bài 4: Hộp thọai điều khiển 109 110 111 112 113 Trần Minh Thái PostQuitMessage(0) ; return ; } return DefWindowProc(hwnd, message, wParam, lParam) ; } Bài giảng: Lập trình C for Win .Trang 61/69 Bài 5: XỬ LÝ VĂN BẢN Phân bố thời lượng: - Số tiết giảng lớp: tiết - Số tiết tự học nhà: tiết - Số tiết cài đặt chương trình nhà: 12 tiết Hiển thị văn Để thị nội dung văn thiết bị xuất, dựa vào trường hợp thể khác nhau, ta dùng hàm Win32 API khác Các hàm phụ thuộc vào font chữ, thuộc tính thiết bị ngữ cảnh DC (Device Context ) khoảng cách ký tự thể Hàm phổ biến thực thao tác xuất chuỗi ký tự văn bản, sử dụng font chữ, màu chữ màu hành : ™ BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString,int cbString); Ỉ trả giá trị khác không thành công, ngược lại trả ™ LONG TabbedTextOut(HDC hDC, int nX, int nY, LPCTSTR lpString, int nCount, int nNumTabs, LPINT lpnTabStopPositions, int nTabOrigin); Nếu chuỗi ký tự có ký tự tab (‘\t’ 0x09), hàm TabbedTextOut chuyển ký tự tab vào dãy vị trí "dừng" tương ứng Số lượng tab dừng xác định nNumTabs, lpnTabStopPositions dãy vị trí tab dừng theo đơn vị tính pixels Ví dụ, độ rộng trung bình ký tự pixels, tab dừng cần đặt cách ký tự, dãy tab dừng phải có giá trị 40, 80, 120, … Tuy nhiên, giá trị không thiết phải bội số Nếu biến nNumTabs lpnTabStopPositions có giá trị NULL, tab dừng đặt cách ký tự Nếu nNumTabs 1, lpnTabStopPositions trỏ đến giá trị xác định dãy tăng tuần hoàn bội số dãy Ví dụ, nNumTabs 1, Bài giảng: Lập trình C for Win .Trang 62/69 lpnTabStopPositions 30, ta có dãy tab dừng vị trí 30, 60, 90, … pixels Trường nTabOrigin xác định tọa độ theo trục x điểm bắt đầu tính khoảng cách tới tab Giá trị không thiết phải vị trí chuỗi, chọn trùng khơng Hàm trả kích thước chuỗi hiển thị, theo đơn vị logic, thành công Ngược lại, hàm trả Trong đó, chiều cao chuỗi WORD cao biến kiểu LONG, chiều rộng WORD thấp ™ int DrawText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat); Cũng hàm xuất văn khác, hàm DrawText xuất chuỗi xác định trỏ lpString có độ dài nCount Tuy nhiên, với chuỗi có ký tự kết thúc NULL, nCount -1, hàm tự động tính tốn chiều dài chuỗi Biến lpRect trỏ đến cấu trúc RECT hình chữ nhật (theo toạ độ logic) mà văn thể theo định dạng thiết lập uFormat Nếu uFormat 0, nội dung văn hiển thị theo dòng từ xuống Mỗi dịng xác định thơng qua ký tự đầu dòng CR (carriage return, ‘\r’ 0x0D) ký tự xuống dòng LF (linefeed, ‘\n’ 0x0A) có văn Phần văn bên ngồi hình chữ nhật lpRect bị cắt bỏ Giá trị uFormat giá trị cờ canh lề trái (DT_LEFT) Ngồi ra, ta thiết lập cờ canh lề phải (DT_RIGHT), canh lề (DT_CENTER) cho văn Để loại bỏ chức điều khiển ký tự CR LF, cần thêm vào cờ DT_SINGLELINE Nếu thiết lập DT_SINGLELINE, ta định vị trí dịng hiển thị phía (DT_TOP), phía (DT_BOTTOM), (DT_VCENTER) vùng hình chữ nhật Bài giảng: Lập trình C for Win .Trang 63/69 Trong trường hợp hiển thị nhiều dòng văn bản, Windows ngắt dòng gặp ký tự CR LF Để ngắt dòng dài kích thước hình chữ nhật hiển thị, cần thiết lập cờ DT_WORDBREAK Nếu không muốn Windows cắt bỏ phần dư vẽ chữ vượt phạm vi khung chữ nhật, ta thêm cờ DT_NOCLIP Nếu muốn ký tự tab (‘\t’ 0x09) diễn dịch thành ký tự phân cột, cần thêm cờ DT_EXPANDTABS Giá trị mặc định tab khoảng trắng Cờ DT_TABSTOP dùng để đặt lại giá trị tab Trong trường hợp này, byte cao word thấp (bits 15-8) uFormat chứa giá trị tab cần thay Định dạng văn a) Hàm thiết lập màu chữ màu nền: ™ COLORREF SetTextColor (HDC hdc, COLORREF color); ™ COLORREF SetBkColor (HDC hdc, COLORREF color); • Trả giá trị màu trước • Nếu có lỗi trả CLR_INVALID ™ int SetBkMode (HDC hdc, int mode) ; • Trả chế độ trước • Trả gặp lỗi mode = OPAQUE : Mỗi hiển thị văn màu thay đổi thành màu hành Hoặc TRANSPARENT: Màu khơng bị ảnh hưởng Ỵ SetBkColor() bị vơ hiệu b) Xác định màu chữ màu hành: ™ COLORREF GetTextColor(HDC hDC); ™ COLORREF GetBkColor(HDC hDC); c) Xác định chế độ tại: ™ int GetBkMode(HDC hDC); Hàm trả giá trị TRANSPARENT OPAQUE, thành công Ngược lại, giá trị trả zero d) Để xác lập vị trí chuỗi văn hiển thị dựa điểm gốc nXStart, nYStart: Bài giảng: Lập trình C for Win .Trang 64/69 ™ UINT SetTextAlign(HDC hDC, UINT fMode); fMode: TA_LEFT, TA_RIGHT, TA_CENTER, TA_TOP, TA_BOTTOM, TA_BASELINE, TA_UPDATE e) Để biết chế độ canh lề văn tại, ta dùng hàm : ™ UINT GetTextAlign(HDC hDC); Nếu thành công, hàm trả cờ tương ứng canh lề văn hành Ngược lại, giá trị trả GDI_ERROR f) Để thay đổi khoảng cách ký tự: ™ int SetTextCharacterExtra(HDC hDC, int nCharExtra); Nếu thành công, hàm trả khoảng cách trước thiết lập Ngược lại, giá trị trả 0x80000000 g) Để biết khoảng cách tại, ta dùng hàm : ™ int GetTextCharacterExtra(HDC hDC); Nếu thành công, giá trị trả cho biết khoảng cách Ngược lại, giá trị trả 0x80000000 Sử dụng font • Lập số font chữ • Nạp font chữ • Gán số font chữ cho ngữ cảnh thiết bị Đối với Font chữ mặc định (hệ thống):Sử dụng font chữ Windows sử dụng MACRO FONT ANSI_FIXED_FONT Font với kích thước cố định ký tự dựa Windows Font Courier ví dụ điển hình dạng font ANSI_VAR_FONT Font với độ rộng ký tự thay đổi dựa ký tự chuẩn Windows Font MS San Serif ví dụ điển hình DEVICE_DEFAULT_FONT Font với thiết bị cho chọn Dạng font thường co sẵn hệ thống để điều khiển việc trình bày thiết Bài giảng: Lập trình C for Win .Trang 65/69 ... SetTextColor (HDC hdc, COLORREF color); ™ COLORREF SetBkColor (HDC hdc, COLORREF color); • Trả giá trị màu trư? ?c • Nếu c? ? lỗi trả CLR_INVALID ™ int SetBkMode (HDC hdc, int mode) ; • Trả chế độ trư? ?c. .. font chữ, thu? ?c tính thiết bị ngữ c? ??nh DC (Device Context ) khoảng c? ?ch ký tự thể Hàm phổ biến th? ?c thao t? ?c xuất chuỗi ký tự văn bản, sử dụng font chữ, màu chữ màu hành : ™ BOOL TextOut(HDC hdc,... màu hành Ho? ?c TRANSPARENT: Màu khơng bị ảnh hưởng Ỵ SetBkColor() bị vơ hiệu b) X? ?c định màu chữ màu hành: ™ COLORREF GetTextColor(HDC hDC); ™ COLORREF GetBkColor(HDC hDC); c) X? ?c định chế độ tại:

Ngày đăng: 11/05/2021, 04:34