VC++中一些常见问题的解决方法
- 格式:doc
- 大小:54.00 KB
- 文档页数:5
转=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消息吗?不是。
感言:真是久病成良医啊!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中常见的一些编译链接错误的解决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。
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语言中最常见的问题之一就是语法错误。
这包括标点符号、括号、分号等基本语法错误,以及函数、变量的声明与使用错误等。
当出现语法错误时,编译器会给出相应的错误提示,例如指出错误的行数和错误类型。
解决方法:-仔细检查代码,确保所有的符号都配对使用,并正确使用分号。
-注意变量和函数的声明与使用,确保它们的类型和参数匹配。
-使用代码编辑器或集成开发环境(IDE),这些工具通常会在编写代码时提供实时语法检查功能,帮助避免语法错误。
问题二:逻辑错误逻辑错误是指程序在运行时没有按照预期的方式执行,即结果不符合预期。
这种错误有时很难察觉,因为它们不会引发编译错误或警告。
解决方法:-使用调试工具,例如gdb,对程序进行逐行调试以找出错误所在。
-仔细检查代码,确保逻辑正确。
可以使用流程图或伪代码来描述程序的逻辑。
-使用断言(assert)来验证代码的假设,有助于提前发现错误。
问题三:内存错误内存错误是指在使用指针时,对未分配或已释放的内存进行访问的错误。
这可能导致程序崩溃或产生不可预测的行为。
解决方法:-确认所有的指针都已正确初始化,并在使用完毕后进行适当的内存释放。
-使用动态内存分配函数(malloc、calloc和realloc)时,要确保分配的内存足够,并在使用完毕后进行释放。
-避免在指针为空时进行解引用操作,应先对指针进行空指针检查。
问题四:性能问题C语言相对底层的特性使其具备高性能的潜力,但在编写代码时也容易出现性能问题。
解决方法:-使用适当的算法和数据结构,优化代码的时间和空间复杂度。
-避免重复计算和不必要的循环。
-使用性能分析工具,例如gprof,帮助定位性能瓶颈,并进行优化。
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、显示注册成功,继续之后的步骤即可。
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在不通阶段的不通感受:刚开始安装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,总会有不适应的感觉。
因此在学习的过程中常常被某些问题弄的不知所措,尽管有些问题是一点就通的。
笔者根据学习VC的亲身体会,并结合不少学生提出的问题,发现初学者经常会遇到以下问题。
一.文档与视的困惑对于初次接触VC++5.0的读者来说,“视”是一个非常难以理解的概念。
在这里它并非动词“看”的意思,而是作为名词来用(其实是View的译词),是作为“显示”的意思,即显示数据:可以通过屏幕输出,也可以通过打印机输出。
对于用户来说,视就是一个普通窗口;对于程序员来说,它是从类库中的CView类派生出的一个对象,视对象的行为由CView 类及其派生类的成员函数来决定。
文档的概念较好理解,它是存储数据的载体,在文档中可以对数据进行存储、调出等操作。
文档对象驻留在场景后面,向视对象提供需要显示的信息。
视对象通过获取指向文档的指针访问文档数据(利用GetDocument()函数),并能改写文档数据,然后通过OnDraw()的方法绘制文档数据。
二.如何清除“查找”历史记录每次查找之后,VC都会将查找的关键词以历史记录的形式保存起来,若再次查找时,从“查找”下拉组合框里可直接选择关键词,不需再次输入。
这样做的好处是的确可以节省不少时间,但是时间一长,历史记录的关键词也就越多,有很多根本不会再次用到,这些历史记录应该及时清除。
可以通过更改注册表的方法清除历史记录,步骤如下:打开注册表编辑器,找到HKEY_CURRENT_USER\Software\Microsoft\DevStudio\5.0\Search子键,删除该子键中find1,find2……串值;如果将replace1,replace2……串值删掉,将会清除“替换”的历史记录。
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菜单项,打开设计好的对话框的资源文件(后缀名为。