Giáo trình lập trình C cho Winform- P13
Số trang: 5
Loại file: pdf
Dung lượng: 268.78 KB
Lượt xem: 6
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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.
Nội dung trích xuất từ tài liệu:
Giáo trình lập trình C cho Winform- P13 Bài 4: Hộp thọai và điều khiển Trần Minh Thái109 PostQuitMessage(0) ;110 return 0 ;111 }112 return DefWindowProc(hwnd, message, wParam, lParam) ;113 } Bài giảng: Lập trình C for Win .............................................................................................Trang 61/69 Bài 5: XỬ LÝ VĂN BẢNPhân bố thời lượng:- Số tiết giảng ở lớp: 6 tiết- Số tiết tự học ở nhà: 6 tiết- Số tiết cài đặt chương trình ở nhà: 12 tiết1. Hiển thị văn bảnĐể hiện thị nội dung văn bản trên các thiết bị xuất, dựa vào từng trường hợp thểhiện khác nhau, ta dùng các hàm Win32 API khác nhau. Các hàm này phụthuộc vào font chữ, thuộc tính của thiết bị ngữ cảnh DC (Device Context ) vàkhoảng cách ký tự thể hiện.Hàm phổ biến nhất thực hiện thao tác xuất một chuỗi ký tự văn bản, sử dụngfont chữ, màu chữ và màu nền hiện hành là : BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString,int cbString); trả về giá trị khác không nếu thành công, ngược lại trả về 0. LONG TabbedTextOut(HDC hDC, int nX, int nY, LPCTSTR lpString, int nCount, int nNumTabs, LPINT lpnTabStopPositions, int nTabOrigin); Nếu trong chuỗi ký tự có các ký tự tab (‘ ’ hoặc 0x09), hàm TabbedTextOut sẽ chuyển các ký tự tab vào dãy các vị trí dừng tương ứng. Số lượng các tab dừng được xác định bởi nNumTabs, và lpnTabStopPositions là dãy vị trí các tab dừng theo đơn vị tính pixels. Ví dụ, nếu độ rộng trung bình của mỗi ký tự là 8 pixels, và mỗi tab dừng cần đặt cách nhau 5 ký tự, dãy các tab dừng sẽ phải lần lượt có giá trị 40, 80, 120, … . Tuy nhiên, các giá trị này không nhất thiết phải là bội số của nhau. Nếu biến nNumTabs hoặc lpnTabStopPositions có giá trị là 0 và NULL, các tab dừng được đặt cách nhau từng 8 ký tự. Nếu nNumTabs bằng 1, lpnTabStopPositions trỏ đến giá trị xác định một dãy tăng tuần hoàn là bội số của dãy này. Ví dụ, nếu nNumTabs bằng 1, vàBài giảng: Lập trình C for Win .............................................................................................Trang 62/69 lpnTabStopPositions bằng 30, ta sẽ có dãy tab dừng tại vị trí 30, 60, 90, … pixels. Trường nTabOrigin xác định tọa độ theo trục x của điểm bắt đầu tính khoảng cách tới các tab. Giá trị này không nhất thiết phải là vị trí đầu tiên của chuỗi, có thể chọn trùng hoặc không. Hàm trả về kích thước chuỗi hiển thị, theo đơn vị logic, nếu thành công. Ngược lại, hàm trả về 0. Trong đó, chiều cao chuỗi là WORD cao của biến kiểu LONG, chiều rộng là WORD thấp. int DrawText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat); Cũng như các hàm xuất văn bản khác, hàm DrawText xuất chuỗi xác định bởi con trỏ lpString có độ dài nCount. Tuy nhiên, với chuỗi có ký tự kết thúc là NULL, nếu nCount bằng -1, hàm sẽ tự động tính toán chiều dài của chuỗi. Biến lpRect trỏ đến cấu trúc RECT của hình chữ nhật (theo toạ độ logic) mà trong đó văn bản thể hiện theo định dạng được thiết lập trong uFormat. Nếu uFormat bằng 0, nội dung văn bản sẽ được hiển thị theo từng dòng từ trên xuống dưới. Mỗi dòng mới được xác định thông qua ký tự về đầu dòng CR (carriage return, bằng ‘ ’ hoặc 0x0D) hoặc ký tự xuống dòng LF (linefeed, bằng ‘ ’ hoặc 0x0A) có trong văn bản. Phần văn bản bên ngoài hình chữ nhật lpRect sẽ bị cắt bỏ. Giá trị uFormat bằng 0 cũng chính là giá trị cờ canh lề trái (DT_LEFT). Ngoài ra, ta có thể thiết lập các cờ canh lề phải (DT_RIGHT), và canh lề giữa (DT_CENTER) cho văn bản. Để loại bỏ chức năng điều khiển của các ký tự CR và LF, cần thêm vào cờ DT_SINGLELINE. Nếu thiết lập DT_SINGLELINE, ta cũng có thể chỉ định vị trí của dòng hiển thị ở phía trên (DT_TOP), phía dưới (DT_BOTTOM), hoặc ở chính giữa (DT_VCENTER) trong 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 chỉ ngắt dòng khi gặp ký tự CR và LF. Để ngắt dòng dài hơn 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ỏ các phần dư ra khi vẽ chữ vượt quá phạm vi khung ch ...
Nội dung trích xuất từ tài liệu:
Giáo trình lập trình C cho Winform- P13 Bài 4: Hộp thọai và điều khiển Trần Minh Thái109 PostQuitMessage(0) ;110 return 0 ;111 }112 return DefWindowProc(hwnd, message, wParam, lParam) ;113 } Bài giảng: Lập trình C for Win .............................................................................................Trang 61/69 Bài 5: XỬ LÝ VĂN BẢNPhân bố thời lượng:- Số tiết giảng ở lớp: 6 tiết- Số tiết tự học ở nhà: 6 tiết- Số tiết cài đặt chương trình ở nhà: 12 tiết1. Hiển thị văn bảnĐể hiện thị nội dung văn bản trên các thiết bị xuất, dựa vào từng trường hợp thểhiện khác nhau, ta dùng các hàm Win32 API khác nhau. Các hàm này phụthuộc vào font chữ, thuộc tính của thiết bị ngữ cảnh DC (Device Context ) vàkhoảng cách ký tự thể hiện.Hàm phổ biến nhất thực hiện thao tác xuất một chuỗi ký tự văn bản, sử dụngfont chữ, màu chữ và màu nền hiện hành là : BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString,int cbString); trả về giá trị khác không nếu thành công, ngược lại trả về 0. LONG TabbedTextOut(HDC hDC, int nX, int nY, LPCTSTR lpString, int nCount, int nNumTabs, LPINT lpnTabStopPositions, int nTabOrigin); Nếu trong chuỗi ký tự có các ký tự tab (‘ ’ hoặc 0x09), hàm TabbedTextOut sẽ chuyển các ký tự tab vào dãy các vị trí dừng tương ứng. Số lượng các tab dừng được xác định bởi nNumTabs, và lpnTabStopPositions là dãy vị trí các tab dừng theo đơn vị tính pixels. Ví dụ, nếu độ rộng trung bình của mỗi ký tự là 8 pixels, và mỗi tab dừng cần đặt cách nhau 5 ký tự, dãy các tab dừng sẽ phải lần lượt có giá trị 40, 80, 120, … . Tuy nhiên, các giá trị này không nhất thiết phải là bội số của nhau. Nếu biến nNumTabs hoặc lpnTabStopPositions có giá trị là 0 và NULL, các tab dừng được đặt cách nhau từng 8 ký tự. Nếu nNumTabs bằng 1, lpnTabStopPositions trỏ đến giá trị xác định một dãy tăng tuần hoàn là bội số của dãy này. Ví dụ, nếu nNumTabs bằng 1, vàBài giảng: Lập trình C for Win .............................................................................................Trang 62/69 lpnTabStopPositions bằng 30, ta sẽ có dãy tab dừng tại vị trí 30, 60, 90, … pixels. Trường nTabOrigin xác định tọa độ theo trục x của điểm bắt đầu tính khoảng cách tới các tab. Giá trị này không nhất thiết phải là vị trí đầu tiên của chuỗi, có thể chọn trùng hoặc không. Hàm trả về kích thước chuỗi hiển thị, theo đơn vị logic, nếu thành công. Ngược lại, hàm trả về 0. Trong đó, chiều cao chuỗi là WORD cao của biến kiểu LONG, chiều rộng là WORD thấp. int DrawText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat); Cũng như các hàm xuất văn bản khác, hàm DrawText xuất chuỗi xác định bởi con trỏ lpString có độ dài nCount. Tuy nhiên, với chuỗi có ký tự kết thúc là NULL, nếu nCount bằng -1, hàm sẽ tự động tính toán chiều dài của chuỗi. Biến lpRect trỏ đến cấu trúc RECT của hình chữ nhật (theo toạ độ logic) mà trong đó văn bản thể hiện theo định dạng được thiết lập trong uFormat. Nếu uFormat bằng 0, nội dung văn bản sẽ được hiển thị theo từng dòng từ trên xuống dưới. Mỗi dòng mới được xác định thông qua ký tự về đầu dòng CR (carriage return, bằng ‘ ’ hoặc 0x0D) hoặc ký tự xuống dòng LF (linefeed, bằng ‘ ’ hoặc 0x0A) có trong văn bản. Phần văn bản bên ngoài hình chữ nhật lpRect sẽ bị cắt bỏ. Giá trị uFormat bằng 0 cũng chính là giá trị cờ canh lề trái (DT_LEFT). Ngoài ra, ta có thể thiết lập các cờ canh lề phải (DT_RIGHT), và canh lề giữa (DT_CENTER) cho văn bản. Để loại bỏ chức năng điều khiển của các ký tự CR và LF, cần thêm vào cờ DT_SINGLELINE. Nếu thiết lập DT_SINGLELINE, ta cũng có thể chỉ định vị trí của dòng hiển thị ở phía trên (DT_TOP), phía dưới (DT_BOTTOM), hoặc ở chính giữa (DT_VCENTER) trong 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 chỉ ngắt dòng khi gặp ký tự CR và LF. Để ngắt dòng dài hơn 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ỏ các phần dư ra khi vẽ chữ vượt quá phạm vi khung ch ...
Tìm kiếm theo từ khóa liên quan:
ngôn ngữ lập trình ngôn ngữ C++ Lập trình căn bản hướng dẫn lập trình tài liệu lập trìnhGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 258 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 247 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 247 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 229 0 0 -
114 trang 224 2 0
-
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 210 0 0 -
80 trang 200 0 0
-
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 200 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 188 0 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 164 0 0