我想要的程序是看起来“贴”在桌面上,有点象便条。是不能在最上面的,只能在最底层。
就是那个天气预报秀的效果.
就是那个天气预报秀的效果.
解决方案 »
- CreateProcessAsUser失败,GetLastError 返回5怎么办?
- 单文档子视图怎么挂第三方控件?谢谢
- vc6+omniORB写的CORBA程序传递一个字符串时,总是抱_CrtIsValidHeapPointer(pUserData)的错误,为什么?
- 关于修改注册表
- 如何动态生成类急今晚就要
- 用C++读文本文件的问题。谢谢。
- 谁能介绍几本有关SDK的好书!
- 如何在VC中调用DLL
- LoadBitmap(hInst,IDB_BITMAP1)是错的,难道我要在.rc里面手动添加……
- 获取资源中对话框的尺寸
- vc中出现了错误,望高手指教,谢谢
- 求教:为什么HelloWin执行后跳不出窗口,但在进程里有运行?
我记得桌面句柄不是GetDesktopWindow获得的
HWND hDesktop = ::FindWindow("Progman", NULL);
hDesktop = ::GetWindow(hDesktop, GW_CHILD);
CWnd* pWndDesktop = CWnd::FromHandle(hDesktop);
this->SetParent(pWndDesktop);这段代码 我试过了 可以
hDesktop = ::GetWindow(hDesktop, GW_CHILD);// hDesktop == 0x00000000
这句去掉看看
::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
HWND hDesktop = ::FindWindow(_T("Progman"), NULL);
hDesktop = ::GetWindow(hDesktop, GW_CHILD);
::SetParent(GetSafeHwnd(), hDesktop);这样确实是可以做到
CXTestDlg dlg;
HWND hDesktop = ::FindWindow(_T("Progman"), NULL);
m_pMainWnd = &dlg;
CWnd dWnd;
dWnd.Attach(hDesktop); dlg.Create(MAKEINTRESOURCE(IDD_XTEST_DIALOG),&dWnd);
dlg.ShowWindow(SW_SHOW);
dWnd.Detach();
int nResponse = dlg.RunModalLoop();
可能因为我的是WIN7吧,去掉之后也不行,没有界面了
你是大神,用了你的方法之后貌似可以了。但是也引入了问题。用了你的方法之后,用Spy++可以看到parent窗口是Progman,
但是用
HWND hDesktop = ::FindWindow("Progman", NULL);
hDesktop = ::GetWindow(hDesktop, GW_CHILD);
CWnd* pWndDesktop = CWnd::FromHandle(hDesktop);
this->SetParent(pWndDesktop);父窗口是NULL,这是为什么呢?引入的问题是,只要我的程序启动,天气预报窗口就一直置顶了。