« Home « Kết quả tìm kiếm

Lập trình trên windows


Tóm tắt Xem thử

- Lập trình sự kiện, dựa vào thông điệp.
- 9 Một cửa sổ làm việc..
- 9 Cho phép thay đổi kích thước cửa sổ (Resizeable)..
- 9 Không có các cửa sổ con..
- 9 Một cửa sổ làm việc chính (Frame window) và nhiều cửa sổ con (Child window)..
- 9 Cho phép Maximize/Minimize/Close các cửa sổ con..
- Cửa sổ:.
- 9 Công việc đầu tiên của 1 ứng dụng GUI là tạo 1 cửa sổ làm việc..
- Mô hình phân cấp: mỗi cửa sổ đều có 1 cửa sổ cha (parent window), ngoại trừ cửa sổ nền Desktop..
- Tại mỗi thời điểm, chỉ có 1 cửa sổ nhận input từ user (Active/Focused window)..
- Cửa sổ Desktop..
- Cửa sổ tiêu chuẩn..
- Cửa sổ hộp thoại (Dialog box)..
- Cửa sổ được hiển thị lên màn hình..
- Windows chờ cửa sổ gửi thông điệp..
- Tương tác của ứng dụng với người sử dụng thông qua một hay nhiều cửa sổ, tạo lập các cửa sổ khi cần thiết và quản lý thông tin trong đó..
- Ví dụ: WM_DESTROY (Hằng này được định nghĩa trong windows.h, WM cho ta biết hằng DESTROY thuộc nhóm thông điệp cửa sổ Windows Message).
- Xây dựng chương trình hiển thị một cửa sổ như sau:.
- Trên đây là đoạn chương trình đơn giản trên Windows, chương trình chỉ hiển thị 1 khung cửa sổ và 1 dòng chữ nhưng có rất nhiều lệnh mà cú pháp rất khó nhớ..
- o nCmdShow: Cho biết cách thức hiển thị cửa sổ khi chương trình khởi động.
- Định nghĩa lớp cửa sổ và đăng ký với Windows.
- o Lớp cửa sổ (window class):.
- Là một tập các thuộc tính mà HĐH Windows sử dụng làm khuôn mẫu (template) khi tạo lập cửa sổ..
- Mỗi lớp cửa sổ được đặc trưng bằng 1 tên (class-name) dạng chuỗi..
- Lớp cửa sổ của hệ thống (System class):.
- ScrollBar The class for a scroll bar Static The class for a static control - Lớp cửa sổ do ứng dụng định nghĩa:.
- Mỗi cửa sổ đều thuộc một lớp xác định..
- o Khi lần đầu chạy, ứng dụng phải định nghĩa và đăng ký lớp với cửa sổ (Window Class).
- Đây là cấu trúc dữ liệu mô tả tính chất của cửa sổ, lần lượt ta gán các giá trị ban đầu cho các thành phần của cấu trúc lớp cửa sổ, bao gồm: Kích thước, kiểu, địa chỉ hàm xử lý thông điệp cửa sổ, định nghĩa hình dạng cho con trỏ chuột (cursor) và biểu tượng (Icon), màu nền, tên lớp cửa sổ..
- Macro Màu nền cửa sổ.
- o Sau khi đã định nghĩa các thành phần lớp cửa sổ ta phải đăng ký lớp cửa sổ với hệ điều hành (RegisterClassEX)..
- lpWClass là con trỏ đến cấu trúc lớp cửa sổ.
- hàm này trả về chỉ số của lớp cửa sổ..
- o Có hai nguyên nhân dẫn đến việc đăng ký cửa sổ thất bại:.
- Tạo lập cửa sổ làm việc (Frame Window).
- o Sau khi đăng ký thành công ta có thể tạo lập cửa sổ thông qua hàm CreateWindow()..
- WS_MAXIMIZEBOX Cửa sổ có phím dãn to trên thanh tiêu đề WS_MINIMIZEBOX Cửa sổ có phím co nhỏ trên thanh tiêu đề WS_OVERLAPPED Cửa sổ maximize và không có cửa sổ cha WS_SYSMENU Cửa sổ có hộp thực đơn hệ thống.
- WS_VSCROLL Cửa sổ có thanh trượt dọc WS_HSCROLL Cửa sổ có thanh trượt ngang.
- o Gọi hàm ShowWindow()để hiển thị cửa sổ.
- với: hwnd chỉ số cửa sổ cần hiển thị..
- Macro Cách thức hiển thị SW_HIDE Dấu cửa sổ.
- SW_MINIMIZE Thu nhỏ cửa sổ.
- SW_MAXIMIZE Phóng to cửa sổ toàn màn hình SW_RESTORE Trở lại kích thước thông thường.
- o Để thông báo cho ứng dụng biết là phải vẽ lại vùng làm việc của cửa sổ, ta phải gọi hàm UpdateWindow() yêu cầu Windows gửi thông điệp đến hàm xử lý thông điệp cửa sổ..
- Vòng lặp thông điệp.
- Thủ tục xử lý thông điệp.
- Nhận và xử lý thông điệp của chương trình..
- Một lớp cửa sổ sẽ khai báo 1 thủ tục window..
- Các thông điệp sau khi xử lý nên trả về giá trị 0..
- Thông điệp WM_PAINT:.
- Các trạng thái xuất hiện thông điệp WM_PAINT:.
- Tạo cửa sổ Hiển thị Cập nhật.
- Xuất hiện hộp thoại (Dialog box), thông báo (Message box) làm che một phần hoặc toàn bộ cửa sổ, khi các hộp thoại này đóng đi thì phải gọi WM_PAINT để vẽ lại cửa sổ..
- Khi thay đổi kích thước cửa sổ WS_HREDRAW | WS_VREDRAW iv.
- Cửa sổ đang ở minimize Æ maximize.
- Thông điệp WM_DESTROY:.
- Xuất hiện khi người dùng chọn nút close trên cửa sổ hoặc nhấn Alt+F4..
- Windows không giữ lại những gì chúng hiển thị trên vùng làm việc của cửa sổ, cho nên chương trình ứng dụng phải hiển thị nội dung cửa sổ khi cần thiết.
- Vẽ lại nội dung cửa sổ khi:.
- Menu chương trình bật xuống làm che khuất một phần cửa sổ..
- ¾ Trong cửa sổ chứa PAINTSTRUCT, mục đích là sẽ tổ hợp lại 2 hay nhiều vùng bất hợp lệ chồng lên nhau..
- Ứng dụng.
- Để lấy toạ độ và kích thước của cửa sổ làm việc ta dùng hàm BOOL GetClientRect(HWND hWnd, LPRECT lpRect);.
- Lấy về kích thước vùng client của cửa sổ hiện hành RECT rect;.
- Tạo MDC tương thích với DC của cửa sổ HDC hMemDC;.
- Cửa sổ có focus.
- Khi cửa sổ có focus thì phát sinh thông điệp WM_SETFOCUS..
- Thông điệp phím MSG msg;.
- Thông điệp Nguyên nhân phát sinh.
- WM_ACTIVATE Thông điệp này cùng được gởi đến các cửa sổ bị kích hoạt và cửa sổ không bị kích hoạt.
- Nếu các cửa sổ này cùng một hàng đợi nhập liệu, các thông điệp này sẽ được truyền một cách đồng bộ, đầu tiên thủ tục Windows của cửa sổ trên cùng bị mất kích hoạt, sau đó đến thủ tục của cửa sổ trên cùng được kích hoạt.
- Nếu các cửa sổ này không nằm trong cùng một hàng đợi thì thông điệp sẽ được gởi một cách không đồng bộ, do đó cửa sổ sẽ được kích hoạt ngay lập tức..
- WM_APPCOMMAND Thông báo đến cửa sổ rằng người dùng đã tạo một sự kiện lệnh ứng dụng, ví dụ khi người dùng kích vào button sử dụng chuột hay đánh vào một kí tự kích hoạt một lệnh của ứng dụng..
- WM_CHAR Thông điệp này được gởi tới cửa sổ có sự quan tâm khi thông điệp WM_KEYDOWN đã được dịch từ hàm TranslateMessage.
- WM_DEADCHAR Thông điệp này được gởi tới cửa sổ có sự quan tâm khi thông điệp WM_KEYUP đã được xử lý từ hàm TranslateMessage.
- WM_GETHOTKEY Ứng dụng gởi thông điệp này để xác định một phím nóng liên quan đến một cửa sổ.
- Để gởi thông điệp này thì dùng hàm SendMessage..
- WM_KEYDOWN Thông điệp này được gởi cho cửa sổ nhận được sự quan tâm khi người dùng nhấn một phím trên bàn phím.
- Thông điệp này được gởi cho cửa sổ nhận được sự quan tâm khi người dùng nhả một phím đã được nhấn trước đó.Phím này không phải phím hệ thống (Phím không có nhấn phím Alt)..
- WM_KILLFOCUS Thông điệp này được gởi tới cửa sổ đang nhận được sự quan tâm trước khi nó mất quyền này..
- WM_SETFOCUS Thông điệp này được gởi tới cửa sổ sau khi cửa sổ nhận được sự quan tâm của Windows.
- WM_SETHOTKEY Ứng dụng sẽ gởi thông điệp này đến cửa sổ liên quan đến phím nóng, khi người dùng nhấn một phím nóng thì cửa sổ tương ứng liên quan tới phím nóng này sẽ được kích hoạt..
- WM_SYSCHAR Thông điệp này sẽ được gởi tới cửa sổ nhận được sự quan tâm khi hàm TranslateMesage xử lý xong thông điệp WM_SYSKEYDOWN..
- WM_SYSDEADCHAR Thông điệp này được gởi tới cửa sổ nhận được sự quan tâm khi một thông điệp WM_SYSKEYDOWN được biên dịch trong hàm TranslateMessage.
- WM_SYSKEYDOWN Thông điệp này được gởi tới cửa sổ nhận được sự quan tâm khi người dùng nhấn phím hệ thống..
- Trong lớp cửa sổ ta định nghĩa con trỏ chuột cho ứng dụng wndclass.hCursor = LoadCursor ( NULL, IDC_ARROR);.
- Thông điệp chuột trong vùng làm việc.
- Xử lý thông điệp.
- hWnd : Định danh của cửa sổ khai báo dùng bộ định thời gian..
- lpTimerFunc : Hàm sẽ xử lý khi thông điệp WM_TIMER phát sinh, nếu chúng ta khai báo là NULL thì Windows sẽ gởi thông điệp WM_TIMER vào hàng đợi thông điệp của cửa sổ tương ứng..
- hWnd : Định danh của cửa sổ dùng bộ định thời gian.
- Xử lý thông điệp*/.
- Các phần tử điều khiển này nhận cửa sổ cha là một hộp thoại.
- cửa sổ Kiểu.
- Các thông điệp không được gửi tới hàm xử lý cửa sổ chính..
- Là một hàm xử lý cửa sổ..
- Có nhiều thông điệp khác nhau..
- /*---hàm xử lý thông điệp hộp thoại---*/.
- trong xử lý thông điệp WM_INITDIALOG.
- /*Gởi thông điệp để đóng ứng dụng lại*/

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt