最近学习VC,编译器用VS2010,使用CFileDialog打开一个对话框回来后主窗口成了灰色,菜单和工具栏可以用,但是怎么点都是灰色,只有改变大小后颜色才变过来,请教各位有没有碰到过这种情况?该怎么解决?
代码如下:
CString  strFileName=L"";       
WCHAR  szFileters[]=L"(*.jpg)|*.jpg|(*.bmp)|*.bmp|ALL files (*.*)|*.*||";       
CFileDialog   opendlg(TRUE, L"jpg", L"*.jpg",OFN_OVERWRITEPROMPT,szFileters,this);  if(opendlg.DoModal()==IDOK) 
{       
strFileName=opendlg.GetPathName();   
if(strFileName==L"")
return ;
else
{
iconPath=typeCast.CString2string(strFileName);
//drawPicture(iconPath);
return;
}
}

解决方案 »

  1.   

    主对话框等没有进行刷新,你Invalidate()
      

  2.   

    关闭对话框之后调用一下Invalidate试试
      

  3.   

    这段代码处理一个按钮点击事件
    OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    CString  strFileName=L"";       
    WCHAR  szFileters[]=L"(*.jpg)|*.jpg|(*.bmp)|*.bmp|ALL files (*.*)|*.*||";       
    CFileDialog   opendlg(TRUE, L"jpg", L"*.jpg",OFN_OVERWRITEPROMPT,szFileters,this);  if(opendlg.DoModal()==IDOK) 
    {       
    strFileName=opendlg.GetPathName();   
    if(strFileName==L"")
    return ;
    else
    {
    iconPath=typeCast.CString2string(strFileName);
    //drawPicture(iconPath);
    return;
    }
    }
    //Invalidate();
    return;

    }
      

  4.   

    那没什么问题啊
    这里
    CFileDialog opendlg(TRUE, L"jpg", L"*.jpg",OFN_OVERWRITEPROMPT,szFileters,this);
    改成
    CFileDialog opendlg(TRUE, L"jpg", L"*.jpg",OFN_OVERWRITEPROMPT,szFileters,NULL);
    试试
      

  5.   

    把你的   return  去掉 试试