当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: gtk+ for linux 下,标题中的汉字无法正常显示,控件中的汉字却正常显示... gtk+ for win32 下就根本无法用汉字,如果标题中有汉字则无法显示, 其它控件,比如按钮中有汉字的话会发生如下错误: "** (:692): warning **: invalid utf8 string passed to pango_layout_set_text()&quo......
 ·在线等待    »显示摘要«
    摘要: 以下程序是否正确??max,min的值是多少?? 求10个有符号数的最大和最小值 data segment var1 dw 12 , 78 , 45 ,21, 18 ,-96,-12,57,145,-14 ;此处有符号数该用什么表示,2(8,10,16);进制,计算机是否把有符号数转化为补码 max dw ? min dw ? data ends stack1 segment para s......


CString可以做为struct中的成员吗

 
               
  结构体中有那些可以做为它的成员呀。      
  CString     好象不行耶。      
  LPCTSTR可以可以但是运行的时候会出问题请大家看看      
  我这样做的      
  if(dlg.DoModal()     ==     IDOK)      
  {      
                pos     =     dlg.GetStartPosition();      
                while(pos)      
            {      
                        nextnode=(LPPLAYLIST)malloc(sizeof(PLAYLIST));      
     
                        CString     FileName     =     dlg.GetNextPathName(pos);      
                        nextnode->lppathname=FileName;//      
     
                        CString     PathName=dlg.GetPathName();      
     
                        FileName=FileName.Right(FileName.GetLength()-PathName.GetLength()-1);      
                        nextnode->lpfilename=FileName;//      
                        nextnode->num=npathnum;//      
                        m_playlist.InsertItem(npathnum,nextnode->lpfilename);      
                        npathnum++;      
     
                        if(npathnum==1)      
                        {      
                                        head=nextnode;                              
                                        MessageBox(head->lpfilename);      
                                        prenode=nextnode;      
                        }      
                        else      
                                    {      
                                        prenode=nownode;      
                                        nownode->next=nextnode;      
                        }      
                        nownode=nextnode;      
                        if(npathnum==1)      
                                        nownode->pre=NULL;      
                        else      
                                        nownode->pre=prenode;      
            }      
                                nownode->next=NULL;      
  }      
  MessageBox(head->lpfilename);      
  其中链表定义为:      
  typedef     struct     PlayList      
  {      
                        LPCSTR     lppathname;      
                        LPCSTR     lpfilename;      
                        int                     num;      
                        struct     PlayList     *next;      
                        struct     PlayList     *pre;      
  }PLAYLIST,*LPPLAYLIST;      
     
  LPPLAYLIST     head=NULL,prenode=NULL,nownode=NULL,nextnode=NULL;      
     
  问题是第一个MessageBox()可以正确的输出文件名。      
  第二个MessageBox()就不能正确的输出文件名了,输出的全是乱码。      
  把LPCSTR改为LPCTSTR也不行,还不出现那样的问题。      
  改为CString更不行了运行时出错说什么指定的内存不能为read      
  请大家帮忙。

NO.1   作者: Mackz

请参考一下Windows定义的一些Struct,你就会发现,最好保存字符串的长度信息。

NO.2   作者: sunyard

很简单,head->lpfilename指向的是在while循环里的FileName,出了循环就被释放了,也就是说第二个MessageBox处的head->lpfilename是空悬指针

NO.3   作者: flashzf

struct中可以使用CString,其实struct和class是差不多的。  
  你的问题主要出在sizeof中。因为sizeof(CString)不管你的字符串有多长,都等于4,建议你使用TCHAR   ch[MAX_PATH]来代替。

NO.4   作者: abacus

换成下面这个试试  
  typedef     struct     PlayList      
  {      
                        PlayList(){lppathname   =   "";lpfilename   =   "";}  
                        CString     lppathname;      
                        CString     lpfilename;      
                        int               num;      
                        struct     PlayList     *next;      
                        struct     PlayList     *pre;      
  }PLAYLIST,*LPPLAYLIST;      
  MFC的CString   有个毛病,不付初值的话不分配内存

NO.5   作者: zhaoao5958

gz

NO.6   作者: wuchuncai

cstring   最好不要放到struct中去,他的长度不定,你的struct长度也就不定。  
  会引起一堆问题。  
  经验之谈:能用char   *,就不要用CString,除非你是高手。

NO.7   作者: Hakki

在第二个MesssageBox中的head->lpfilename是野指针,显示自然乱得一塌糊涂啦  
  楼上说的没错   我举双手赞成!!!在结构中尽量用char*哦:D


    摘要: 我有一篇pdf文档的中文文本复制后粘贴出来为乱码, 我在文档属性里发现该文章的原始字体是mstt31afe84946o088...,mstt3195ed4ebao100...等(总之是些不懂的~) 我想可能是由于字体不是windows可识别的宋体之类的,所以粘贴出来为乱码吧~(因为其它pdf文档都可正常复制文本) 请问高手我该怎样才能使得粘贴出来的文字不是乱码呢?????? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE