VC++中一些常见问题的解决方法

合集下载

vc常见问题收集整理

vc常见问题收集整理

转=vc常见问题收集整理1。

laiyiling(【陌生人V2.0】) 收集整理问】如何判定剪贴板中有没有文本数据?答】COleDataObject dataObject;dataObject.AttachClipboard();if(dataObject.IsDataAvailable(CF_TEXT)){.....//有文本数据}问】如何得到ComboBox的Edit句柄?答】CEdit *pEdit = (CEdit*)CComboBox.GetWindow(GW_CHILD) 问】得到当前用户目录,即:C:\Documents and Settings\...答】SHGetSpecialFolderPath(NULL,(LPTSTR)szPath,CSIDL_PERSONAL,FALSE);问】状态栏的高度怎样改变?答】m_wndStatusBar.GetStatusBarCtrl().SetMinHeight(40);问】动态调整控件大小时需要注意的问题答】程序在执行WM_SIZE时,可能控件还没有被程序创建完成,你必须确保你的控件被创建后才能使用MoveWindow,1,你可以设一个BOOL变量,初值为FALSE,在OnInitDialog的最后将它的值变成TRUE,在WM_SIZE中判断这个变量,只有当它为真时才进行MoveWindow操作。

2,你也可经先用::IsWindow(控件.GetSafeHwnd())判断控件是否创建,只有当它为真时才进行MoveWindow操作。

问】在PreTranslateMessage()中如何取得组合键比如CTRL+F1答】if(pMsg->message ==WM_KEYDOWN&&pMsg->wParam==VK_F1 && GetKeyState(VK_CONTROL)&0x80)问】SendMessage PostMessage的区别答】PostMessage发送消息后就不等了,发了就回,管你处不处里呢SendMessage发送消息后还要等消息被处理之后函数才返回更具体的解释可以看:/msdnmag/issues/1200/c/问】文档视图程序怎么使程序开始运行后不打开任何一个文档?答】MDI在程序的InitInstance中的ProcessShellCommand函数之前加入:cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing SDIInitInstance函数中关于OnFileNew的调用去掉问】如何向一个按钮发送单击消息?答】SendMessage(WM_COMMAND,((WPARAM)BN_CLICKED)<<8|(WPARAM)I DC_BUTTON,0L);::PostMessage(m_hWnd,WM_COMMAND,MAKEWPARAM(IDOK,BN_CLICK ED),0);::SendMessage(m_hWnd,WM_COMMAND,MAKEWPARAM(IDOK,BN_CLIC KED),0);问】sdi工程,在关闭窗口的时候总是提示我是否保存?怎么才能不让这个窗口弹出直接关闭呢?答】void CMainFrame::OnClose(){// TODO: Add your message handler code here an d/or call defaultGetActiveDocument()->SetModifiedFlag(FALSE); //加入这句!CFrameWnd::OnClose();}问】如何得到其他应用程序的文本内容?答】发送WM_GETTEXT消息,而不能直接用GetWindowText函数,如果是用SDK,直接把CWnd换为HWNDCWnd* pWnd = GetOtherAppWindow();TCHAR buf[512];pWnd->SendMessage(WM_GETTEXT,sizeof(buf)/sizeof(TCHAR),(LPARAM )(void*)buf);看到这里肯定有人会问?为什么GetWindowText函数不行呢?GetWindowText 函数不就是发送WM_GETTEXT消息吗?不是。

安装、使用vc遇到的问题及解决

安装、使用vc遇到的问题及解决

感言:真是久病成良医啊!1. C语言中出现 "Compiling... Error spawning cl.exe是什么意思?怎么解决?很多人在安装VC 6.0后有过点击“Compile或者“Build后被出现的"Compiling... ,Error spawning cl.exe错误提示给郁闷过。

很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,"CL.exe是VC使用真正的编译器(编译程序),其路径在“ VC根目录Bin ”下面,你可以到相应的路径下找到这个应用程序。

因此问题可以按照以下方法解决:打开vc界面点击VC “TOOLS (工具)”一> “Optio n选择)”—> “ Directories(目录)"重新设置“ Excutable Fils Include Files、Library Files、Source Files的路径。

很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK 了。

如果你是按照初始路径安装VC6.0的,路径应为:executatble files:C:\Program Files'Microsoft Visual Studio'Commo n\MSDev98\Bi nC:\Program Files'Microsoft Visual Studio\VC98\BINC:\Program Files'Microsoft Visual Studio'Commo n'TOOLSC:\Program Files'Microsoft Visual Studio\Commo n\TOOLS\WINNTin clude files:C:\Program Files'Microsoft Visual Studio\VC98\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\ATL\INCLUDElibrary files:C:\Program Files'Microsoft Visual Studio\VC98\LIBC:\Program Files'Microsoft Visual Studio\VC98\MFC\LIBsource files:C:\Program Files'Microsoft Visual Studio\VC98\MFC\SRCC:\Program Files'Microsoft Visual Studio\VC98\MFC\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\ATL\INCLUDEC:\Program Files'Microsoft Visual Studio\VC98\CRT\SRC如果你装在其他盘里,则仿照其路径变通就行。

VC中常见的一些编译链接错误的解决

VC中常见的一些编译链接错误的解决

VC中常见的一些编译链接错误的解决VC中常见的一些编译链接错误的解决2010-03-22 15:59问题1:Linking...nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexlibcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main答VC++默认的工程设置是单线程的,而你使用了多线程,所以要修改设置。

选择菜单“Project|settings”,选择C/C++标签,在CODEGENERATION分类中选择除SINGLE-THREADED的其他选择。

比如可以在Use run-time library中选择Debug Multithreaded 或者multithreaded其中,Single-Threaded 单线程静态链接库(release版本) Multithreaded 多线程静态链接库(release版本) multithreaded DLL 多线程动态链接库(release版本)Debug Single-Threaded 单线程静态链接库(debug版本)Debug Multithreaded 多线程静态链接库(debug版本)Debug Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在DOS环境下多线程: 可以并发运行静态库: 直接将库与程序Link, 可以脱离MFC库运行动态库: 需要相应的DLL动态库, 程序才能运行release版本: 正式发布时使用debug版本: 调试阶段使用问题2fatal error C1010: unexpected end of file while looking for precompiled header directive该如何解如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiledheaders。

VC6.0常见错误信息分析

VC6.0常见错误信息分析

1.程序开发过程中出现的错误类型我们在进行程序设计时,不可避免地会犯错误。

程序中的错误可以分为三类:编译错误、运行时错误和逻辑错误。

1.1编译错误编译错误(Compile errors)又称为编译时错误(Compiling-time errors): 是由于错误的编码产生的。

例如关键字拼写错误、将中文标点符号当成英文符号使用、遗漏了某些必要的标点符号或者使用了一个没有定义的标识符。

编译错误一般都是语法错误,当编译器对程序进行语法检查时,都能发现这些错误,并能够指出产生错误的位置(标出行号)。

我们可以根据编译出错信息指出的行号找到对应的源代码行改正错误,重新编译源程序。

只有当所有的编译错误被改正后,才能通过编译检查,产生目标代码文件。

改正编译错误的关键是要能正确理解编译器给出的编译错误信息。

VC++环境中的编译、链接错误信息是用英文表示的。

对于英文基础薄弱的读者,可以参考本实验指导书后面的“VC++编译、链接常见错误和警告信息中英文对照”。

通常情况下,一个语法错误可能产生多条编译错误信息,这是由于株连错误造成的,建议读者在处理编译错误时,找到第一个出现错误的位置改正后重新编译。

这样能够避免被株连错误迷惑。

值得指出的是,现在大部分编译器对错误的定位不精确,如果在编译器指出的行没有发现错误,应该向前查找错误。

例如,当提示第10行发生错误时,如果在第10行没有发现错误,请从第10行开始往前查找错误并修改之。

1.2运行时错误运行时错误(Run-time errors)是在程序的运行阶段出现的,当运行环境检测到程序的某些操作无法执行,例如除数为零时,就会出现运行时错误。

当运行环境检测到程序的某些操作是被禁止的,也会产生运行时错误。

例如,访问数组时超越数组的边界,空指针引用(NULL pointer assignment,空指针赋值,即有指针未赋具体地址就使用了)等等。

1.3逻辑错误逻辑错误(Logic errors):当程序没有按照程序员的意图执行时,就表明程序中存在逻辑错误。

C语言编程中的常见问题与解决方案

C语言编程中的常见问题与解决方案

C语言编程中的常见问题与解决方案C语言作为一门应用广泛的编程语言,在开发软件和系统方面具有重要的地位。

然而,正如其他编程语言一样,C语言编程过程中也会遇到一些常见问题。

本文将探讨一些常见问题,并提供相应的解决方案,以帮助初学者和有经验的开发者更好地应对这些问题。

问题一:语法错误C语言中最常见的问题之一就是语法错误。

这包括标点符号、括号、分号等基本语法错误,以及函数、变量的声明与使用错误等。

当出现语法错误时,编译器会给出相应的错误提示,例如指出错误的行数和错误类型。

解决方法:-仔细检查代码,确保所有的符号都配对使用,并正确使用分号。

-注意变量和函数的声明与使用,确保它们的类型和参数匹配。

-使用代码编辑器或集成开发环境(IDE),这些工具通常会在编写代码时提供实时语法检查功能,帮助避免语法错误。

问题二:逻辑错误逻辑错误是指程序在运行时没有按照预期的方式执行,即结果不符合预期。

这种错误有时很难察觉,因为它们不会引发编译错误或警告。

解决方法:-使用调试工具,例如gdb,对程序进行逐行调试以找出错误所在。

-仔细检查代码,确保逻辑正确。

可以使用流程图或伪代码来描述程序的逻辑。

-使用断言(assert)来验证代码的假设,有助于提前发现错误。

问题三:内存错误内存错误是指在使用指针时,对未分配或已释放的内存进行访问的错误。

这可能导致程序崩溃或产生不可预测的行为。

解决方法:-确认所有的指针都已正确初始化,并在使用完毕后进行适当的内存释放。

-使用动态内存分配函数(malloc、calloc和realloc)时,要确保分配的内存足够,并在使用完毕后进行释放。

-避免在指针为空时进行解引用操作,应先对指针进行空指针检查。

问题四:性能问题C语言相对底层的特性使其具备高性能的潜力,但在编写代码时也容易出现性能问题。

解决方法:-使用适当的算法和数据结构,优化代码的时间和空间复杂度。

-避免重复计算和不必要的循环。

-使用性能分析工具,例如gprof,帮助定位性能瓶颈,并进行优化。

Vc6常见问题解决办法

Vc6常见问题解决办法

Vc6.0常见问题解决方案一、安装下载安装,在这里不在赘述,相信大家都没问题。

记住自己的安装位置,如我的安装路径为:D:\Program files\Microsoft Visual Studio二、安装完成无法运行有些同学在win8下安装VC6.0,无法正常运行,在这里给大家提供一个方法,以本人的安装路径为例:1、找到安装路径下,\Common\MSDev98\Bin文件夹中的MSDEV.EXE文件,将其重命名为MSDEV1.EXE;2、选择MSDEV1.EXE,右键->属性->兼容性->以兼容模式运行这个程序,选择Windows7->确定;3、将原来的快捷方式删除,重新生成一个快捷方式。

4、OK,问题解决。

三、打开文件或添加文件到工程时程序崩溃相信很多同学都遇到过这个问题,本人也是受害者之一,今天来帮助大家拜托困扰。

工具/原料,自行下载(1)VC++6.0(2)修复工具:FileTool.exe步骤:1、下载FileTool.压缩包后,解压得到FileTool.exe,双击FileTool.exe文件再次解压,指定解压路径E:\filetool\,解压后到目录E:\filetool\下有个文件:FileTool.dsw文件2、打开VC++6.0,点击【文件】,【打开工作空间】,选择刚解压出来的目录E:\filetool\下的FileTool.dsw,并确定3、点击【组件】下面的【组件FileTool.dll】,会在解压目录E:\filetool\debug\下生成FileTool.dll文件4、在VC++6.0中点击【工具】,【定制】,在出现的“定制”对话框中,点击【附加项和宏文件】,点击【浏览】,定位刚才生成的FileTool.dll文件,选择类型为Add-ins(.dll),然后选择FileTool.dll文件,点击打开即可!5、此时VC中会出现一个上面只有两个A和O图标的工具栏,关闭VC6.0并重新启动程序6、取消原来的打开文件快捷键:在VC++6.0中点击【工具】,【定制】,点击【键盘】标签,在“类别”下选择“文件”,在“命令”下选择“FileOpen”,在“当前键”窗口中选择CTRL+O条目,并点击“移去”7、取消原来的插入工程文件快捷键:在VC++6.0中点击【工具】,【定制】,点击【键盘】标签,在“类别下选择“工程”,在“命令”下选择“InsertFilesIntoProject”,如果之前给它注册了快捷键,则按照上面所说步骤移除之,默认情况下它是没有快捷键的8、增加新的插入和打开快捷键:在VC++6.0中点击【工具】,【定制】,点击【键盘】标签,在“类别下选择“Add-Ins”,在“命令”下分别选择AddFileToProject和OpenFile两个条目,分别配置快捷键位【Ctr+N】、【Ctr+O】,快捷键可以根据实际情况分配9、经过以上的设置,VC++6.0可以正常打开文件和插入文件四、有些情况下,以上步骤中第4步添加附加项和宏文件时会出现错误:VC++ Unable toregister this add-in because its DllRegisterServer returns an error(因为该add-in DLL(注册服务返回一个错误而导致了其无法注册),解决方法如下:1、以管理员身份打开控制台窗口,使用注册命令"regsvr32.exe" + add-in.dll,比如本人测试时的完整命令为:D:/>regsvr32.exe “D:\Program files\Microsoft Visual Studio\ Common\MSDev98\AddIns\FileTool.dll”;2、显示注册成功,继续之后的步骤即可。

vc中常见断点的解决方法

vc中常见断点的解决方法
ASSERT(FALSE)
CDataExchange::PrepareCtrl()
DLGDATA.CPP文件的第43行
通常的原因是释放了一个同数据交换变量关联的控件
ASSERT(::GetWindowLong(hWndCtrl, GWL_STYLE) & WS_GROUP)
ASSERT(value == -1)
一旦IsKindof()被一个无效的由CWnd派生的对象调用,就会产生这个断言。它说明对象没有初始化过(比如NULL指针),或是内存先前出了故障。
ASSERT(!pDX->m_bSaveAndValidate)
AFXAPI DDX_Control()
DLGDATA.CPP文件的第624行
调用UpdateData()或是UpdateData(TRUE)之前至少要调用一次UpdateData(FALSE),否则就会出现这个断言
在Open方法中充满了断言
CStdioFile::Open()
FILETXT.CPP文件
这些断言捕获没有文件名,或者文件名没有以NULL结尾等情况
ASSERT(m_hMenu == NULL)
CMenu::Attach()
WINMENU.CPP文件的98行
这个断言失败的原因是由于调用了两次LoadMenu(),而中间没有调用DestroyMenu()
ASSERT((dwStyle& WS_POPUP) == 0)
CWnd::Create()
WINCORE.CPP文件中的第747行
起因是由于使用Create()函数时试图赋予WS_POPUP风格没,但是不支持的,想要这种风格应该用CreateEx()函数
ASSERT(pMap != NULL)

C语言技术中的数组操作常见问题解决办法

C语言技术中的数组操作常见问题解决办法

C语言技术中的数组操作常见问题解决办法在C语言中,数组是一种常见且重要的数据结构。

它可以存储一系列相同类型的元素,并通过索引来访问和操作这些元素。

然而,在实际的编程过程中,我们经常会遇到一些与数组相关的问题。

本文将介绍一些常见的数组操作问题,并提供解决办法。

1. 数组越界访问问题数组越界访问是指当我们试图访问数组中不存在的元素时发生的问题。

这可能会导致程序崩溃或产生不可预测的结果。

为了避免这种问题,我们应该始终确保数组索引在合法范围内。

可以通过以下几种方式来解决数组越界访问问题:(1)在循环中使用正确的索引范围。

例如,当使用for循环遍历数组时,可以使用变量作为循环计数器,并确保它的值在合法范围内。

(2)使用条件语句来检查索引是否越界。

在访问数组元素之前,可以使用if 语句判断索引是否超出了数组的大小。

(3)使用辅助函数来进行索引范围检查。

可以编写一个函数来接收数组和索引作为参数,并在函数内部进行越界检查。

这样可以使代码更加模块化和可读性更高。

2. 数组元素初始化问题在使用数组之前,我们通常需要对其进行初始化。

如果没有正确初始化数组元素,可能会导致程序出现未定义的行为。

以下是一些解决数组元素初始化问题的方法:(1)使用循环结构对数组进行初始化。

可以使用for循环遍历数组,并为每个元素赋予初始值。

(2)使用初始化列表来初始化数组。

在C99标准中,我们可以使用初始化列表来为数组赋予初始值。

例如,int arr[] = {1, 2, 3, 4, 5};。

(3)使用memset函数来初始化数组。

memset函数可以将指定的值复制到数组的每个元素中,可以使用该函数将数组元素初始化为特定的值。

3. 数组大小问题在某些情况下,我们可能需要获取数组的大小。

然而,由于数组在传递给函数时会退化为指针,因此无法直接通过sizeof运算符来获取数组的大小。

以下是解决数组大小问题的方法:(1)使用宏定义来定义数组的大小。

使用VC2005一些问题及解决方案(一)

使用VC2005一些问题及解决方案(一)

使用VC2005一些问题及解决方案(一)首先是我使用VC2005在不通阶段的不通感受:刚开始安装VS2005时候感觉:真是大啊!装了我一个上午!!而且运行个VC有时能耗我好大的内存。

刚使用VC2005时候的感受:界面挺不错,貌似功能更强大,对C++标准支持的很好,还可以用我最喜欢的Comic Sans MS字体,还支持代码收缩等等。

虽然比较慢,但是不像VC6. 0那样老是出现编译死机的情况。

开始用VC2005学习写东西的时候的感受:实在没有6.0好用,限制太多,很多地方跟VC6. 0不一样,而且很多功能似乎都找不到了。

还不如6.0方便。

使用一段时间的感受:虽然经常遇到问题但是都是有很好的解决方案的,而且相对6.0,2005的BUG少很多,总体来说如果机器配置还算可以的话,用2005是挺不错的。

下面就是我使用VC2005遇到的以及解决了的问题:VC遇到的以及解决了的问题1,对于Radio控件如何正确设置属性Group?首先要确保几个Radio控件的Tab是按顺序的(可以在对话框编辑器中按Ctrl+D将三个控件T ABORDER设置在一起)。

然后对第一个Radio控件选择Group属性,其他的不用选。

对第一个控件添加关联变量int m_test,并且设置初值-1,则当我们点击第一个控件m_test值是0,点击第二个m_test值是1....依此类推。

2,VC2005中添加虚函数问题:在VC6.0中可以对类右键添加虚函数,在VC2005中需要在类属性中点击一个重写按钮,在那里添加虚函数。

3,VC2005动态添加右键菜单问题:在VC6.0中我们可以在Project->Add To Project->Component and Control中添加组件,如添加Pop-up Menu可以实现添加右键快捷菜单的功能。

但是在VC2005中我们没有这个功能,但是我们可以手动自己添加,也不是很复杂。

步骤如下(假设工程是一般MFC视图工程命名Menu):1,自己添加一个Menu资源,例如命名为IDR_MENU1,编辑之。

学习VC++5.0常遇到的问题

学习VC++5.0常遇到的问题

学习VC++5.0常遇到的问题作为面向对象的开发语言,VC++5.0在很大程度上不同于结构化的编程语言。

习惯于后者编程方法的人们一开始接触VC,总会有不适应的感觉。

因此在学习的过程中常常被某些问题弄的不知所措,尽管有些问题是一点就通的。

笔者根据学习VC的亲身体会,并结合不少学生提出的问题,发现初学者经常会遇到以下问题。

一.文档与视的困惑对于初次接触VC++5.0的读者来说,&ldquo;视&rdquo;是一个非常难以理解的概念。

在这里它并非动词&ldquo;看&rdquo;的意思,而是作为名词来用(其实是View的译词),是作为&ldquo;显示&rdquo;的意思,即显示数据:可以通过屏幕输出,也可以通过打印机输出。

对于用户来说,视就是一个普通窗口;对于程序员来说,它是从类库中的CView类派生出的一个对象,视对象的行为由CView 类及其派生类的成员函数来决定。

文档的概念较好理解,它是存储数据的载体,在文档中可以对数据进行存储、调出等操作。

文档对象驻留在场景后面,向视对象提供需要显示的信息。

视对象通过获取指向文档的指针访问文档数据(利用GetDocument()函数),并能改写文档数据,然后通过OnDraw()的方法绘制文档数据。

二.如何清除&ldquo;查找&rdquo;历史记录每次查找之后,VC都会将查找的关键词以历史记录的形式保存起来,若再次查找时,从&ldquo;查找&rdquo;下拉组合框里可直接选择关键词,不需再次输入。

这样做的好处是的确可以节省不少时间,但是时间一长,历史记录的关键词也就越多,有很多根本不会再次用到,这些历史记录应该及时清除。

可以通过更改注册表的方法清除历史记录,步骤如下:打开注册表编辑器,找到HKEY_CURRENT_USER\Software\Microsoft\DevStudio\5.0\Search子键,删除该子键中find1,find2&hellip;&hellip;串值;如果将replace1,replace2&hellip;&hellip;串值删掉,将会清除&ldquo;替换&rdquo;的历史记录。

VC常见错误与解决方法

VC常见错误与解决方法

1.源文件名称
错误:2-3.txt
正确:2-3.c或2-3.cpp
2.同时编辑、运行多个源文件
错误:同时编辑、运行多个源文件,可是运行的总不是自己当前编辑的。

正确:每次只编辑、运行1个源文件。

3.VC出现故障
错误:不能编译、运行。

正确:先保存文件!按Ctrl+Alt+Del,启动任务管理器,点“进程”选项卡,找到MSDEV.EXE,点“结束进程”,点“是”即可。

4.修改代码后运行没有变化
错误:点“!”按钮时你选择了No。

正确:点“!”按钮时选择Yes。

5.编译时出现error,不能运行,不知道怎么办
正确:在output窗口中,找到第1个error,双击此行,看看提示信息,错误的位置大部分在此行及其之前的几行,剩下的就是你的英语水平了,不会就copy那些信息,去google或者百度。

vc错误解决

vc错误解决

现象是用 debug中的 step info或者run to cursor合着设置断点会出现One or morebreakpoints cannot and have been disabled. Execution will stopat the beginning of the program.解决方法,1.在project->setting->c/c++-general->debug info->program databse for edit and continue ;2.edit->breakpoints->removeall;3.build-> active project configuration->*.exe win32 debug.经过以上三步,ok!另一篇:一、两种调试方式:1、Debug模式:2、Release模式:单击菜单[Project]->[Settings…],出现"Project Settings"对话框,选择“Release”状态;将C/C++标签中的Category选择General,Optimizations选Disable (Debug),Debug info选Program Database;在Link标签中选中Generate debug info复选框。

注:Release模式稍好点,因为某些情况程序只能在Release下运行,如“显示对话框的DLL”在Debug下显示出窗口后就死在那里。

二、调试中可能的错误:“不能调试”、“断点错误”。

1、“不能调试”:“One or more breakpoints cannot and have been disabled. Execution will stop at the beginning of the program.”2、“断点错误”:"One or more breakpoints are not positioned on valid lines.These breakpoints have been moved to the next valid line."注意:“不能调试”跟“断点错误”不是一回事,“断点错误”会禁用某些错误断点,但“不能调试”则会禁用所有断点。

VC++常见的错误及其解决方法

VC++常见的错误及其解决方法

VC++中常见的编译错误及其解决方第一部分编译错误1.error C2001: newline in constant 编号:C2001 直译:在常量中出现了换行。

错误分析:(1)字符串常量、字符常量中是否有换行。

(2)在这句语句中,某个字符串常量的尾部是否漏掉了双引号。

(3)在这语句中,某个字符创常量中是否出现了双引号字符“"”,但是没有使用转义符“\"”。

(4)在这句语句中,某个字符常量的尾部是否漏掉了单引号。

(5)是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号。

2.error C2015: too many characters in constant 编号:C2015 直译:字符常量中的字符太多了。

错误分析:单引号表示字符型常量。

一般的,单引号中必须有,也只能有一个字符(使用转义符时,转义符所表示的字符当作一个字符看待),如果单引号中的字符数多于4个,就会引发这个错误。

另外,如果语句中某个字符常量缺少右边的单引号,也会引发这个错误,例如:if (x == 'x || x == 'y') { … }值得注意的是,如果单引号中的字符数是2-4个,编译不报错,输出结果是这几个字母的ASC码作为一个整数(int,4B)整体看待的数字。

两个单引号之间不加任何内容会引发如下错误:error C2137: empty cha racter constant。

3.error C2018: unknown character '0x##'编号:C2018 直译:未知字符…0x##‟。

错误分析:0x##是字符ASC码的16进制表示法。

这里说的未知字符,通常是指全角符号、字母、数字,或者直接输入了汉字。

如果全角字符和汉字用双引号包含起来,则成为字符串常量的一部分,是不会引发这个错误的。

4.error C2041: illegal digit '#' for base '8'编号:C2141 直译:在八进制中出现了非法的数字…#‟(这个数字#通常是8或者9)。

VC中常见错误解决方法之C4251

VC中常见错误解决方法之C4251

VC编程中疑难错误解决方法之C4251代码:Warning C4251描述:class“Class Name”需要有dll接口原因和解决方法:a)如果该类(Class Name)的定义里面仅含有编译器内置的类型变量,如int、float等等,或者成员函数仅使用了这些变量作为参数,那么只需要直接导出该类即可。

class _declspec(dllexport) YourClass{}b)如果该类(Class Name)的内部使用了其他类(Other Class),那么这个类(Other Class)最好也导出,不然,首先编译的时候会出现编译警告:(warning C4251: needs to have dll-interface )class__declspec(dllexport) YourClass{YourAnatherClass m_data; // 这里会出现warning 4251. 如果YourAnatherClass 没有导出的话.}解决办法: 在YourAnatherClass定义的地方加上class__declspec(dllexport) YourAnatherClass{}当你的YourAnatherClass没有导出的时候,dll的使用方会出现链接错误。

c)当类的内部使用了STL模板的时候,也会出现C4251警告, 情况会有所不同class__declspec(dllexport) YourClass{vector<int> m_data; // 这里会出现warning 4251. 因为vector<int>类型没有被导出}上面所使用的模板代码(无论是STL模板或自定义模板),编译dll时会出现C4251警告,但是dll的使用方,却不会出现链接错误!这个因为,dll的使用方那里也有一套模板的定义,当他们使用那个vector<int>的时候,虽没有导出,但是用户自己也有一套STL模板(或者是自定义的模板),用户会利用自己的模板实例化这个dll中没有导出的东西!所以,对于因为使用STL(或模板)出现的C4251警告,关闭之即可:#pragma warning(disable:4251)若想不使用通过关闭警告的方式关闭警告,那么将类导出即可。

VC安装失败的一些解决方案

VC安装失败的一些解决方案

VC安装失败的一些解决方案VC(Visual C++)是一种编程语言,用于开发Windows平台上的应用程序。

在进行VC安装过程中,可能会出现各种失败的情况。

以下是一些解决VC安装失败的常见问题和解决方案。

1.安装程序无法启动或一直停留在启动页面:- 确保系统已经完成所有的更新:打开Windows更新,检查并安装所有可用的更新。

-关闭临时停用任何防火墙或杀毒软件:有时,安全软件可能会阻止安装程序运行。

暂时关闭安全软件,然后尝试重新运行安装程序。

2.安装程序报告错误代码:-在错误代码上:将错误代码输入引擎,找到相关的解决方案并跟随指示进行修复。

- 运行Windows安装程序故障排除工具:Windows提供了一套用于识别和解决安装问题的工具。

在Windows设置中并运行“故障排除”,然后选择“修复Windows程序包安装”。

3.安装程序卡在其中一步骤上无法继续:-检查硬件兼容性:一些VC版本可能对硬件有特定的要求。

确保计算机的硬件满足VC版本的要求。

- 清理临时文件夹:在Windows资源管理器中,选择计算机的主驱动器,然后右键单击并选择“属性”。

在“常规”选项卡上,单击“磁盘清理”,然后选择您想要清理的文件类型。

然后,单击“确定”并等待清理完成。

4.安装程序在安装过程中崩溃或突然停止运行:- 更新操作系统:确保计算机上的Windows操作系统已更新到最新版本,以获取最新的安全修复和错误修复。

-禁用非必要的启动项目:运行MSCONFIG并在“启动”选项卡上禁用所有非系统必需的启动项目。

然后,重新启动计算机并尝试重新运行安装程序。

- 运行SFC扫描:在命令提示符中,键入“sfc /scannow”并按Enter键。

该命令将扫描并修复操作系统文件中的任何损坏。

VC6.0无法加载文件的解决办法

VC6.0无法加载文件的解决办法

VC6.0无法加载文件的解决办法1.问题简述在VC6.0中,很多用户都遇到这样的问题就是不能从菜单里打开加载文件,一旦这样做,程序就会崩溃。

究其原因,大致可分为两类,一是由于电脑内安装有Microsoft Office Visio 2007,二者互不兼容所致。

二是由于使用vista或Win7操作系统二者不兼容所致。

您可以简单的删除Visio或者换成Xp系统,但是这显然十分麻烦而且不划算。

这里,为您提供一种方法使得“鱼与熊掌可以兼得”。

2.解决办法具体做法如下:1. 下载FileTool.exe,并解压2. 打开VC6.0,点击File-Open Workspace,选择刚解压出来的FileTool.dsw,并确定3. 点击Bulid-Build FileTool.dll,生成FileTool.dl文件(在debug文件夹中,有时可直接解压得到FileTool.dll文件,则上述一步略去。

作者附带的压缩包直接解压缩得到FileTool.dll文件)4. 把生成的FileTool.dll文件拷贝到合适的地方(避免误删),在VC6.0中点击Tools-Customize5. 在出现的“Customize”对话框中,点击Add-Ins and Macro Files标签6. 点击Browse,在下拉菜单中选择dll格式的文件,选中刚才保存的FileTool.dll文件。

此时有可能出现一个问题"unable to register this add-ins because its DLLRegisterServer returns an error"要解决这个问题,首先,单击开始——附件——命令行提示符(用管理员身份),cd到刚才存放FileTool.dll的目录下上面提到的cd是在dos下查看电脑文件的方法,相信很多人都对其并不熟悉,如图为起始界面,默认盘符为C盘输入d:后,进入d盘,其他盘符也一样输入dir,查看当前目录下的子文件选择某一文件夹打开,例如我们要打开Capture Studio文件夹,只需输入“cd Capture Studio”这样就打开了该文件夹按照以上方法,一直打开至刚才存放FileTool.dll的目录下在命令行中打入"regsvr32 FileTool.dll “登记这个dll。

VC常见问题解答

VC常见问题解答

VC常见问题解答1. 如何获取应用程序的实例句柄? (2)2. 如何通过代码获得应用程序主窗口的指针? (2)3. 如何在程序中获得其他程序的图标? (2)4. 如何编程结束应用程序?如何编程控制windows的重新引导? (3)5.怎样加载其他的应用程序? (3)6. 如何自定义消息 (3)7. 如何改变窗口的图标? (4)8. 如何改变窗口的缺省风格? (4)11. 如何将窗口居中显示? (4)12. 如何让窗口和 MDI窗口一启动就最大化和最小化? (4)13. 常用的视图类 (4)14. 如何获取有关窗口正在处理的当前消息的信息 (4)15. 如何创建一个不规则形状的窗口 (5)16. 如何在代码中获取工具条和状态条的指针 (6)17. 如何使能和禁止工具条的工具提示 (6)18. 如何设置工具条标题 (6)19. 如何创建和使用无模式对话框 (7)20. 如何在对话框中显示一个位图 (8)21. 如何改变对话或窗体视窗的背景颜色 (8)22. 如何获取一个控件的指针 (8)23. 如何禁止和使能控件 (9)24. 如何改变控件的字体 (9)25. 如何用位图显示按钮 (9)26. 计算器按下ESC键消失问题的解决 (10)27. 鼠标拖动窗口任意位置移动窗口 (10)28.如何解决同学们做的记事本屏幕闪烁问题? (11)29. 如何解决将工程目录拷贝后发现Tipdlg.h找不到的错误? (11)30.为什么我们自己的应用程序程序只能打开自己保存的文件,别的程序(如Windows的记事本)不能打开我们的程序生成的文件? (11)31. 如何解决插入符位置不正确(每添加一个字符,插入符位置不正确)? (11)32. 如何响应回车等虚键? (11)33. 改变应用程序(视图类基于CEditView)的背景颜色 (12)34. 改变应用程序(视图类基于CEditView)的文本颜色。

(13)35. 改变应用程序(视图类基于CEditView)的字体。

VC++操作及常见问题解决方法

VC++操作及常见问题解决方法

VC++操作及常见问题解决方法一VC++有关操作方法:1整理代码:选上所有较乱的代码,同时按下Alt加F8键即可.2图形界面与命令提示符界面数据的复制方法:在图形界面按Ctrl+C,在命令提示符界面点击右键->粘贴即可.3VC编程时不显示提示信息(类的成员和参数列表)解决:1).菜单-->工具(Tools)-->选项(Options)-->编辑器(Editor)-->语句完成选项(Statement completion options)--->勾选自动列出成员(Auto list members)。

2).关闭工程-->把工程下的.ncb(VC++ Intellisense Database)文件删除-->再重新打开工程即可。

3).安装Visual AssistX插件(下载地址/detail/wentasy/4010401)4切换工程:工具栏空白处点右键->选取组件(取消初使选取的是编译微型条)->通过VC编译器的下拉列表可切换工程.链接库文件:工程->设置->连接->对象/库模块(移到最后)->输入相应库文件->确定5增加消息处理器:1)右键ClassView的类名->选Add Windows Message Handler->选WM_...->选Add Handler->选EditExisting;2)点VC++的菜单查看->选建立类向导->选工程->选类名->选消息->选Add Function->选Edit Code.3)先双击类名在头文件的DECLARE_MESSAGE_MAP()前的注释宏间加入消息响应原型声明,然后双击构造函数名在源文件中的BEGIN_MESSAGE_MAPHE和END_MESSAGE_MAP间的注释宏间加入消息响应函数的宏,最后在源文件中实现.6.windowsAPI程序引用C++类(如error C2065: 'CString' : undeclared identifier错误)的方法:包含<Afx.h>头文件(不要<windows.h>);定义预处理器(工程->设置->C/C++->预处理器定义:_AFXDLL);选择多线程(工程->设置->C/C++->CodeGeneration->Use run-time library->Multithread DLL).7.删除消息处理函数及相关信息:右键函数名->Delete->是.8.使用多线程的C run-time library(用MFC时也要使用多线程): 编译多线程程序时提示error C2065: '_beginthread' : undeclared identifier 解决方法是:debug状态:settings-> C/C++-> Project Options中加入/MDdrelease状态:settings-> C/C++-> Project Options中加入/MD.9.链接库文件的方法:1) 使用#pragma comment(lib,"MyDll.lib")语句;2) 在工程的Setting->Link页的Object/Moduls栏填入MyDll.lib既可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC++中一些常见问题的解决方法(1)为什么某个类突然在工作区间里面突然看不见了?只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了(2)在基于对话框的程序中,一按回车键,对话框就没了。

把确定按纽的缺省属性前面的对勾去掉,重载OnOk()函数,在OnOk()函数里注释掉调用基类的OnOk()函数那行代码(3)为什么我的VC6.0自动显示成员列表功能时有时无?删除该项目扩展名为.ncb文件,重新打开该项目。

(4)孙老师的视频教程第一课的程序,为什么在我机子上不行?选菜单project->settings...在弹出的对话框中选Link,在最下边有Project Options,把里边的/subsystem:console删除就可以了(5)如何干净的删除一个类?先从workspace中的fileview中删除对应的.h和.cpp文件;再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件;再删除.clw文件。

最后打开项目,rebuild all。

(6)网络编程一课中的聊天室程序在为什么老是绑定失败?一般这种问题是端口设置在6000监听,正好和QQ的端口冲突,多换几个端口试试就可以了(7)网络程序只能在debug运行,release不行,提示错误error LNK2001: unresolved external symbol __imp__WSAStartup@8在Release下仍然需要添加Ws2_32.lib。

(8)我画了一条直线但是当窗口最大化时或者被其他窗口覆盖时,直线不见了,只剩下直线原先存在的窗口这是因为窗口重绘,你可以在响应WM_PAINT的OnDraw()函数中添加画线的代码(9)在安装VC时未安装MSDN, 自己再用MSDN安装盘安装后在VC中按F1无法调用?修改注册表是最直接的方法,具体过程如下: 在HKEY_CURRENT_USER/Software/Microsoft/DevStudio/6.0/Help下增加Enable,Filename,State三个主键,注意其类型,含义如下: Enable 类型:DWORD,默认值是1,改变为0x00000001 Filename 类型:字符串改为c:\programfiles\....\MSDev98\help\Msdev.hlp State 类型:DWORD 默认值为0,改变为0x00000001(10)如何在应用程序中打开一个超级链接?这个问题实际上很简单,只要使用ShellExecute API函数就行了(11)如何在没安装VC的环境下的机器也能打开运行用MFC编写的程序?把编译模式改为RELEASE,然后点工程-》设置-》常规,选择使用MFC作为静态连接库(12)如何自定义一个消息?1.#define WM_MY_MESSAGE WM_USER+1;2.头文件DECLARE_MESSAGE_MAP()前写消息响应函数原形;3.在BEGIN_MESSAGE_MAP添加消息到函数的映射.4.写函数的实现部分(13)怎样改变VC++编辑器默认的颜色?工具—》选择—》格式,选中注释的颜色即可改变。

(14)复制了一段代码到当前工作空间里,可是代码排列很乱,如何调整?简单,按下鼠标左键拖动鼠标将代码选择上,同时按下键盘的ALT+F8键(15)_T("Option 1"),_T()是什么意思?为什么要转换,直接用不可以?_T()自动将()内字符串转成unicode or Multibyte-character or SBCS (ASCII) 根据系统宏定义,为了将程序与vb等unicode 编码的程序交互,为了程序的国际化,为了..(16)如何改变视图的背景色?你可以通过处理WM_ERASEBKGND消息来改变CView、CWnd或CWnd对象的背景色(17)如何建立多文档?为了加入对附加文档类型的支持,你可以在CWinApp派生类中创建和注册附加CmultiDocTemplate对象。

将一个附加文档类型加入到MFC程序的一般步骤如下:用AppWizard来创建一个新的文档类和视图类。

用资源编辑器增加新的资源字串来支持新的文档类。

要想知道关于文档样板字符串格式的更多内容,请参阅"如何理解文档样板字符串"。

用资源编辑器增加附加的应用程序图标和菜单资源。

注意,这些资源中每一个的ID都必须与在步骤2中创建的文档模板字符串的ID是相同的。

这个ID被CmultiDocTemplate类用来识别与附加文档类型相关的资源。

在应用程序的InitInstance()函数中,创建了另一个CMultiDocTemplate对象并且用CWinApp::AddDocTemplate()函数来注册。

例如:CMultiDocTemplate* pDocTemplate2 = new CMultiDocTemplate(IDR_DOC2TYPE, RUNTIME_CLASS(CDoc2),RUNTIME_CLASS(CMDIChildWnd),RUNTIME_CLASS(CView2));AddDocTemplate(pDocTemplate2);最后,将定制的序列化和绘图代码加入到你的新文档和视图类中。

(18)如何使我的程序在启动时不创建一个新文档?在程序的InitInstance中的ProcessShellCommand函数之前加入:cmdInfo.m_nShellCommand = CCommandLineInf:FileNothing(19)如何获取应用程序的实例句柄?应用程序的实例句柄保存在CWinApp m_hInstance 中,可以这么调用AfxGetInstanceHandle获得句柄.(20)如何得到程序中其它类的指针(例如框架类,视类,文档类等等)?MFC应用程序中指针的使用(转)(21)为什么创建类的时候我不能直接生成从CDialogBar派生的类?ClassVizard的确没有提供这个功能,要从没有提供的类派生类的时候只能通过手动修改来完成(22)我用classwizard 给静态文本框加变量时,为什么里面没有它的ID??因为所有的静态文本控件的ID都被默认为了IDC_STATIC,你只需要修改这个ID号就可以了(23)获得各种目录信息Windows目录: Use "GetWindowsDirectory"Windows下的system目录: Use "GetSystemDirectory"temp目录: Use "GetTempPath"当前目录: Use "GetCurrentDirectory"(24)如果让控制台应用程序支持MFC类库?可以在控制台应用程序中include 来引入库,但是控制台应用程序缺省是单线程的,是多线程的,为解决该矛盾,在project setting->c/c++ 选项,选择code generation,在use run-time library 下拉框中选择debug multithread。

(25)我怎样才能在我的应用程序中循环浏览已经打开的文档?使用CDocTemplate中未公开的GetFirstDocPosition()和GetNextDoc()函数。

(26)才能在我的应用程序中循环浏览已经打开的视?使用CDocument 中未公开的GetFirstViewPosition() 和GetNextView() 函数。

(27)数PreCreateWindow是干什么用的?PreCreateWindow 允许你在调用CreateWindow 之前来改变窗口属性。

(28)该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名?在PreCreateWindow 函数中删除FWS_PREFIXTITLE 标志的窗口样式:cs.style &= ~FWS_PREFIXTITLE;(29)我应该怎样防止MFC在窗口标题栏上添加文档名?在PreCreateWindow 函数中删除FWS_ADDTOTITLE 标志的窗口样式:cs.style &= ~FWS_ADDTOTITLE ;(30)我应该如何改变视窗口的大小?因为视窗口实际上是框架窗口的子窗口,所以你必须改变框架窗口的大小,而不是改变视窗口。

使用CView 类中的GetParent() 函数获得指向框架窗口的指针,然后调用MoveWindow() 函数来改变框架的大小。

这会使变尺寸的视充满框架窗口。

(31)我有一无模式对话框。

我怎样才能在窗口退出时删除CDialog对象?把“delete this”加到PostNcDestroy 中。

这主要用在需要自动删除对象的场合。

(32)为什么把“delete this”放在PostNcDestroy中而不是OnNcDestroy? OnNcDestroy 只被已建立的窗口调用。

如果建立窗口失败( 如PreCreateWindow ),则没有窗口处来发送WM_NCDESTROY 消息。

PostNcDestroy 是在对象窗口被完全删除,在OnNcDestroy 后,甚至在窗口建立失败之后调用的。

(33):如何为一个MFC应用程序添加ODBC功能?(1)在文件Stdafx.h文件末尾添加下面一行:#i nclude // MFC ODBC database classes(2)在文本模式下编辑RC文件(利用File->Open As text 方式)在下面的程序行(共有两处)#i nclude "l.chs\afxprint.rc" // printing/print preview resources添加下一行:#i nclude "l.chs\afxdb.rc" // Database resources(34):数据库表修改后,如何快速更新一个绑定到表的CrecordSet记录集?利用ClassWizard 中Member Variables标签下选中记录集类后,利用UpdateColoumns 和Bind All。

(35):怎么才能让窗口最大化显示啊?我在框架的PreCreateWindow中cs.styles|=WS_MAXIMIZE 不行啊, OnCreate 中SetWindowLong(m_hWnd,GWL_STYLE,WS_MAXIMIZE);也不行啊上面两种方法都不行,要是窗口最大化显示,应改变ShowWindow()的参数,在InitInstance()中将m_pMainWnd->ShowWindow(...)改为m_pMainWnd->ShowWindow(SW_SHOWMAXINIZE);就Ok(36)怎么把别人程序中设计好的对话框放到自己的程序中??用VC打开自己的程序,选择资源视图;然后点FILE->OPEN菜单项,打开设计好的对话框的资源文件(后缀名为。

相关文档
最新文档