NỘI DUNG
TỔNG QUAN LẬP TRÌNH C TRÊN WIN
HỘP THOẠI VÀ THANH TRÌNH ĐƠN
CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
XỬ LÝ BÀN PHÍM, CHUỘT VÀ TIMER
XỬ LÝ VĂN BẢN VÀ FONT CHỮ
ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDI
98 trang |
Chia sẻ: phuongt97 | Lượt xem: 577 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Lập trình C trên Win - Lương Văn Vân, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
lấy chỉ danh của device context và sau khi sử dụng chỉ danh device context phải giải phóng device context.HDC hDC; // Khai báo chỉ danh device contexthDC = GetDC(hWnd); // Lấy chỉ danh DC của cửa sổReleaseDC(hWnd, hDC); // Giải phóng DC70Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERHàm TextOut: Xuất chuỗi vào vùng client của cửa sổ TextOut(hDC, x, y, psText, iLength);Trong đó: hDC là device context của cửa sổ cần xuất.x, y điểm bắt đầu của chuỗi ký tự trong client psText là một con trỏ trỏ đốn một chuỗi ký tự.iLength là số ký tự trong chỗi cần xuất.71Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERHàm LineTo(): Vẽ đường thẳngBOOL LineTo(HDC hDC, int X, int Y);Vẽ đường thẳng từ vị trí hiện hành đến tọa độ X, YHàm MoveToEx(): Thiết đặt vị trí hiện hànhBOOL MoveToEx(HDC hDC, int X, int Y, LPPOINT lpCoord); Tọa độ hiện hành được xác định bởi X, YVị trí trước đó được trả về cấu trúc POINT được xác định trong lpCoord. 72Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERCác thông điệp về mouse Để xác nhận sự hiện diện của mouse gọi hàm GetSystemMetrics: FMouse =GetSystemMetrics(SM_MOUSERESENT);Nếu fMouse là TRUE thì mouse được cài đặt, và là FALSE thì mouse không được cài đặt.73Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERCác thông điệp MOUSE trong vùng client Khi mouse di chuyển trên màn hình luôn phát ra thông điệp WM_MOUSEMOVE và khi các nút mouse được nhấn hay thả trong vùng client của một cửa sổ hàm window nhận các thông điệp:74Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERĐối với tất cả thông điệp giá trị lParam chứa vị trí của mouse. Word thấp LOWORD(lParam) là tọa độ x, word cao HIWORD(lParam) là tọa độ y so với góc trên bên trái của cửa sổ.Giá trị wParam chỉ định trạng thái của các nút chuột và các phím Shift và ctrl:MK_LBUTTON: Nút trái được nhấnMK_MBUTTON: Nút giữa được nhấnMK_RBUTTON: Nút phải được nhấnMK_SHIFT: Phím Shift được nhấn.MK_CONTROL: Phím Ctrl được nhấn.75Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERCác thông điệp về timer:Timer của hệ điều hành Windows là một dịch vụ định kỳ thông báo cho các ứng dụng biết rằng có một khoảng thời gian đã trôi qua.Thực hiện bằng cách sau một chu kỳ thời gian Windows gởi đến hàm window thông điệp WM_TIMER.76Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERThiết lập bộ định thời: sử dụng hàm SetTimer.UINT SetTimer(HWND hWnd, UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); hWnd : Cửa sổ nhận thông điệp WM_TIMERnIDEvent : Chỉ danh của bộ TimeruElapse: Chu kỳ thời gian mà Windows gởi thông điệp WM_TIMER tới hàm windows ( tính bằng mili giây)lpTimerFunc: Địa chỉ hàm timer – Có thể là NULL 77Lập trình C trên WindowsChương 4: THÔNG ĐIỆP BÀN PHÍM, MOUSE, TIMERHàm KillTimer: để huỷ bỏ bộ định thời..BOOL KillTimer( HWND hWnd, // handle of window that installed timer UINT uIDEvent // timer identifier ); 78Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮLập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮDevice context: Device context là một cấu trúc dữ liệu được duy trì để kết hợp với một thiết bị hiển thị như màn hình, máy in,Khi vẽ đầu tiên phải lấy chỉ danh của device context và sau khi sử dụng chỉ danh device context phải giải phóng device context.HDC hDC; // Khai báo chỉ danh device contexthDC = GetDC(hWnd); // Lấy chỉ danh DC của cửa sổReleaseDC(hWnd, hDC); // Giải phóng DC80Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮHàm DrawText: xuất văn bản.Cú pháp:int DrawText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat); Trong đó: hDC // handle to device context lpString // con trỏ trỏ đến chuỗi cần vẽ nCount // chiều dài của chuỗi lpRect // con trỏ trỏ đến cấu trúc RECT uFormat // text-drawing flags 81Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮGiá trị uFormat:DT_SINGLELINE: một dòng độc lậpDT_CENTER : canh giữa ngang hình chữ nhậtDT_VCENTER: canh giữa dọc hình chữ nhật 82Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮThiết lập màu chữ và màu nền.Cú pháp:COLORREF SetTextColor (HDC hDC , COLORREF color);COLORREF SetBkColor (HDC hDC , COLORREF color);Trong đó: color: macro RGB(int Red, int Green, int Blue). 83Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮFont: có các thuộc tínhTypeface: loạI font (Times, Courier, Arial,)Style: kiểu dáng (normal, thin, bold,)Size: kích cỡ chữ, được xác định theo đơn vị point, 1 point = 1/72 inch = 0.013837 inch84Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮThiết lập font chữ cho vùng client.Để sử dụng font hệ thống của Windows thực hiện các bước như sau::1. Gọi hàm GetStockObject() để lấy điều khiển Font. HFONT hFont; //khai báo chỉ danh đk font hFont = GetStockObject(int fnObject);Trong đó: fnObject kiểu Font. Chọn SYSTEM_FONT là những loại font có trong hệ thống Windows 85Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮ2. Gọi hàm GetObject () lấy các thông tin về Font. int GetObject( HFONT hFont, int LogFontSize, LOGFONT Lf ); Trong đó: hFoont: chỉ danh của điều khiển Font LogFontSize: Kích thước cấu trúc font LOGFONT Lf: Con trỏ trỏ đến cấu trúc LOGFONTVí dụ: GetObject(hFont, sizeof(LOGFONT), (LOGFONT *) &Lf);86Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮCấu trúc LOGFONT: typedef struct tagLOGFONT{LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; TCHAR lfFaceName [LF_FACESIZE]; } LOGFONT; 87Lập trình C trên WindowsChương 5: XỬ LÝ VĂN BẢN VÀ FONT CHỮ3. Xác định Font tiếng việt trong trường lfFaceName của tham số lf strcpy((char*)lf.lfFaceName, "VNI-Times"); 4. Gọi hàm CreateFontIndirect() để tạo ra font có thuộc tính như đã xác định HFONT = CreateFontIndirect(CONST LOGFONT *lplf ); 5. Gọi hàm SelectObject() cài đặt Font đã xác định vào vùng client. HFONT = SelectObject(HDC hDC, HFONT hFont);88Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDILập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDIThông điệp WM_PAINT: Được phát đi khi một phần hay tất cả vùng client bị không hợp lệ và cần cập nhật, vẽ lại. Vùng client không hợp lệ khi: - Cửa sổ đầu tiên được tạo ra. - Người sử dụng thay đổi kích thước cửa sổ. - Người sử dụng di chuyển các cửa sổ.90Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDIVẽ hình chữ nhật: Rectangle( HDC hDC, int upX, int upY, int lowX, int lowY)upX, upY: góc trên bên tráilowX, lowY: góc dưới bên phải 91Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDIVẽ Elip: Ellipse( HDC hDC, int upX, int upY, int lowX, int lowY)upX, upY: góc trên bên tráilowX, lowY: góc dưới bên phải 92Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDITạo thuộc tính bút vẽ:Gọi hàm CreatePen: 1. CreatePen(int style, int width, COLOREF color); Style: kiểu bút vẽ và có các giá trị:PS_DASH : Gạch ngangPS_DASHDOT : Gạch ngang chấmPS_DASHDOTDOT : Gach ngang chấm chấmPS_DOT : ChấmPS_SOLID : Đường thẳng liền nét. Width: độ dày của bút vẽ 93Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDI2. Gọi hàm SelectObject () áp đặt bút vẽ vào DCSelectObject(HDC hDC, HPEN hPen);3. Gọi hàm DeleteObject() xóa bút vẽ :VD1. Tạo mới 1 PenHPEN hPen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0); 94Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDITạo chổi quét:Chổi quét đặc:HBRUSH CreateSolidBrush(COLORREF color);SelectObject(HDC hDC, hBrush);Chổi quét hoa văn:HBRUSH CreatePatternBrush(CHBITMAP hBitmap);hBitmap: hoa văn dạng bitmapSelectObject(HDC hDC, hBrush); Gọi hàm DeleteObject() xóa chổi vẽ 95Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDIHiển thị Bitmap:Tạo nguồn bitmap trong tập tin tài nguyên :BitmapName BITMAP “c:\filebitmap.bmp”Hàm LoadBitmap(): nạp Bitmap vào ứng dụng dùngLoadBitmap(HINSTANCE hThisInst, LPCSTR lpszName) LpszName : là tên của bitmap “BitmapName” Ví dụ:HBITMAP hBit1;hBit1= LoadBitmap(hThisInst, “BitmapName”);96Lập trình C trên WindowsChương 6: ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDIĐạt được device context của cửa sổhDC = GetDC(hWnd);Đạt được device context của bộ nhớ sẽ chứa bitmap HDC hMemDC;hMemDC = CreateCompatibleDC(hDC);Chọn bitmap trong device context của bộ nhớ.SelectObject (hMemDC, hBit1);Sao chép bitmap từ DC của bộ nhớ sang DC của cửa sổBitBlt(hDC,xd,yd, Wd, Hd, hMemDC, xs,ys , SRCCOPY);Giải phóng device context của cửa sổ và bộ nhớ.ReleaseDC(hWnd, hDC);DeleteDC(hMemDC);97Lập trình C trên WindowsLương Văn VânThank You !
Các file đính kèm theo tài liệu này:
- bai_giang_lap_trinh_c_tren_win_luong_van_van.ppt