(1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了 (2)在基于对话框的程序中,一按回车键,对话框就没了。 把确定按纽的缺省属性前面的对勾去掉,重载OnOk()函数,在OnOk()函数里注释掉调用基类的OnOk()函数那行代码 (3) 为什么我的VC6.0自动显示成员列表功能时有时无? (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:\\program files\\....\\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、CFrameWnd或CWnd对象的背景色 (17)如何建立多文档? 为了加入对附加文档类型的支持,你可以在CWinApp派生类中创建和注册附加CmultiDocTemplate对象。。将一个附加文档类型加入到MFC程序的一般步骤如下: 用资源编辑器增加附加的应用程序图标和菜单资源。注意,这些资源中每一个的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)如何使我的程序在启动时不创建一个新文档? (19) 如何获取应用程序的实例句柄? (20)如何得到程序中其它类的指针(例如框架类,视类,文档类等等)? 请看http://hi.baidu.com/ljfblog/blog/item/f0f7a2fb10dc54204f4aeabd.html (21)为什么创建类的时候我不能直接生成从CDialogBar派生的类? ClassVizard的确没有提供这个功能,要从没有提供的类派生类的时候只能通过手动修改来完成 (22)我用clazard 给静态文本框加变量时,为什么里面没有它的ID?? 因为所有的静态文本控件的ID都被默认为了IDC_STATIC,你只需要修改这个ID号就可以了 (23)获得各种目录信息 (24)如果让控制台应用程序支持MFC类库? (25) 我怎样才能在我的应用程序中循环浏览已经打开的文档? 使用CDocTemplate中未公开的GetFirstDocPosition()和GetNextDoc()函数。
使 用 CDocument 中 未 公 开 的 GetFirstViewPosition() 和 GetNextView() 函 数。 (27)数PreCreateWindow是干什么用的? PreCreateWindow 允 许 你 在 调 用 CreateWindow 之 前 来 改 变 窗 口 属 性。 (28)该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名? 在 PreCreateWindow 函 数 中 删 除 FWS_PREFIXTITLE 标 志 的 窗 口 样 式: cs.style &= ~FWS_PREFIXTITLE;
在 PreCreateWindow 函 数 中 删 除 FWS_ADDTOTITLE 标 志 的 窗 口 样 式: cs.style &= ~FWS_ADDTOTITLE ;
因 为 视 窗 口 实 际 上 是 框 架 窗 口 的 子 窗 口,所 以 你 必 须 改 变 框 架 窗 口 的 大 小,而 不 是 改 变 视 窗 口。使 用 CView 类 中 的 GetParentFrame() 函 数 获 得 指 向 框 架 窗 口 的 指 针,然 后 调 用 MoveWindow() 函 数 来 改 变 框 架 的 大 小。这 会 使 变 尺 寸 的 视 充 满 框 架 窗 口。 (31) 我有一无模式对话框。我怎样才能在窗口退出时删除CDialog对象? 把“delete this”加 到 PostNcDestroy 中。这 主 要 用 在 需 要 自 动 删 除 对 象 的 场 合。
OnNcDestroy 只 被 已 建 立 的 窗 口 调 用。如 果 建 立 窗 口 失 败 ( 如 PreCreateWindow ),则 没 有 窗 口 处 来 发 送 WM_NCDESTROY 消 息。PostNcDestroy 是 在 对 象 窗 口 被 完 全 删 除,在 OnNcDestroy 后,甚 至 在 窗 口 建 立 失 败 之 后 调 用 的。 (33):如何为一个MFC应用程序添加ODBC功能? (1)在文件Stdafx.h文件末尾添加下面一行: #include // MFC ODBC database classes (2)在文本模式下编辑RC文件(利用File->Open As text 方式) 在下面的程序行(共有两处) #include "l.chs\\afxprint.rc" // printing/print preview resources 添加下一行: #include "l.chs\\afxdb.rc" // Database resources (34):数据库表修改后,如何快速更新一个绑定到表的CrecordSet记录集? 利用Clazard 中 Member Variables标签下选中记录集类后,利用UpdateColoumns和Bind All。
上面两种方法都不行,要是窗口最大化显示,应改变ShowWindow()的参数, 在InitInstance()中将 m_pMainWnd->ShowWindow(...)改为 m_pMainWnd->ShowWindow(SW_SHOWMAXINIZE);就Ok (36)怎么把别人程序中设计好的对话框放到自己的程序中?? 用VC打开自己的程序,选择资源视图;然后点FILE->OPEN菜单项,打开设计好的对话框的资源文件(后缀名为。RC),这里注意一定只打开后缀名为。RC的资源文件,然后在VC编辑器的文档区域就会有你刚打开的另一个程序的资源文件中资源的一个树型结构图,然后找到你要复制的对话框资源ID,鼠标左键按住ID号,然后拖放到资源视图中,这个时候你再看看自己程序的资源视图,是不是已经复制过来了。罗嗦了这么多,其实问题的关键是在一个编辑器中同时打开自己的项目和另一个项目的资源文件。 (37)[求助]急!!!关于installshield制作中的注册表问题
在InstallShield选择Resources,在其中的Registry Entry部分输入要添加的注册项 。 (38) VC6下如何对程序进行调试 (39)简介对话框应用程序中UpdateData函数的作用及其参数含义与使用场合。 (40)、如何单击除了窗口标题栏以外的区域使窗口移动 当窗口需要确定鼠标位置时Windows向窗口发送WM_NCHITTEST信息,可以处理 该信息使Windows认为鼠标在窗口标题上。对于对话框和基于对话的应用程序,可 以使用Clazard处理该信息并调用基类函数,如果函数返回HTCLIENT 则表明 鼠标在客房区域,返回HTCAPTION表明鼠标在Windows的标题栏中。 UINT CSampleDialog : : OnNcHitTest (Cpoint point ) { UINT nHitTest =Cdialog: : OnNcHitTest (point ); return (nHitTest = =HTCLIENT)? HTCAPTION : nHitTest ; } 上述技术有两点不利之处,其一是在窗口的客户区域双击时, 窗口将极大; 其二,它不适合包含几个视窗的主框窗口。还有一种方法,当用户按下鼠标左键 使主框窗口认为鼠标在其窗口标题上,使用Clazard在视窗中处理WM_LBUTTODOWN 信息并向主框窗口发送一个WM_NCLBUTTONDOWN信息和一个单击测试HTCAPTION。 void CSampleView : : OnLButtonDown (UINT nFlags , Cpoint point ) { CView : : OnLButtonDow (nFlags , pont ); //Fool frame window into thinking somene clicked on its caption bar . GetParentFrame ( ) —> PostMessage ( WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARAM (poitn .x , point .y) ); } 该技术也适用于对话框和基于对的应用程序,只是不必调用CWnd : : GetParentFrame 。 void CSampleDialog : : OnLbuttonDown (UINT nFlags, Cpoint point ) { Cdialog : : OnLButtonDow (nFlags, goint ); //Fool dialog into thinking simeone clicked on its caption bar . PostMessage (WM_NCLBUTTONDOWN , HTCAPTION , MAKELPARM (point.x , point. y ) )
(41)组合框控件的排序问题 将属性里面的sort(分类)选项去掉,当其去掉后表示按照你定义的顺序排序。
(42)classview选项卡中出现问题的解决方法 删除*.opt,*.ncb,*.plg文件
|
对VC++一些常见问题的整理
对VC++一些常见问题的整理