VC调试的一个问题:CString

flyaway8888 2006-10-09 11:03:02
我在VC下调试一个程序,其中一个CString 类型的变量的值,在调试窗口查看,信息却是Error:can't display value,这个是怎么回事啊,谢谢
原来我用的时候可以调试啊,是不是有什么选项啊??
...全文
408 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
life_good 2006-10-20
  • 打赏
  • 举报
回复
首先可能是初始化的问题,然后的话可能是已经过了变量的作用域,或者就是根本没有到哈
鄢老 2006-10-20
  • 打赏
  • 举报
回复
如果赋值的时候在调试的时候是看得到的,如果用了Format之后你就看不到了,为了能看到,你最好将这个变量赋一个CString的临时变量,查看这个临时变量的值
T97102003 2006-10-19
  • 打赏
  • 举报
回复
我也遇到过.
CSting szData = "...";
调试象LZ说的那样,
紧接着弄个AfxMessageBox( szData );
是能看到内容的, 到底是咋回事呢?
glunoy 2006-10-19
  • 打赏
  • 举报
回复
.net不等于于c++!vc6。0可以看见cstring的值可以显示整个Cstring的值 但是单个比如 s【2】这样是显示不出来的!而且在watch窗口看不见。。只有在左边才看得见(就是提示变量改动的那一栏)
pioneer_public 2006-10-10
  • 打赏
  • 举报
回复
很可能就是没有到初始化的位置呢,所以不能看到值,就如同中文版中的提示,错误的指针,无法计算表达式等
huamoran 2006-10-09
  • 打赏
  • 举报
回复
代码弄出来看看
思危 2006-10-09
  • 打赏
  • 举报
回复
初始化了吗?
一条晚起的虫 2006-10-09
  • 打赏
  • 举报
回复
说错了,不清楚
一条晚起的虫 2006-10-09
  • 打赏
  • 举报
回复
没到作用域吧
pioneer_public 2006-10-09
  • 打赏
  • 举报
回复
还没有赋值
shixinwenwu 2006-10-09
  • 打赏
  • 举报
回复
可以看见得,我用的是vs.net 2003以前用过CString可以监控到,
必须先设置断点,当程序执行到你那一行才会有值,因为没执行到那一行的话,可能你的CStrin是局部变量(还没有创建呢,没有内存资源,没初始化,哪里来的值)。类成员除外,就像楼上说的,即使是类成员也会有作用域问题,所以最好是在程序中设断点,才能真正监控到变量的值。
flyaway8888 2006-10-09
  • 打赏
  • 举报
回复
没出作用域,程序运行结果是对的,并且原来用的好好的,可以在调试状态下看到CString 对象的值,但是现在我ghost一下系统,不知道怎么回事就不行了,晕
glunoy 2006-10-09
  • 打赏
  • 举报
回复
呵呵 我试过 CString在调试时是不能看见的
kugou123 2006-10-09
  • 打赏
  • 举报
回复
可能是出作用域了
flyaway8888 2006-10-09
  • 打赏
  • 举报
回复
就是不能调试,但是int型的可以调试啊,可以看到数值大小
好象就是不识别CString
到底怎么回事啊,原来好好的啊,郁闷
串口调试助手源程序V1.0或VC串口通讯源程序吧, 开始吧: 1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点); 2.在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。 选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了), 这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。 3.利用ClassWizard定义CMSComm类控制对象 打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。 4.在对话框中添加控件 向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑框的Properties->Styles中把Miltiline和Vertical Scroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。 再打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类, 为IDC_EDIT_RXDATA添加CString变量m_strRXData, 为IDC_EDIT_TXDATA添加CString变量m_strTXData。说明: m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。
摘要:当用户需要对报表需要重新编辑的时候,用Excel或者Word生成报表就会比XML或者HTML的方式更加合理。但是由于Word的组件在使用时候要导入很多类,如果直接加在工程中会使其看上去很乱,所以封装到DLL中是个不错的主意。本文在前人经验指导下对一些常用的操作做了简单的封装,功能由从DLL中导出类CWordOperate提供。 关键字:Word2003,MFC扩展DLL,报表,CWordOperate 一、 鉴于www.vckbase.com中已经有文章对vc使用word生成报表方式做详细的论述,这里不准备对此赘述。仅仅介绍封装类CWordOperate中的函数和DLL的使用。#include "msword.h"class AFX_EXT_CLASS CWordOperate {public: CWordOperate(); virtual ~CWordOperate(); BOOL CreateWordApp(BOOL bShow); // 创建一个word应用程序 void DeleteApp(); // 用后,删除 void ShowApp(BOOL bShow); // 显示,或者隐藏 void QuitApp(); // 关闭外部打开的word应用程序 BOOL NewDoc(CString tpName); // 根据模板创建文档 void SaveDoc(CString Filename); // 保存文档到文件路径 void TypeText(CString Text); // 在当前位置输入文字 void SetTextAlign(int val); // 设置文字对齐方式 void SetTextColor(COLORREF cr); // 设置文本颜色 void AddPic(CString FileName); // 在当前位置插入图片文件 void RunMacro(CString macroName); // 运行一个宏 void AddTable(int nRow, int nCol); // 加一个几行几列的表格 void AddTable(int nRow, int nCol, int autoFit); // 加一个几行几列的表格,列宽度自动 void SelectTable(int i); // 选择当前文档中的第i个表格 void MoveToTableNext(int iTable); // 把选择区指向表格后面 void SetCellText(int iTable, int iRow, int iCol, CString text); // 设置第i个表格中的某行某列的文字 void SetTableTextVAlign(int iTable, int val); // 置第i个表格中文字对齐方式 void SetColWidth(int iTable, int iCol, float width); // 设置列宽度 void SetRowHeight(int iTable, int iRow, float height); // 设置行高度 // 合并两个单元格之间的区域 void MergeCell(int iTable, int cell1Row, int cell1Col, int cell2Row, int cell2Col, CString text); // 设置单元格文本颜色 void SetCellTextColor(int iTable, int iRow, int iCol, COLORREF cr); // 设置单元格背景颜色 void SetCellColor(int iTable, int iRow, int iCol, COLORREF crCell); // 设置单元格边框的四周风格, void SetCellBorderStyle(int iTale, int iRow, int iCol, int sTop, int sLeft, int sBottom, int sRight); // 设置两个单元格之间的区域,边框的四周风格, void SetCellsBorderStyle(int iTable, int iRow1, int iCol1, int iRow2, int iCol2,int sTop, int sLeft, int sBottom, int sRight); // 设置两个单元格之间的区域,背景颜色 void SetCellsColor(int iTable, int iRow1, int iCol1, int iRow2, int iCol2, COLORREF crCell); CString ToString(); protected: _Application app; // 应用程序 Selection sel; // 用来存放获得的选择范围 _Document saveDoc; // 当前活动文档 COleVariant vTrue; // 常量TRUE COleVariant vFalse; COleVariant vOpt;};二、使用DLL中导出类的方法:#include "WordOperate.h"#pragma comment(lib, "wordDll.lib")在类中定义成员: CWordOperate wordFile;使用示例:// 创建文件 CString str;COLORREF crCell = RGB(240, 240, 240);char buffer[255];wordFile.CreateWordApp(TRUE);GetCurrentDirectory(254, buffer);strcat(buffer, "\\tp.doc");wordFile.NewDoc(buffer); // 表格使用wordFile.AddTable(8, 11);wordFile.SelectTable(1);wordFile.MergeCell(iTable, 1, 6, 1, 8, "频域数据");crCell = RGB(255, 0, 0);wordFile.SetCellColor(iTable, 3, 2, crCell);wordFile.MoveToTableNext(1);// 写文字wordFile.TypeText("二. 分析图:\r\n");// 插入图片GetCurrentDirectory(254, buffer);strcat(buffer, "\\chart.jpg");wordFile.AddPic(buffer);// 保存文件,删除对象GetCurrentDirectory(254, buffer);strcat(buffer, "\\测试报表.doc");wordFile.SaveDoc(buffer);wordFile.DeleteApp();// 也可以在删除对象前先关闭程序wordFile.QuitApp();三、使用压缩包的测试程序,按钮二能提供的效果如下图:图一 Word报表效果屏幕截图四、说明:开发环境为:vc6 + sp6 + xp_sdkWord版本:2003企业版压缩包说明:wordDll为库的代码,TestDll为使用示例,宏.txt是格式化段落的宏附加:如果想知道函数中使用的值应该为多少,可以在Word操作的时候录制宏,然后使用单步调试的方式得到想要的值。注:本着开源的精神,把这个使用过的类和大家分享,希望大家有用,如果有错误的地方,希望指正,谢谢
1、VC++编程环境介绍 ①、编程环境、编译器; ②、名词解释; ③、一个简单的MFC对话框工程; ④、个人认为在学习过程中可以看的不错书籍; ⑤、VC编译EXE在没装VC的电脑上运行出错问题解决! 2、ANSI与UNICODE ①、ANSI与UNICODE; ②、不同编码格式下的字符串处理及相互转化; ③、CString常用操作讲解。 3、模态对话框与非模态对话框 ①、模态与非模态对话框的创建; ②、新对话框的初始化工作; ③、两个对话框之间数据传递的几种方法。 4、对话框控件不同类型成员变量的绑定 ①、控件各种类型变量的绑定、最大值及最小值问题; ②、对话框数据交换与验证机制; ③、各种开源控件类的使用; ④、MFC与SDK API中同名函数问题。 5、VC中常用控件的用法讲解 ①、VC中常用控件的用法讲解见:http://www.cctry.com/thread-106-1-1.html ②、VS2008中新增控件的用法讲解。 6、定时器讲解 ①、定时器相关函数讲解:SetTimer、OnTimer、KillTimer; ②、利用定时器实现动态显示时间; ③、改变CStatic控件的文字颜色。 7、MFC对话框程序响应鼠标及键盘消息 ①、MFC对话框程序响应鼠标点击消息; ②、MFC对话框程序响应键盘按键消息; ③、MFC对话框程序响应组合键。 8、MFC对话框注册全局系统热键 9、控件自定义消息的响应: ①、响应按钮控件的右键消息; ②、响应Static控件的双击消息。 ③、自定义编辑框控件只读、颜色不变灰 10、再论“逃跑”按钮的实现 ①、MoveWindow、SetWindowPos、GetWindowRect函数讲解; ②、坐标系的变换。 11、通用对话框讲解 ①、文件选择对话框; ②、目录选择对话框; ③、让对话框程序支持拖拽。 12、菜单操作 ①、对话框程序添加菜单; ②、右键弹出式菜单; ③、菜单项的启用与禁用。 13、对话框的工具栏操作 ①、工具栏的创建; ②、工具栏按钮的响应。 14、对话框的状态栏操作 ①、状态栏的创建; ②、状态栏显示时钟、鼠标位置、鼠标点的颜色信息等。 15、一个简单计算器软件的编写 ①、计算功能的实现; ②、剪贴板操作:将计算结果保存到剪贴板。 16、文件的基本操作之CFile[Ⅰ] ①、文件的创建、打开、关闭; ②、文件的读写、何时读取完毕、读取一行数据; ③、文件指针位置的设置; ④、刷新缓存数据到文件; 17、文件的基本操作[Ⅱ] ①、文件的复制[适用于文件夹]; ②、文件的重命名或移动[适用于文件夹]; ③、文件的删除[只读属性]; 18、文件属性信息的获取与设置 ①、属性信息的获取:大小、时间、隐藏属性等; ②、属性信息的设置 [删除只读属性文件]; ③、判断文件是否存在以及是否为目录; 19、文件夹操作 ①、文件夹的创建与删除; ②、文件夹的属性信息的获取:时间、隐藏属性等; ③、文件夹大小的获取:遍历文件方法[下节课讲解]; 20、文件的遍历与查找小软件的编写[包括文件的各种属性信息] 21、系统各种路径信息的获取 ①、Windows、System32、temp、桌面目录、我的文档等目录的获取; ②、应用程序当前目录的获取与设置及存在的问题讲解; ③、可执行文件所在目录[包括EXE和DLL]; ④、工程当前目录与Debug调试目录的不同。 22、系统信息的获取 ①、当前用户名称、计算机名称的获取; ②、CPU、内存、硬盘信息的获取。 23、进程的相关操作 ①、进程创建的三种方法及CreateProcess参数存在的问题; ②、进程的结束; 进程的枚举 一个简单任务管理器的实现 MFC中动态数组、动态链表、映射表的讲解 ClistCtrl 的自绘操作!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧