我在一个对话框类里建了一个函数如下,获取当前CWND*时会出现运行错误,不知道为什么…………大家帮忙看一下
void CfloatWnd::setPos(int OriX, int OriY, int width, int heigth)
{
::SetWindowPos(m_hWnd,NULL,OriX,OriY,0,0,SWP_NOZORDER | SWP_NOSIZE );  CWnd *pWnd;
pWnd = GetDlgItem(IDC_STATIC_floatWnd);    //出现运行错误, IDC_STATIC_floatWnd为一 picture 控件ID CDC *pdc = pWnd->GetDC();
         CRgn rgn;
CBrush br;
br.CreateSolidBrush(RGB(202,225,255));
rgn.CreateRoundRectRgn(0,0,width,heigth,20,20);
pdc->FillRgn(&rgn,&br);
rgn.DeleteObject();
br.DeleteObject(); pWnd->SetWindowPos( NULL,0,0,width,heigth,SWP_NOZORDER | SWP_NOMOVE ); 
::SetWindowPos(m_hWnd,NULL,0,0,width,heigth,SWP_NOZORDER | SWP_NOMOVE);
}

解决方案 »

  1.   

    IDC_STATIC_floatWnd这个控件创建了吗?还没创建的控件用GetDlgItem获取的指针是错误的
      

  2.   


        你要看你的对话框资源上有没有这个ID的控件,很多时候如果你在对话框上删除了控件,其ID也会保留的。
      

  3.   

    灵感!我查查我的Creat函数先……
      

  4.   

    CfloatWnd  中100% 不存在一个 ID为  IDC_STATIC_floatWnd 的实例对像仔细查查吧
      

  5.   

    解决了,前面程序有个指针知错了,Create函数没建出来东西
      

  6.   

    ::SetWindowPos(m_hWnd,NULL,OriX,OriY,0,0,SWP_NOZORDER | SWP_NOSIZE ); //?????