Trả lời
Khi bạn tạo cửa sổ, hãy bỏ qua cờ WS_VISIBLE và không gọi ShowWindow.
Bạn gọi CreateWindow()
hoặc CreateWindowEx()
như bình thường nhưng không xác định kiểu WS_VISIBLE
cửa sổ. Tất nhiên ShowWindow()
cũng không nên được gọi.
Man, bạn có câu trả lời chính xác giống như tôi :) –
Cả hai rời ra rằng bạn cần phải là một đứa trẻ của HWND_MESSAGE, http://msdn.microsoft.com/en-us/library/ms632599 (VS.85).aspx # message_only –
Bạn không * cần * tới (* cửa sổ chỉ thông báo * không ngụ ý rằng các loại cửa sổ khác không thể gửi tin nhắn), nhưng tôi đoán nó sẽ tiết kiệm được chi phí khi bạn cần một cửa sổ chỉ nhắn tin - OP không xác định điều đó. –
Trong một môi trường win32/MFC những gì bạn cần làm là tạo ra một lớp và kế thừa từ CWnd như thế này:
class HiddenMsgWindow : public CWnd
{
...
}
trong constructor của lớp đó bạn sẽ nhanh chóng một cửa sổ như thế này:
HiddenMsgWindow::HiddenMsgWindow()
{
CString wcn = ::AfxRegisterWndClass(NULL);
BOOL created = this->CreateEx(0, wcn, _T("YourExcellentWindowClass"), 0, 0, 0, 0, 0, HWND_MESSAGE, 0);
}
Điều này sẽ giúp bạn có một cửa sổ ẩn với một máy bơm tin nhắn gần như đã sẵn sàng để cuộn và cuộn.
phần còn lại của câu chuyện là cung cấp liên kết giữa thông báo cửa sổ và trình xử lý cho các thư đó.
này được thực hiện bằng cách thêm một vài macro và một handler thông điệp tới tập tin của bạn thực hiện (cpp) như thế này:
BEGIN_MESSAGE_MAP(HiddenMsgWindow, CWnd)
ON_MESSAGE(WM_USER + 1, DoNOOP)
END_MESSAGE_MAP()
LRESULT HiddenMsgWindow::DoNOOP(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox(_T("Get Reaaady for a Ruuummmmmmmbllllle!"));
return LRESULT(true);
}
Sau đó, bạn cần phải điền vào phần còn lại của keo trong file header như này:
class HiddenMsgWindow : public CWnd
{
public:
HiddenMsgWindow();
protected:
afx_msg LRESULT DoNOOP(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
}
Và giống như ma thuật, bạn có cửa sổ ẩn tất cả đã sẵn sàng để bơm tin nhắn của bạn.
Để sử dụng cửa sổ thông báo này, bạn sẽ nhanh chóng truy xuất lớp đó xử lý và gửi hoặc gửi tin nhắn như mong muốn. Chỉ cần như thế này:
HiddenMsgWindow *hmw = new HiddenMsgWindow();
SendMessage(hmw->m_hWnd, WM_USER + 1, 0, 0);
Tôi đã chỉnh sửa nó cho bạn. Hãy xem nguồn để biết cách bạn có thể định dạng nhiều thứ khác nhau. :] Mã sẽ được thụt vào bởi bốn dấu cách và bạn có thể thực hiện 'mã nội tuyến' bằng cách bao quanh mã bằng các dấu tích sau: \ 'code \' trở thành 'mã'. – GManNickG
+1 internets cho HWND_MESSAGE –
Bạn có thể làm theo hướng dẫn tại đây: http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx#message_only
Điều này là miễn là miễn là bạn không muốn nhận các tin nhắn * broadcast *, mà thông báo chỉ các cửa sổ không nhận được. –
Ahh, chỉ tình cờ gặp một vấn đề. Nếu u không chỉ định HWND_MESSAGE hành vi bất ngờ có thể xảy ra. Tôi đã sử dụng NULL đó là không chính xác. Trong trường hợp của tôi nó gây ra rằng MS Excel mất 10s hoặc nhiều hơn để tải một tập tin xls, trong khi nó thường mất ít hơn một giây sau khi ứng dụng của tôi không chạy!
MSDN nói điều này là ai đó đã đề cập trước đây.
Nếu bạn không cần hiển thị cửa sổ, vì một số đề xuất tạo cửa sổ, bỏ qua cờ WS_VISIBLE và không gọi ShowWindow.
Nếu không, khi bạn gọi showWindow(), thêm tham số SW_HIDE.
ShowWindow(hWnd, SW_HIDE);
- 1. Ẩn cửa sổ đen trong C++
- 2. GCC/C cách ẩn cửa sổ bảng điều khiển?
- 3. C# Tạo cửa sổ - Xác định cửa sổ Parent
- 4. Ẩn Cửa sổ Lệnh trong C# Ứng dụng
- 5. Ẩn cửa sổ bảng điều khiển từ Process.Start C#
- 6. Cửa sổ bật lên, cách Ẩn thanh URL trong IE8
- 7. Cách ẩn cửa sổ bật lên của URL trong UIwebview
- 8. Cách tạo Cửa sổ Mẫu trong WPF?
- 9. C++/SFML Tạo cửa sổ thất bại
- 10. Ẩn một cửa sổ lô đơn giản
- 11. Cách ẩn Cửa sổ bật lên Gtk khi người dùng nhấp vào bên ngoài cửa sổ
- 12. WIN32, C++: Có thể tạo hiệu ứng động một cửa sổ mà không ẩn nó không?
- 13. Tạo các cửa sổ API sử dụng trong C++
- 14. Cách tạo tệp lưu trữ tar.gz trong cửa sổ?
- 15. Cách tạo tệp vá trên cửa sổ?
- 16. Cách tạo cửa sổ winapi thuần túy
- 17. PhpStorm ẩn thư mục trong cửa sổ Dự án
- 18. Làm cách nào để có cửa sổ gdk cho cửa sổ gtk trong C?
- 19. Định vị cửa sổ C#
- 20. địa chỉ thanh ẩn trong cửa sổ bật lên (chrome)
- 21. Cách đóng cửa sổ Kendo trong nội dung cửa sổ?
- 22. Tạo khóa đăng ký cửa sổ mới bằng C++
- 23. Java JNI: Tạo cửa sổ xoay bằng JNI từ C
- 24. Win32 lập trình ẩn giao diện điều khiển cửa sổ
- 25. Cách tạo cửa sổ phương thức trong JavaFX 2.1
- 26. Qt: Cách tạo cửa sổ cài đặt như trong GTK
- 27. Cách tạo cửa sổ trình duyệt trong J2ME?
- 28. Cách tạo cửa sổ bật lên trong Android?
- 29. Tắt hộp cửa sổ C#
- 30. winapi: CreateProcess nhưng ẩn cửa sổ 'quá trình?
Trạng thái MSDN bạn cũng nên là cửa sổ con của HWND_MESSAGE, hãy xem http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx#message_only –
Nhưng sau đó bạn không nhận được tin nhắn quảng bá . –