在用MFC编程时遇到三个问题,请问该怎样解决:
1)怎样把主窗口左上角的图标换成自己绘制的图标?(我把工程资源中的图标换了,但主窗口左上角的图标没有变化)
2)怎样把主窗口标题中的:“无标题—”字样去掉?
3)怎样把CString转换成float?怎样把float转换成CString?听说可用atof()和ftoa(),但我试了不行,是否还需要加某个头文件?
请大家指教。多谢!!!

解决方案 »

  1.   

    1)IDR_MAINFRAME的图标要换掉,如果是MDI,还要更换文档模板中的。
    2)在CYourDocument重载SetTitle(),里面:lpszTitle=_T("")。
    3) 把浮点转换成string: char buf[20];sprintf(buf,"%f",floatval);
       把string转换成浮点:atof(),#include<stdlib.h>。
      

  2.   

    补充一下,替换icon之后,要用rebuild all,
    要不,用sendmessage(..WM_SETICON...) 替换图标也行。
      

  3.   

    图标需要同时修改 32*32 和 16*16 两个图标主窗口标题栏可以在属性窗口中的Caption属性中修改
    //**********啊呀呀.... 狼来啦....
      

  4.   

    多谢大家!很多问题已经解决。以下问题仍未解决:
    1)关于主窗口标题中“无标题—”字样,在使用把CYourDocument重载SetTitle()并设lpszTitle=_T("")后,“无标题”三字没有了,但“—”还在,请问该怎样解决?
    2)float转换为CString出现问题:23.3变成了23.299999.
    请问这两个问题怎样解决?多谢!!!
      

  5.   

    1)创建或打开工程Icon(以下都以工程名为Icon为例)。单击Workspace窗口的ResourceView标签,选中资源ID为IDR_MAINFRAME图标资源,然后
    按Delete键把它删除掉。注意:一定要把它删除才行。从Developer Studio的Insert菜单中选择Resource,然后选择Icon,新建(New)一个
    新的图标或导入(Import)一个已有的图标。把新图标的资源ID改为AFX_IDI_STD_MDIFRAME(如果是MDI应用程序)或改为
    AFX_IDI_STD_FRAME(如果是SDI应用程序)。AFX_IDI_STD_MDIFRAME和
    AFX_IDI_STD_FRAME这两个资源ID是MFC中预定义了的。编译并运行程序,可以发现主框架窗口的图标就是你指定的图标。2)在CMyDoc中的OnNewDocument()中加入
       SetTitle (" 文档标题 " );
      
      在CMainFrame中PreCreateWindow()改为 
    BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
    {
        m_strTitle = " titile ";
            return CFrameWnd::PreCreateWindow(cs);
    }一个是改-前的标题,一个是-后,忘了哪个对应哪个,自己试试吧。3)CString str;  float a;
      str="123";
      a=atof(str);
      

  6.   

    to superuuu:double a=23.3;
    CString str;str.Format("%.1f",a);
    AfxMessageBox(str);
      

  7.   

    CString str;
    float f = 23.3;
    str.Format("%f", f);
      

  8.   

    回答你后面的2个问题
    1.重载BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)函数,来阻止MFC重写标题。
     BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
     {
        cs.style &=~ (LONG) FWS_ADDTOTITLE;
        return CFrameWnd::PreCreateWindow(cs);
     }
    2.转换总是有误差的。
      

  9.   

    转换的时候,可以通过"%.xf"来订制有x个小数。例如float f=23.30,这时候用
    str.Format("%.2f",f);