
VC经典技术
文章平均质量分 58
scq2099yt
欢迎访问我的个人网站: http://www.joyvc.cn。
展开
-
VC6.0编译器技巧
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号键入快捷键“Ctrl+]”。如果括号匹配正确,光标就跳到匹配的括号处,否则光标不移动,并且机箱喇叭还会发出一声警告声。2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defi转载 2007-07-09 12:24:00 · 575 阅读 · 0 评论 -
利用GetPrivateProfileString读取配置文件(.ini)
配置文件中经常用到ini文件,在VC中其函数分别为: 写入.ini文件:bool WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTR lpFileName);读取.ini文件:DWORD GetPrivateProfileString(LPCTSTR lpAppNa转载 2007-07-10 15:55:00 · 591 阅读 · 0 评论 -
ListControl的使用
列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格: LVS_ICON ,转载 2007-07-12 11:29:00 · 750 阅读 · 0 评论 -
VC快捷键大全
F1: 帮助Ctrl+O :OpenCtrl+P :PrintCtrl+N :NewCtrl+Shift+F2 :清除所有书签F2 :上一个书签Shift+F2 :上一个书签Alt+F2 :编辑书签Ctrl+F2 :添加/删除一个书签F12 :Goto definitionShift+F12 :Goto referenceCtrl+Num+ :Display转载 2007-07-09 12:32:00 · 482 阅读 · 0 评论 -
VC代码的编写和调试---编写易于调试的VC代码
一 程序的设计要避免错误,首先要从好的设计开始。对于程序的设计,需考虑到程序的两个特性:1简单性 大多数常见的错误来源于程序设计中不必要的复杂成分。一个好的设计应该反映问题本身的要求,而不必为了刻意追求“满足将来的需要”而添加不必要的特性。实际上,简单优雅的设计比那些复杂的设计更能迎合未来的需求。2 耦合性 耦合(decoupling)性用来衡量不同对象之间的依赖程度。松耦合的程序易于理解和实现,转载 2007-07-09 12:28:00 · 628 阅读 · 0 评论 -
在MFC类中各种类的指针的获取和应用
于MFC下的文档和视图以及框架之间的访问, 这些问题已经是老生常谈了,但我觉得还是都没有详细的说明,特 别是对于英语较差的人,我查看了一些blog,总结了一下!希望对和我一样的人有点帮助! 一: 1: 因为对于SDI程序,主框架窗口就是文档框窗(如果这个也不知道,就要查看一下MFC下的单文档的构成原理了). 下面所说的是关于单文档的.转载 2007-07-09 13:05:00 · 567 阅读 · 0 评论 -
ASCII表
ASCII 非打印控制字符 ASCII 表上的数字 0–31 分配给了控制字符,用于控制像打印机等一些外围设备。例如,12 代表换页/新页功能。此命令指示打印机跳到下一页的开头。 ASCII 非打印控制字符表 十进制十六进制字符 十进制十六进制字符000空 1610数据链路转意101头标开始 1转载 2007-08-17 11:57:00 · 977 阅读 · 0 评论 -
DPtoLP和LPtoDP && ScreenToClient和ClientToScreen
设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像素为单位来表示的,设备坐标的X轴向右为正,Y轴向下为正,坐标原点位于窗口的左上角。 逻辑坐标(Logical Coordinate)是系统用转载 2007-05-18 15:42:00 · 933 阅读 · 0 评论 -
在MFC中动态创建控件以及事件响应
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放在对话框中即可,再适当修改控件ID,设置控件属性,一个静态控件就创建好了,当对话框被显示时,其上的控件也会显示。 静态控转载 2007-08-21 12:12:00 · 2428 阅读 · 2 评论 -
轻松使用DLL
轻松使用DLL 关于DLL, 有位仁兄写了几点(http://www.cppblog.com/johndragon/archive/2007/04/17/22159.html),正好我的做法不谋而合,我一直就是按照这几个原则来进行的。其实DLL用起来是很简单的,而且好处很多。下面举一个简单的例子。(1)首先定义接囗文件,一般有两种做法,一种是采取纯虚类,一种是pimp手法,我倾向于前者。转载 2007-05-29 18:24:00 · 916 阅读 · 0 评论 -
VC调试入门
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创转载 2007-05-31 18:05:00 · 637 阅读 · 0 评论 -
Debug和Release简介
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下转载 2007-06-05 10:32:00 · 694 阅读 · 0 评论 -
VC.Net从DLL传递消息到EXE
在进行DLL开发过程中,尤其在进行底层硬件开发过程中,比如实时接收数据,进程需要和应用程序进行交互,而DLL和应用程序最好的交互就是发消息了,在DLL中定义消息的方式和在应用程序中定义消息的方式非常相似。下面谈谈这两种定义的方法:一、在应用程序自定义消息方法: 一般自定义消息有一定的范围,虽然说自定义消息从WM_USER开始,但是由于我们的工程里面一般还有很多其他的控件,他们转载 2007-09-06 17:22:00 · 1151 阅读 · 1 评论 -
socket编程几个函数小结
一、WSAStartup函数 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本转载 2007-06-04 15:47:00 · 994 阅读 · 0 评论 -
最常见的20种VC++编译错误信息
1、fatal error C1010: unexpected end of file while looking for precompiled header directive。寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h") 2、fatal error C1083: Cannot open include fi转载 2007-06-14 10:03:00 · 527 阅读 · 0 评论 -
VC.Net定义和使用MFC DLL
DLL指的是动态链接库(Dynamic Link Library),它是一个可以被多个应用程序(甚至是不同语言编写的应用程序)同时调用的可执行二进制文件,是一个可共享的库。DLL是建立在客户/服务器通信的概念上,包含若干函数、类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的DLL。 在下面我们将通过一个具体的例子来说转载 2007-09-06 17:20:00 · 801 阅读 · 0 评论 -
内存调试技巧
本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内。内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决,它们可能严重影响应用程序,并且很少有开发团队对其制定明确的管理计划。但好消息是,它们并不怎么神秘。引言C 和 C++ 程序中的内存错误非常有害:它们很常见,并且可能导致严重的后果。来自计算机应急响应小组(请参见参考转载 2007-09-19 15:18:00 · 757 阅读 · 3 评论 -
WPARAM与LPARAM的区别
在Win 3.x中,WPARAM是16位的,而LPARAM是32位的,两者有明显的区别。因为地址通常是32位的,所以LPARAM被用来传递地址,这个习惯在Win32 API中仍然能够看到。在Win32 API中,WPARAM和LPARAM都是32位,所以没有什么本质的区别。Windows的消息必须参考帮助文件才能知道具体的含义。如果是你定义的消息,愿意怎么使这两个参数都行。但是习惯上,我们愿意使用转载 2007-09-20 15:33:00 · 606 阅读 · 0 评论 -
_variant_t ,_bstr_t 与 CString 类有什么区别
int i = 100;long l = 2001;float f=300.2;double d=12345.119;char username[]="程佩君";char temp[200];char *buf;CString str;_variant_t v1;_bstr_t v2;一、其它数据类型转换为字符串短整型(int)itoa(i,temp,10);///将i转换为字符串放入te转载 2007-09-20 14:07:00 · 1165 阅读 · 0 评论 -
CString 操作指南
原著:Joseph M. Newcomer翻译:littleloach原文出处:codeproject:CString Management 通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC 在做字符串操作的时候方便了很多。不管怎样,使用CString 有很多特殊的技巧,特别是对于纯C 背转载 2007-09-20 14:30:00 · 586 阅读 · 0 评论 -
sprintf 使用详解
sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format s转载 2007-09-20 14:27:00 · 645 阅读 · 0 评论 -
多线程函数和静态线程函数调用类成员非静态变量和函数的问题
创建线程时,线程函数如果要设置成类的成员函数,则必须是静态成员函数,在此函数种不能使用非静态成员变量,如果要使用非静态成员变量,则一种比较适合线程的方法是:建立线程的时候把this作为CreateThread的一个参数(即第4个参数,就是那个LPVOID型的),然后线程里就对应pParam,例如: static UINT ThreadProc(LPVOID pParam) {原创 2008-02-01 10:04:00 · 1361 阅读 · 0 评论 -
error C2065: 'IDD_SHOWINFODLG' : undeclared identifier
error C2065: IDD_SHOWINFODLG : undeclared identifier 开发平台:VC出现错误:error C2065: IDD_SHOWINFODLG : undeclared identifier,IDD_SHOWINFODLG为对话框ID号。错误原因:没有包含resource.h头文件解决办法:在该源文件的顶部添加:#includ原创 2008-02-01 10:15:00 · 1154 阅读 · 0 评论 -
warning LNK4089: all references to "USER32.dll" discarded by /OPT:REF
warning LNK4089: all references to "USER32.dll" discarded by /OPT:REF开发平台:VC出现错误:warning LNK4089: all references to "USER32.dll" discarded by /OPT:REF。错误原因:由于打开了优化选项,而且程序中包含或加入了USER32.dll,但是却没有调原创 2008-02-01 10:15:00 · 1178 阅读 · 0 评论 -
error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'
error C2664: CreateThread : cannot convert parameter 3 from unsigned long (void *) to unsigned long (__stdcall *)(void *) 开发平台:VC6.0错误原因:类成员函数作为线程函数时,必须是静态成员函数。 解决办法:static DWORD WINA原创 2008-02-01 10:16:00 · 2069 阅读 · 0 评论 -
关于ClassView中显示files left to load
当类无法显示,类视图列表中显示 xx files left to load时,在VC++ 不能显示的类的头文件中随便做个动作,比如:敲个回车。IDE 会动态检测你的动作,它发现类改变了,就会将类显示出来。 更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn原创 2008-01-31 15:07:00 · 935 阅读 · 0 评论 -
关于VC编写代码时,智能提示消失的问题
当在VC编辑器中编写代码时,智能提示消失时的解决方法:1、关闭VC工程;2、在代码的工程目录下,删除.ncb文件;3、再次打开VC工程即可。 更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn原创 2008-02-01 09:57:00 · 917 阅读 · 0 评论 -
试图执行系统不支持的操作
试图执行系统不支持的操作: 开发平台:VS.NET 2003。出现错误:试图执行系统不支持的操作。错误原因:a)删除了对话框控件,但是没有删除相应控件代码; b)修改了资源ID,资源ID对不上号; c)将MFC程序做成打包软件,安装在没有VC的机器上,出现错误,在有VC环境的机器上运行则没有这个错误。 解决办法:对于前面两原创 2008-02-01 10:12:00 · 4949 阅读 · 2 评论 -
数据库无法打开
数据库无法打开 开发平台:VC6.0+SQL Sever 2000/ VC6.0+Access 2000 出现错误:用户VC打开代码,执行程序没有问题 ,但是如果直接执行.exe文件,则数据库无法打开。 错误原因:选择了Debug调试方式。 解决办法:选择Release调试方式即可。更多技术文章请参看施昌权的个人原创 2008-02-01 10:13:00 · 1042 阅读 · 0 评论 -
关于ClassView所有类文件都消失的问题
将类的头文件中类定义注释掉,然后再去掉注释符即可。 更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn原创 2008-02-01 09:59:00 · 652 阅读 · 2 评论 -
error C2018:unknown character '0xa1'
error C2018:unknown character 0xa1 开发平台:VC出现错误:error C2018:unknown character 0xa1。错误原因:代码中某个字符或标点用了全角码(中文输入打开了)。 解决办法:将出现该错误的代码行注释起来,在英文状态下重新输入该行代码。 更多技术文章请参看施昌权的个人网站: http://ww原创 2008-02-01 10:14:00 · 1324 阅读 · 1 评论 -
Debug error:"One or more breakpoints cannot be set and have been disabled.Execution will stop at the beginning of the program."
在使用VC++6.0调试时,经常出现如下信息:One or more breakpoints cannot be set and have been disabled.Execution will stop at the beginning of the program.问题的主要原因是:没有将程序设置成Win32 Debug状态。在动态链接库程序中,设置相应的Debug状态即可。原创 2008-02-21 10:21:00 · 1491 阅读 · 0 评论 -
在PostMessage或SendMessage中通过WPARAM或者LPARAM将数组传递给消息处理函数
(1)在::PostMessage(HWND,UINT,WPARAM,LPARAM)或::SendMessage(HWND,UINT,WPARAM,LPARAM)中通过WPARAM wParam或者LPARAM lParam将数组传递给消息处理函数; (2)在消息处理函数中,通过memcpy( void *dest, const void *src, size_t count )将数组原创 2008-02-21 15:07:00 · 1451 阅读 · 0 评论 -
关于“This file has been modified outside of the source editor. Do you want to reload it?”错误的处理
当VC6.0出现“This file has been modified outside of the source editor. Do you want to reload it?”的错误时,是因为在VC6.0中打开文件时,文件被外部程序修改,VC检测到文件变化,因此提示你是否载入被修改后的内容。 如果实际上没有外部程序打开该文件,可能是因为VC本身的问题。解决方法:先将VC中打开的文件全部原创 2008-02-29 10:50:00 · 3615 阅读 · 2 评论 -
TCP服务器/客户端
TCP客户端源程序 #include #include #pragma comment(lib, "WS2_32.lib") #define BUF_SIZE 1024 #define SERVER_IP "127.0.0.1" #define SERVER_PORT 5678 int main(int argc, cha原创 2008-03-01 11:11:00 · 728 阅读 · 0 评论 -
UDP服务器/客户端
UDP客户端源程序 #include #include #pragma comment(lib, "WS2_32.lib") #define BUF_SIZE 1024 #define SERVER_IP "127.0.0.1" #define SERVER_PORT 5678 int main(int argc, cha原创 2008-03-01 11:13:00 · 681 阅读 · 0 评论 -
用VC6.0开发PPT插件时出现:PowerPoint发现无法更正的错误。最好保存演示文稿并退出,然后重启PowerPoint。
当用VC6.0开发PPT插件时出现:“PowerPoint发现无法更正的错误。最好保存演示文稿并退出,然后重启PowerPoint。” 问题时,先删除注册表中的插件信息,然后重新编译程序,如果编译程序时出现插件DLL无法打开的错误时,先在任务管理器重结束掉“POWERPNT.EXE”进程,再编译程序即可。 更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn原创 2008-02-29 17:33:00 · 3566 阅读 · 0 评论 -
关于VC启动时产生MSDEV-应用程序错误的处理
当VC启动时,产生:MSDEV-应用程序错误,"0xd0a0087f"指令引用的"0xd0a0087f"内存,该内存不能为"read"。要终止程序,请单击“确定”。要调试程序,请单击“取消”。这是由于病毒的缘故,用瑞星查杀出如下病毒:病毒: Trojan.IMMSG.Win32.TBMSG.yls 病毒: Trojan.Win32.Edog.q 病毒: AdWare.Win32.EJo原创 2008-02-29 15:35:00 · 1175 阅读 · 0 评论 -
VC读取配置文件(.ini)
VC读取配置文件(.ini):CString strIP = _T("");CString strPort = _T(""); ::GetPrivateProfileString("TCP/IP","IP","", strIP.GetBuffer(MAX_PATH), MAX_PATH,".//Config.ini"); strIP.ReleaseBuffer(); m_strIP = str原创 2008-03-07 17:18:00 · 1484 阅读 · 0 评论 -
关于error C2110: cannot add two pointers的处理
当出现error C2110: cannot add two pointers时,是因为字符串相加不能以常量开头,举例如下:strCheckSum = FREAM_LENGHT+ FREAM_TYPE + strResult; FREAM_LENGHT、FREAM_TYPE 都是字符串常量宏,如果按照上面方式书写代码会出现上面的错误。改为:strCheckSum = strCheckSum + F原创 2008-03-06 11:06:00 · 2140 阅读 · 0 评论