如题,我自己新建了一个字体,并将此字体更改应用于一个编辑框中,但是没有任何的反应,字体大小和粗细和没有使用函数一样,我的代码如下:
CFont     font;
    font.CreateFont(40,0,0,0,700,FALSE,FALSE,0,DEFAULT_CHARSET,DEFAULT_CHARSET,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SCRIPT,L"Arial");
m_ctlDistance.SetFont(&font);
我是菜鸟,不知道是不是因为我写的函数有问题呢?但是从参数等方面来说,应该没有问题的啊...另外还有一个问题:
我设置一个写文件的操作,但是,结果总不是预料中的那样,
            wchar_t   *endptr;
            CString   strTem;
            CString   strTem1;
            CString   strTem2;
            strTem.Format(L"%f",((wcstod(m_strlonTem,&endptr))/100));
            strTem1.Format(L"%f",((wcstod(m_strLatTem,&endptr))/100));            m_strRecordCon=strTem + '@' + strTem1 + '@' + m_strUTCTem;
            AfxMessageBox(m_strRecordCon);
            strTem2=m_strRecordCon;                //m_strRecordCon在别的函数中是实时更新的,所以在这过度一下            char strUser[1000];
            int     nLength=0;                     wcstombs(strUser, strTem2, 1000);//第二个参数用strTem,可以接受数据,用m_strRecordCon就不行
            nLength = min(strlen(strUser), 1000);
            CString str;
            str.Format(L"%d",nLength);
            AfxMessageBox(str);                     //此时的str理论上说应该是:20,但是程序运行结果是0,而且如果在我的编辑框中输入2个字符,那str就是2,输入3个字符,str就是3,请问这是怎么回事呢?如何修正
            m_file.Write(strUser,nLength);  
            memset(strUser,0,sizeof(strUser));以上就是我的问题啦,我是个菜鸟,刚开始接触VC,希望高手能解释的尽量清晰,尽量详尽一点,谢谢

解决方案 »

  1.   

    CFont    font;这个是局部变量,建议你定义成一个成员变量!
      

  2.   

    后面的那个问题是这样的,我详细说明一下:
    我新建了一个文件,贴上去的这些代码是在新建文件成功的前提下,就是if(新建成功了)
    {
    上面贴出的代码
    }
    我想实现的功能是:
    我想把字符串m_strRecordCon实时的写入到新建的文件中去,因为m_strRecordCon是0.5秒刷新一次的,m_strRecordCon的获取没有问题,也就是说AfxMessageBox(m_strRecordCon)的返回值是正确的,我的m_strRecordCon字符个数是20个,根据代码和我的意愿,第二个AfxMessageBox(str)弹出来的消息显示应该是20,但程序的运行结果却是 0,这样说是否够清晰了呢?
      

  3.   

    去掉了,还是不行
    不过,这个函数等5分钟左右可以很好的执行一次,紧接着执行就有问题另外,前辈,我把font全局变量了,不过没有效果,一点用都没有,还让我调用这个SETFONT的一个按钮都不管用了...
      

  4.   

    1,第二个参数不能为0 ,为0时:
    If this value is zero, the font mapper chooses a closest match value
      

  5.   

    createfont成功与否?我调用了一个对话框,本身CreateFont就是布尔型吧,然后对话框显示创建成功了,我用的还是原来我的办法
      

  6.   

    用你的办法,我在h头文件中定义了Cfont font;但是按钮直接一点作用都不起了
      

  7.   

    createfont已经成功了,谢谢,不过下面那个问题,还得麻烦一下哈
      

  8.   

    font.CreateFont(40,0,0,0,700,FALSE,FALSE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, 
    CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,L"Arial");
      

  9.   

    你把strUser打印出来,看看是否真的有值!
      

  10.   

    设置字体 ,颜色,大小等不成功,我以往的经验就是你的设置的地方不正确,没有放到正确的消息函数里面!!!!比如重绘一般空间 要在这个消息函数里面 WM_CTLCOLOR
      

  11.   

    CFont    font;
        font.CreateFont(40,0,0,0,700,FALSE,FALSE,0,DEFAULT_CHARSET,DEFAULT_CHARSET,
    CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SCRIPT,L"Arial");
    m_ctlDistance.SetFont(&font); 
    你塞给控件的&font是假指针,不会有效
    最后声明成员变量CFont* m_pFont;
    m_pFont = new CFont;
    m_pFont.CreateFont();
    m_ctlDistance.SetFont(m_pFont);
      

  12.   

    楼主第二个问题的代码实在是
    一会是wchar,一会是char,请问你到底是多字节还是unicode
    建议楼主不要用afxmessagebox调试,使用trace吧
      

  13.   


    trace调试???可否解释一下?不懂...新手,谢谢
      

  14.   

    请问一下各位高手
    我想在某个按钮实现这样的功能:点击“添加”,就可在我当前打开的记事本文件中添加一条记录,记录的内容就用str代替了,我原来提的那个问题上有向某个文件中写入的代码,我现在面临的问题是:
    我如何知道当前打开的是哪个记事本文件???也就是说,我怎么知道我要将str写入哪个文件?file.Write()中的这个file,应该怎么得到呢???
      

  15.   

    第二参数为零表示width为0了,估计程序认为不起作用了
      

  16.   

    我也遇到过同样的字体设置问题,原因是font不能是局部变量,这样函数执行完后字体也就消失了,所以不起作用。解决方法是:将font设为类的成员变量,字体就能保持住。