看到一些小软件运行的时候都在桌面左侧创建了一个窗口,把桌面往右边移动了一部分,请问各位大婶是如何弄的,经过一些资料跟思考,我写的如下代码:
运行发现是OK的,可以把桌面右移一部分,但是假如此时我更换一下系统主题或者换个桌面背景桌面又返回到最左边了,请问如何解决这个问题?
ps:切换了主题之后HWND hwndSHELLDLL_DefView = FindWindowExW(hwndParent, 0, L"SHELLDLL_DefView", 0);这行代码连窗口句柄都拿不到了,又是为啥呢? 我的环境是win8,3Q:eek:
代码:
HWND SetDesktopWindowsPos(BOOL brect)
{
int width = GetSystemMetrics(1);
int right = GetSystemMetrics(0);
HWND hwndParent = FindWindowW(L"Progman",L"Program Manager");
if(hwndParent == NULL)
{
MyFormatMessage(GetLastError());
return 0;
}
HWND hChildWnd = GetWindow(hwndParent, GW_CHILD);
TCHAR childClassName[128];
GetClassName(hChildWnd, childClassName, 128);
HWND hwndSHELLDLL_DefView = FindWindowExW(hwndParent, 0, L"SHELLDLL_DefView", 0);
if(hwndParent == NULL)
{
MyFormatMessage(GetLastError());
return 0;
}
if(brect == TRUE)
{
BOOL bRet = SetWindowPos(hwndSHELLDLL_DefView,HWND_TOP,WINDOWDLG_W,0,right - WINDOWDLG_W,width,SWP_NOSENDCHANGING);
if(bRet == FALSE)
{
MyFormatMessage(GetLastError());
return 0;
}
return hwndSHELLDLL_DefView;
}
if(brect == FALSE)
{
BOOL bRet = SetWindowPos(hwndSHELLDLL_DefView,HWND_TOP,0,0,right,width,SWP_NOSENDCHANGING);
if(bRet == FALSE)
{
MyFormatMessage(GetLastError());
return 0;
}
}
return 0;
}
ps:切换了主题之后HWND hwndSHELLDLL_DefView = FindWindowExW(hwndParent, 0, L"SHELLDLL_DefView", 0);这行代码连窗口句柄都拿不到了,又是为啥呢? 我的环境是win8,3Q:eek: