PDA

View Full Version : Lập trình Win API | Không cho thay đổi kích thước cửa sổ?


phong_tt
09-12-2009, 08:25 AM
Các bạn cho mình hỏi làm thế nào để:
1. Không cho gọi lại thông điệp WM_PAINT mỗi khi resize window.
2. Không cho người dùng thay đổi kích thước của của sổ
3. Tạo help cho 1 chương trình.
Thanks các bro nhiều.

nguyenbinh07
09-12-2009, 09:43 AM
1. Bạn có thể lập trình để chặn bắt thông điệp WM_PAINT
2. Lập trình chặn thông điệp WM_SIZE
3. Mình chưa hiểu ý câu này lắm

phong_tt
09-12-2009, 05:52 PM
Zậy có thể hướng dẫn mình làm thế nào để chặn thông điệp WM_SIZE không. Còn tạo help là mình dùng hàm Htmlhelp() để tạo một help khi nhấn F1, mà mình ko được, Thanks nhiều.

icttrack
09-12-2009, 06:10 PM
Ý cậu là muốn người dùng không thể thay đổi kích cỡ giống như trong dialog. Trong tham số dwStyle ở CreateWindow hay CreateWindowEx, thông thường cho cửa sổ sẽ là WS_OVERLAPPEDWINDOW, thông số này bao gồm cả WS_THICKFRAME chính là thông số khiến người dùng có thể thay đổi kích cỡ cửa sổ vì nó tạo ra sizing border, để bỏ thông số này, cậu thay bằng tổ hợp các thông số sau:
DWORD dwStyle=WS_SYSMENU |WS_OVERLAPPED | WS_VISIBLE |WS_CLIPCHILDREN | WS_MINIMIZEBOX
Còn về sự kiến nhấn F1, thì có thể dùng WM_KEYDOWN hoặc tạo accelerator ánh xạ đến một command id nào đó để xử lý trong sự kiện bắt message WM_COMMAND

phong_tt
09-12-2009, 10:14 PM
Ok mình hiểu rồi cảm ơn bạn nhiều nha.

jempi
11-12-2009, 08:07 PM
1. Bạn có thể lập trình để chặn bắt thông điệp WM_PAINT
2. Lập trình chặn thông điệp WM_SIZE


Chặn ở vòng lặp quản lý sự kiên àh. Bạn có thể post một ct nhỏ chặn WM_PAINT giúp mình đc hok !?.

nguyenbinh07
13-12-2009, 05:35 PM
Để chặn một thông điệp đến ứng dụng bạn có thể sử dụng kỹ thuật Hook hoặc Subclass, bạn lên google thử tìm xem :P