vista、win7厚边框问题解决办法
时间:2010-08-26 来源:成宁2010
int CDBFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; ModifyStyle(WS_CAPTION, 0); //没有这行,最大化的时候有窗口边缘8像素的被截掉了 HINSTANCE hInst = LoadLibrary(_T("UxTheme.dll")); if (hInst) { typedef HRESULT (WINAPI *PFUN_SetWindowTheme)(HWND, LPCWSTR, LPCWSTR); PFUN_SetWindowTheme pFun = (PFUN_SetWindowTheme)GetProcAddress(hInst, "SetWindowTheme"); if (pFun) pFun(GetSafeHwnd(), L"", L""); //去掉xp主题 FreeLibrary(hInst); } hInst = LoadLibrary(_T("dwmapi.dll")); if (hInst) { typedef HRESULT (WINAPI * TmpFun)(HWND,DWORD,LPCVOID,DWORD); TmpFun DwmSetWindowAttributeEX = (TmpFun)::GetProcAddress(hInst, "DwmSetWindowAttribute"); if (DwmSetWindowAttributeEX) { DWORD dwAttr = 1; DwmSetWindowAttributeEX(GetSafeHwnd(), 2, &dwAttr, 4); //去掉vista特效 } FreeLibrary(hInst); } } BOOL CDBFrame::OnNcActivate( BOOL bActive ) //避免每次激活时vista重画边框 { return TRUE; }
相关阅读 更多 +