-
14-11-2010, 08:49 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Làm thế nào chương trình vẫn hoạt động khi MessageBox được show lên?
Theo em được biết thì khi messagebox show lên thì chương trình sẽ dừng lại , khi nào messagebox tắt đi thì chương trình tiếp tục hoạt động , vậy có cách nào khi ta không tắt messagebox thì chương trình vẫn hoạt động bình thường không?
View more random threads:
- Làm thế nào để liên kết các hàm đã export trong 1 dll. (proxy function )
- Địa Chỉ BroadCast Trong Máy Chủ Là Windows 7
- Hook nhiều hàm API không bị cash, làm như thế nào?
- tại sao cần dùng subclassing trong khi đã có hook
- Không thể bắt được phím trong hook.
- Certificate của chương trình Exe
- convert một mảng sang LPCWSTR trong API
- [C++]Hook Windows, ứng dụng viết bot cho game
- Lập trình unload inject DLL trên VC++?
- Lấy đệ quy các process con trên windows
-
14-11-2010, 09:56 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tớ nghĩ là không thể. Không thể có các hành động chồng chéo lên nhau như thế được. Nó giống như cậu đang uống nươc thì không thể thở...nếu làm được thì rất dễ bị sặc...hihi
-
14-11-2010, 11:00 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi gaVC++
Vì bạn chưa lập trình đa luồng nên mặc định chương trình của bạn sẽ có một luồng duy nhất thực thi code của main. Khi gặp messagebox thì toàn bộ code trong main tạm thời dừng,và chuyển giao thực hiện mã lệnh của vòng lặp sự kiện bên messagebox. Vòng lặp sự kiến của messagebox sẽ kết thúc khi bạn đóng messagebox hoặc bấm vào một nút nào đó trên messagbox.
Lúc đó quyền điều khiển trả về cho luồng chính của chương trình của bạn.
Như vậy trong luồng nào gọi messagebox luồn đó sẽ phải nhường quyền điều khiển cho và tương tác cho messagebox tới khi messagebox này đóng thì luồng đó mới được thực hiện tiếp.
Vì thế mà để làm như bạn nói tức là vừa có messagebox và vừa tương tác với chương trình chính ta có 2 cách sau
Cách 1 : Sử dụng tạo ra 1 luồng mới ngoài luồng chính, vậy là chương trình của bạn sẽ có 2 luồng, luồng mới tạo sẽ gọi messagebox vì thế mà luồng chính trong chương trình của bạn vẫn tiếp tục hoạt động.
Cách 2: Bạn tự tạo ra một messabox cho riêng bạn từ Dialog, sau đó gọi ShowWindows() để khiển Dialog hiện ra ở dạng modelless tức là bạn có thể tương tác với Dialog-Messagebox vừa có thể tương tác và thực hiện mã lệnh tiếp theo trong luồng chính chương trình của bạn.
-
14-11-2010, 12:13 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Anh có thể nói kỹ cho em về cách 2 được không? Tại em hook MessageBoxA vào tiến trình đó.
-
14-11-2010, 12:44 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bản nhớ đặc điểm của một Modeless Dialog là không hề chiếm quyền điều khiển của thread chính khi nó được hiện ra. Tức là Bạn vẫn có thể tương tác với main Window ở đằng sau và vẫn có thể tương tác với dialog như bạn muốn.
Như vậy thì MyMessageBox của bạn sẽ kế thừa CDialog. trong đó MyDialog sẽ đặt các button các sự kiện xử lý như Dialog chuẩn của Windows.
Lợi ích : Bạn có thể đặt Icon tùy ý ngoài mấy cái icon chuẩn của Windows, Vẽ vời hay sửa giao diện theo ý bạn. Tuy nhiên hơi công phu. Và khi gọi Dialog (nếu muốn Modeless thì gọi qua ShowWindow() còn nếu muốn nó hành xử như Message box chuẩ của Windows thì gọi hàm DoModal()).
Tuy nhiên mình thấy thì cài riêng 1 thread gọi message vẫn hơn, dùng luôn messagebox chuẩn của Windows bạn mà lại đỡ tốn thời gian design lại cái message.
-
14-11-2010, 01:08 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Anh ơi , vậy hook như thế nào để biến messagebox thành dialog vậy anh.
-
14-11-2010, 01:10 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi gaVC++
Bất chấp những lầm tưởng phổ quát, hồ hết những người có âm đạo đều khó lên đỉnh khi bị kích thích âm đạo. Tuy nhiên, điều đó không có tức thị nó không thể vui được! Việc xâm nhập vào âm đạo bằng...
Quý bà giải tỏa bằng việc kích...