VC++ 基本概念与应用
文章平均质量分 77
Phenixyf
这个作者很懒,什么都没留下…
展开
-
互斥锁、死锁以及如何预防、避免、检测、解除死锁
由于在避免死锁的策略中,允许进程动态地申请资源。(1)访问公共资源前,必须申请该互斥锁,若处于开锁状态,则申请到锁对象,并立即占有该锁,以防止其他线程访问该资源;撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁在逻辑上绑定(要申请该资源必须先获取锁)。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。转载 2023-04-06 09:36:03 · 903 阅读 · 0 评论 -
VC创建线程
作中我们经常会遇到要建立多个线程,以此方便于我们可以同时执行多个事件。这也是我们在VC开发中的一项基础,虽然我曾多次用到,但也会常常忘记。这次记下来,作为一个笔记,为大家学习提供方便。在VC中,无非是创建线程和写线程函数 一、常规方法:纯使用Platform SDKAPI.1, 创建线程: #include 在MFC中通常在OnInitDialog()下面创建线程 /转载 2014-09-04 19:39:26 · 855 阅读 · 0 评论 -
VS2010 更改MFC标题栏图标和生成的执行文件图标
创建一个新工程,可以什么都不加。打开.rc, 创建或打开Icon资源(以下都以Icon为例)。单击工程窗口的资源视图标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delete键把它删除掉,当然也可以不删,具体后面会讲到。从资源菜单中选择Resource,然后选择Icon,添加资源,选中Icon类型,点击导入,此时会叫你选择本地的图片原创 2014-08-20 19:07:29 · 1522 阅读 · 0 评论 -
visual studio 中怎样添加lib引用
方法1:要具有lib文件和.h文件1.加入语句 #pragma comment(lib, 'C:\\test\\Debug\\test.lib'2.项目右键-〉属性-〉c++ -〉常规-〉附加包含目录-〉填入test.h文件的文件夹 ../../include方法2:这种方法可能移植的时候更方便一些1.项目右键-〉属性-〉链接器 ->常规 ->附加库目录填入lib所在的文件原创 2014-06-09 22:00:35 · 20692 阅读 · 0 评论 -
窗口句柄浅析和获取窗口句柄的方法
句柄(HANDLE)是Windows程序中一个重要的概念,使用也非常频繁。在Windows程序中,有各种各样的资源(窗口、图标、光标等),系统在创建这些资源时会为它们分配内存,并返回标识这些资源的标识号,即句柄。窗口句柄是windows句柄的一种,且是重要的一种句柄。在Windows应用程序中,窗口是通过窗口句柄(HWND)来标识的。我们要对某个窗口进行操作,首先就要得到这个窗口的句柄。窗转载 2014-08-08 10:18:38 · 2451 阅读 · 1 评论 -
CWnd与HWND的区别与转换 如何获取本窗体对象
一、区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。 CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。二、如何得到窗口对象指针CWn转载 2014-08-08 10:09:32 · 9974 阅读 · 0 评论 -
CString.Format的详细用法(转)
在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。 先看看Format用于转换的格式字符: %c转载 2014-09-05 14:45:57 · 639 阅读 · 0 评论 -
MFC多线程的创建,包括工作线程和用户界面线程
MFC多线程的创建1.MFC多线程简介MFC对多线程进行了一层简单的封装,在Visual C++中每个线程都是从CWinThread类继承而来的。每一个应用程序的执行都有一个主线程,这个主线程也是从CWinThread类继承而来的。可以利用CWinThread对象创建应用程序执行的其它线程。MFC用CWinThread对象来表示所有线程。利用MFC可以创建两种线程,分别称之为工作者线程转载 2014-09-05 15:36:40 · 1431 阅读 · 0 评论 -
C++ _T
1\C++语言中“_T”是什么意思?Visual C++里边定义字符串的时候,用_T来保证兼容性,VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。如果将来你不打算升级到unicode,那么也不需要_T,----------------------------------------------转载 2013-06-04 17:34:25 · 803 阅读 · 0 评论 -
利用new定义二维数组,delete删除内存空间
//为二维数组开辟空间 int **p = new int*[num1]; for(int i=0; i p[i] = new int[num2]; //释放二维数组占用的空间 for(int m=0;m delete[] p[m]; delete[] p; 注意以下几个等价式: int **c; c = new int*[3]; for( i=0;i <4;i++) { c[转载 2014-06-17 17:10:43 · 12008 阅读 · 0 评论 -
如何给MFC对话框添加背景图片
如何给MFC对话框添加背景图片2009年11月09日 星期一 13:081、添加背景图片到“Bitmap”资源里。方法为“插入——资源”,如果还没有Bitmap,则新建一个Bitmap,否则选择资源 类型为“Bitmap”后“引入”想要插入的背景图片,我加入的背景图片如图1,加入过程如图2。 图1 图2转载 2014-01-07 16:41:23 · 865 阅读 · 0 评论 -
VC2010生成exe文件位置
首先注意,VS2012和VC6不同,有两个DEBUG目录,确认两个DEBUG目录是不是都没有exe确认Ctrl+F5程序是否正常运行,如果正常运行,那么就是你没找对地方,如果不能,那么是工程设置问题。原创 2014-05-20 10:00:25 · 6515 阅读 · 0 评论 -
从程序实例角度分析进程与线程
http://www.51testing.com/?uid-410671-action-viewspace-itemid-808764 进程通常被定义为一个正在运行的程序的对象的实例,它有两个部分组成:51Testing软件测试网daX @7[%f SV5V51Testing软件测试网a2hjLo1xl 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关转载 2013-06-28 17:58:44 · 835 阅读 · 0 评论 -
浮点型与十六进制相互转换
整理一下,有用的连接浮点数类型在计算机里面的表示方法 - donjuan - 博客园 http://www.cnblogs.com/killmyday/archive/2009/03/22/1419079.html浮点数在计算机中存储方式 - Robin Zhang - 博客园 http://www.cnblogs.com/jillzhang/archive/2007/06转载 2014-05-19 12:16:55 · 24756 阅读 · 0 评论 -
理解VC中的句柄
>(Microsoft Press,by Richard Wilton)一书中句柄的概念是这样的:在Windows环境中,句柄是用来标识项目的,这些项目包括:模块(module)、任务(task)、实例(instance)、文件(file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包括图标(icon),光标(c转载 2014-05-09 14:36:35 · 830 阅读 · 0 评论 -
VC6.0如何编译生成Release或Debug版本?
可以project->Set Active Config,选中release版本。此后,按F5或F7编译所得的结果就是release版本。 ----------------------------------------------------------------------------------------------------------------vc6.0在设置选了wi转载 2013-12-10 11:38:48 · 896 阅读 · 0 评论 -
V2010对话框窗口大小可拉伸设置
点选主对话框,properties->border->Resizing原创 2014-06-26 14:54:47 · 1150 阅读 · 0 评论 -
字符转义
2.3 字符转义-2.1 元字符 -正则表达式学习笔记 -grule语法概览2008-10-10 13:25:24 阅读3评论0 字号:大中小2.3 字符转义-2.1 元字符 -正则表达式学习笔记 -grule2.3 字符转义http://blog.csdn.net/wlzhengzebiaodashi/archive/2008/03/24/2213527.转载 2014-07-02 09:57:08 · 1001 阅读 · 0 评论 -
MFC的运行机制 以及 MFC中的DC、CDC、HDC、句柄、设备上下文(整理)
在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API.你说你喜欢C++而MFC换一种说法就是一个用C++写的一个函数库 然后你来调用 只不过这个类不是你写的MFC提供数百个类,最重要的、也是编写任何VC++应用程序都必不可少的两个类CWinApp和CFrameWnd,这两个类是编写复杂庞大转载 2012-08-28 16:59:00 · 1119 阅读 · 0 评论 -
查内存泄漏的方法
1. 先查是否所有申请内存都释放,包括: new / new [] ---- delete / delete [] //注意一一对应 malloc ---- free CoTaskMemAlloc ---- CoTaskMemFree SysAllocString ---- SysFreeString SafeArrayCreate ---- SafeArrayDe转载 2014-11-13 22:50:19 · 1250 阅读 · 0 评论 -
不能响应回车键的原因分析
之所以在以CEditView作为基类的程序中可以响应回车键,是由于该程序的视类本身就是一个Edit控件,这就是问题的关键所在。CEditView作为CView的派生类能响应从键盘输入的各种消息,其中有和键盘输入相关的WM_CHAR、WM_KEYDOWN、WM_KEYUP等消息。我们就可以在这些消息的响应函数中灵活地设计程序去捕捉到回车键的输入,并执行响应的操作。 当我们将编辑框作为一个普通的转载 2014-12-01 10:22:04 · 2542 阅读 · 0 评论 -
C语言中extern关键字详解
C语言中extern关键字详解内容清单:1. 用extern声明外部变量(1)在一个文件内声明的外部变量(2)在多个文件中声明外部变量(3)在多个文件中声明外部结构体变量2. 用extern声明外部函数3. 总结 1. 用extern声明外部变量定义:外部变量是指在函数或者文件外部定义的全局变量。外部变量定义必须在所有的函数之外,且只能定义一次。转载 2012-08-14 19:06:37 · 1315 阅读 · 0 评论 -
再议C/C++中const的用法
关于C/C++中const的用法,我们之前也介绍过很多,大家可以看看这两篇文章,《C++基础 详细介绍const的用法》和《C++初学者 const使用详解》,供参考。今天在学习到《Essential C++》第4.1节时又有了“稍进一步”的发现,即当const来修饰一个类的成员函数时,它并不仅仅是禁止修改类里面的数据,而且要求其里面用到的类的成员都是具有const属性的。如下以为示例:转载 2012-08-14 10:35:35 · 784 阅读 · 0 评论 -
光标控制
1. 编辑框中将光标设置到最后一行int lenData = 0;GetDlgItemText(IDC_EDIT_CFGDATA,sData);lenData = sData.GetLength();((CEdit*)GetDlgItem((IDC_EDIT_CFGDATA))) -> SetSel(lenData,lenData,TRUE); 2. 光标设置到某个控件上原创 2014-12-03 15:20:28 · 585 阅读 · 0 评论 -
C++中声明与定义的区别
C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类的实现放在cpp文件中。它们为什么能够关联到一起呢?你知道什么东西可以放在.h文件中,什么不能。什么东西又可以放在cpp文件中。如果你忘记了或是压根就不明白,那么读过此文你会清晰无比!! 首先谈下声明与定义的区别。 声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述。声明和定义有转载 2013-02-06 10:55:27 · 3228 阅读 · 0 评论 -
Visual C++中用MFC ODBC操作Access数据库(1)
本实例是某项目中的一部分,目的是实现MFC ODBC数据库与Access数据表格之间的相互操作。包括用Visual C++中的MFC ODBC技术实现对Access数据表格的内容的显示、添加、修改和删除的功能。1、ODBC数据源的创建笔者使用的操作系统为WindowsXP,工具是Visual C++6.0。此例中建立的Access表格取名为“plc”。在“控制面板”中双击“管理工具转载 2012-08-14 10:40:55 · 3151 阅读 · 1 评论 -
详细介绍C/C++时间函数使用方法
下面详细介绍C/C++中的时间函数,供大家参考。1. 时间的定义C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法。通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以转载 2012-08-14 10:54:06 · 1781 阅读 · 0 评论 -
文本文件与二进制文件
网上关于文本文件与二进制文件的文章很多,但遗憾的是,这些文章讲得都比较散。下面我将结合所查到的资料,从多个角度谈谈文本文件与二进制文件。 一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符转载 2012-05-11 16:42:56 · 714 阅读 · 0 评论 -
C/C++宏的使用总结
C/C++宏的使用总结 宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为“预处理器”的模块,这个模块将宏根据编译参数和实际编码进行展开,展开后的代码才正式进入编译器,进行词法分析、语法分析等等。 我们常用的宏替换主要有这么几个类型。1.宏常量 在ACM等算法竞赛中,经常会把数组的最大下标通过宏定义转载 2013-05-30 11:18:27 · 629 阅读 · 0 评论 -
vc 浮点数转换为内存十六进制字符串
在一些规约解析中,我们往往需要把浮点数转换成16进制的字符串 或者把16进制的字符串转换为浮点数来验证传输的正确性。下面的函数实现了浮点数到16进制字符串的转换,主要是使用了内存拷贝的方法。另外需要注意的是内存中的数据一般是底字节在前。 关于16进制字符串(可以直接从内存查看)转换到浮点数,是下面过程的逆过程,这里就不在实现。/*************************转载 2014-05-08 22:39:14 · 922 阅读 · 0 评论 -
VS2010/MFC编程入门之八(对话框:为控件添加消息处理函数)
创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数。 MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果,我们只需要实现某个消息的消息处理函数。 一.添加转载 2014-12-05 09:44:10 · 1265 阅读 · 0 评论 -
C++双冒号::的作用
class CA { public: int ca_var; int add(int a, int b); int add(int a); }; //那么在实现这个函数时,必须这样书写: int CA::add(int a, int b) { return a + b; } //另外,双冒号也常常用于在类变量内部作为当前类实例的转载 2014-12-05 14:56:15 · 471 阅读 · 0 评论 -
VC/MFC 在对话框中添加菜单栏并响应
今天我写了一个科学计算器,是基于MFC对话框的,然后想要在对话框上创建一个菜单栏,并响应。。。实现弹出一些信息。实现后的效果图:实现步骤如下:新建一个基于对话框的MFC应用程序命名为:PopMenu1.添加菜单栏如图。2.添加需要弹出的新对话框如图。3.在主对话框的类(CPopMenuDlg)头文件中定义一个菜单类对象m_Menu用于加载菜单转载 2015-01-13 19:06:18 · 20157 阅读 · 1 评论 -
VC6添加自定义消息(主窗口向子窗口发送消息)
1、定义消息。在Windows中,所有的消息都用一个特定的整数值来表示,为了避免自定义消息与已存在的其他消息发生冲突,应该利用Windows提供的一个常量:WM_USER,小于这个常量的是系统保留的。即用户自定义的消息至少为WM_USER+1,注意最后表示的消息的数值不要超过0x7FFF。在开发Windows95应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多转载 2013-07-11 14:27:13 · 4689 阅读 · 0 评论 -
stretchblt为什么会造成图片失真
VC 下 StretchBlt 的模式及失真问题 用一个CCD的相机,采集图像,然后在对话框的图片控件中显示。现象:原本应该是黑白相机的灰度图像,显示出来的却是花花绿绿的彩色图像。 开始的时候怀疑是采集的数据有问题,可是查看保存下来的bmp文件,却正常的很。可以确定是显示程序的问题。问题是,基本上是按照sdk的sample逐行抄的,唯一的一点区别就是,sdk是在一个单文转载 2014-12-09 19:21:33 · 2302 阅读 · 0 评论 -
VC 在对话框中增加菜单栏
1、添加菜单资源 在resourceview视图中右击选择insert,添加一个菜单资源IDR_MENU1,同时设定好响应的菜单项,例如: 菜单1 菜单2 子菜单1(ID_MENUITEM1) 子菜单3(ID_MENUITEM3)转载 2015-01-14 17:36:50 · 2201 阅读 · 0 评论 -
VS2010下对话框添加菜单栏和工具栏及其启用,禁用同步
VS2010下对话框添加菜单栏和工具栏及其启用,禁用同步在对话框模式下,菜单栏和工具栏都需要我们自己手动添加。添加菜单栏1、菜单栏的添加比较简单,只需我们创建好“菜单”资源后(即:资源视图->右键单击”XXXDlg.rc”->”添加资源”->资源类型”Menu”->”新建”)创建我们想要的菜单。2、双击资源视图下的对话框ID->”属性”->找到”MENU”->单击下箭头找到创建好的转载 2015-01-13 19:08:46 · 2200 阅读 · 0 评论 -
用classwizard生成某个基类的继承类
1. 打开classwizard 2. 点击Add Class,选择基类原创 2014-12-09 14:55:15 · 615 阅读 · 0 评论 -
CImage类的介绍与使用
程序代码下载处:http://download.csdn.net/source/2098910下载处:http://hi.baidu.com/wangleitongxing/blog/item/9063b03e5e20f3c97c1e71c8.html备注:这个程序是在xp系统,vs2008下做的,当初测试没出什么问题。昨天(2014-11-11)我下了程序在win7下面测试,出现了评转载 2014-12-09 20:27:32 · 547 阅读 · 0 评论 -
public、private和protected的区别
public:声明方法和属性可以被随意访问。Protected:声明的方法和属性只能被类本身和其继承子类访问。private:只能被定义属性和方法的类访问。private 是完全私有的,只有当前类中的成员能访问到.protected 是受保护的,只有当前类的成员与继承该类的类才能访问.protected的访问权介于public和private之间,实际上三者的区别就是权转载 2014-12-09 14:39:49 · 5492 阅读 · 0 评论