读书人

[win32]怎么让窗口始终保持桌面最底层

发布时间: 2012-03-18 13:55:39 作者: rapoo

[win32]如何让窗口始终保持桌面最底层,且不会受到鼠标单击影响??
我用:::SetWindowPos(g_hWnd, HWND_BOTTOM, 0, 0, WND_WIDTH, WND_HEIGHT, SWP_NOSIZE|SWP_NOMOVE);好像不行,鼠标单击后,仍然会遮住其他窗口。

怎么设置?

[解决办法]
设成不可激活状态
[解决办法]

C/C++ code
  HWND hParent = ::FindWindow(_T("Progman"), NULL);  if(hParent == NULL)    hParent = ::GetDesktopWindow();  if(hParent)  {    ::SetParent(GetSafeHwnd(), hParent);  }
[解决办法]
响应WM_ACTIVE,将枚举得到窗口置于其上,
[解决办法]
#define _WIN32_WINNT 0x0500
#include <Windows.h>
int main()
{

SetParent(FindWindowW(L"Notepad",0),GetShellWindow());
return 0;
}
把记事本放最底下
[解决办法]
最底层可以把桌面设为它的父窗口,不响应鼠标事件可以
LONG dwNewLong = GetWindowLong(m_hWnd, GWL_EXSTYLE);
dwNewLong |= WS_EX_TRANSPARENT |WS_EX_LAYERED;
SetWindowLong(m_hWnd, GWL_EXSTYLE, dwNewLong);
把窗口设置成鼠票透明
[解决办法]
hook桌面窗口。把windows桌面窗口个性化成你的窗口。关于hook技术可以查看《windows核心编程》
hook技术比较麻烦地方在于一是自身相对复杂,二是容易触发防病毒软件,而且windows不同版本下代码可能不同。
[解决办法]
你想做个类似WIN7上日历等得控件?

读书人网 >VC/MFC

热点推荐