Nat*_*man 23
When you create the window, omit the WS_VISIBLE flag and don't call ShowWindow.
Sla*_*tos 14
在win32/mfc环境中,您需要做的是创建一个类并从CWnd继承,如下所示:
class HiddenMsgWindow : public CWnd
{
...
}
Run Code Online (Sandbox Code Playgroud)
在该类的构造函数中,您将实例化一个这样的窗口:
HiddenMsgWindow::HiddenMsgWindow()
{
CString wcn = ::AfxRegisterWndClass(NULL);
BOOL created = this->CreateEx(0, wcn, _T("YourExcellentWindowClass"), 0, 0, 0, 0, 0, HWND_MESSAGE, 0);
}
Run Code Online (Sandbox Code Playgroud)
这会让你看到一个隐藏的窗口,消息泵几乎准备好摇滚.
故事的其余部分是提供窗口消息和这些消息的处理程序之间的链接.
这是通过向您的实现文件(.cpp)添加一些宏和消息处理程序来完成的,如下所示:
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);
}
Run Code Online (Sandbox Code Playgroud)
然后你需要在头文件中填写其余的胶水,如下所示:
class HiddenMsgWindow : public CWnd
{
public:
HiddenMsgWindow();
protected:
afx_msg LRESULT DoNOOP(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
}
Run Code Online (Sandbox Code Playgroud)
就像魔术一样,你有一个隐藏的窗口,可以随时抽取你的信息.
为了使用此消息窗口,您将实例化该类检索它的句柄并根据需要发送或发布消息.像这样:
HiddenMsgWindow *hmw = new HiddenMsgWindow();
SendMessage(hmw->m_hWnd, WM_USER + 1, 0, 0);
Run Code Online (Sandbox Code Playgroud)
ta.*_*.is 10
您可以按照下列指示:https://docs.microsoft.com/en-us/windows/desktop/winmsg/window-features#message-only-windows