15,979
社区成员
发帖
与我相关
我的任务
分享
::SHChangeNotify( SHCNE_ASSOCCHANGED , SHCNF_IDLIST | SHCNF_FLUSH, 0, 0);
void CShareWindowSolidDlg::OnTest()
{
GetDesktopWindow()->Invalidate(false);
GetDesktopWindow()->UpdateWindow();
//::PostMessage( GetDesktopWindow()->GetSafeHwnd(),WM_ERASEBKGND,NULL,NULL);
//::PostMessage(GetDesktopWindow()->GetSafeHwnd(),WM_PAINT,NULL,NULL);
//::SHChangeNotify( SHCNE_ASSOCCHANGED , SHCNF_IDLIST | SHCNF_FLUSH, 0, 0);
CRect rcWnd;
this->GetWindowRect( &rcWnd );
//CDC* pWndDC = m_pWnd->GetWindowDC();
HDC hDesk = ::GetDC( NULL );
CDC* pWndDC = CDC::FromHandle(hDesk );
CPen pen( PS_SOLID,5, RGB(255, 0, 0));
pWndDC->SelectObject( &pen );
//pWndDC->DrawEdge( rcWnd, BDR_RAISEDINNER|BDR_RAISEDOUTER, BF_RECT );
pWndDC->MoveTo( CPoint(rcWnd.left - 6, rcWnd.top - 6 ) );
pWndDC->LineTo( CPoint(rcWnd.right + 6, rcWnd.top - 6 ) );
// 此处只绘制一条直线实验
::ReleaseDC( GetDesktopWindow()->m_hWnd ,hDesk );
}
void CShareWindowSolidDlg::OnBnClickedOk()
{
SetWindowText( _T("ShareWindow") );
HWND hWnd = ::FindWindow( _T(""), _T("ShareWindow") );
m_pWnd = CWnd::FromHandle( this->GetSafeHwnd() );
SetTimer( 1, 100, NULL );
}
void CShareWindowSolidDlg::OnTimer( UINT_PTR nIDEvent )
{
OnTest();
}
CRect rcSomeWnd;
SomeWnd.GetWindowRect( &rcSomeWnd );
rcSomeWnd.inflatRect( 6, 6, 6, 6 );
::SetWindowPos( &myHideWnd, &SomeWnd,rcSomeWnd.left, rcSomeWnd.right, rcSomeWnd.width, rcSomeWnd.height, SWP_NOACTIVE|SWP_SHOWWINDOW );
但是显示SetWindowPos操作失败,GetLastError=5,权限不够。请教一下不同进程的窗口不能够用SetWindowPos操作么?有没有什么好的办法实现呢?