
VC++
文章平均质量分 75
Phenixyf
这个作者很懒,什么都没留下…
展开
-
互斥锁、死锁以及如何预防、避免、检测、解除死锁
由于在避免死锁的策略中,允许进程动态地申请资源。(1)访问公共资源前,必须申请该互斥锁,若处于开锁状态,则申请到锁对象,并立即占有该锁,以防止其他线程访问该资源;撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁在逻辑上绑定(要申请该资源必须先获取锁)。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。转载 2023-04-06 09:36:03 · 1341 阅读 · 0 评论 -
MFC多线程互斥锁的使用
这是未加互斥锁的情况下,程序中,我们在线程1将n赋值为1并在EDIT1显示;理论上控件上应分别显示1和-1,但实际上,会出现同时显示1,或同时显示-1或显示-1和1的情况。这是由于线程间同时调用同一变量造成的(严格来讲并不是同时,而是比如线程1赋值为1后还没打印出来就被线程2赋值为-1了,所以造成最后打印出来都是-1,其他情况同理)。这样在一个线程的运行周期内,其他线程就无法更改变量。8.修改后编译运行,可以看到使用互斥锁后,程序按预想的形式运行,EDIT1稳定的显示1,EDIT2稳定的显示-1。转载 2023-04-04 20:43:27 · 1190 阅读 · 1 评论 -
MFC多线程的开启、暂停、继续和注销
本例演示在MFC中使用多线程。第一部分实现多线程的开启、暂停、继续、注销。第二部分实现两个线程互斥锁的使用(见下一篇文章MFC多线程互斥锁的使用)。6.说明:线程的注销需要在线程内部执行,所以这里使用了一个标识符ThreadKill用来控制线程是注销。从而避免了使用消息队列带来的复杂情况。1.使用VS2017搭建基于对话框的MFC应用程序,名为“ThreadTest”。并放置一个EDIT控件和四个BUTTON控件,如图。演示系统为Win10,平台为VS2017(MFC),主要使用类为CWinThread。转载 2023-04-04 20:26:20 · 779 阅读 · 0 评论 -
Win C++/MFC创建线程的三种方式
用CreateThread()函数创建线程将返回一个线程句柄,通过该句柄你可以控制和操作该线程,当你不用时可以一创建该线程后就关闭该句柄,有专门的函CloseHandle()。假如成功,函数将会返回一个新线程的句柄,用户可以像这样声明一个句柄变量存储返回值:HANDLE hStdOut = _beginthread( CheckKey, 0, NULL )。对于_beginthread()创建的线程,其线程函数定义为:void ThreadPro(void * pArguments );转载 2023-04-04 11:04:59 · 2550 阅读 · 0 评论 -
C++字符串--窄字节宽字节--Cstring
a=b 返回值0a>b 返回值>0a转载 2022-09-09 14:16:10 · 1442 阅读 · 0 评论 -
控件的大小和位置按照我们的要求随对话框变化而变化
下面两个文件是一个派生自 CDialog 的对话框类,能够非常好的实现控件的大小和位置按照我们的要求随对话框变化而变化的功能。将这两个文件加入你的工程中,并将你的对话框修改成继承 ClxDialog,通过设置各个控件的iFlag值,实现位置和大小的改变。头文件://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////转载 2022-05-12 17:03:01 · 220 阅读 · 0 评论 -
MFC一一窗口控件随窗口大小进行自适应
通常,我们在将窗口进行最大化时会出现窗口中的控件自适应问题,如何让窗口中的所有控件跟随窗口做自适应变化,提供如下操作方法供参考1、首先在OnInitDialog函数中获取窗口位置坐标BOOL CDialogQual::OnInitDialog(){ CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 CRect rect; GetClientRect(&rect); //取客户区大小 old.x=rec转载 2022-05-12 16:50:00 · 2041 阅读 · 0 评论 -
VS2019 MFC 对话框拆分窗格
将对话框 A (CDlgTabLowLevel)拆分成窗格 B(CRegDesView) 和 窗格 C(CRegSetView),注意 B 和 C 的基类必须是某种 view 类,比如 CFormView 或 CTreeView 类,而 A 的基类不能是 view 类,可以是 CDialog 类或 CFrameWnd 类。1. 在 MFC 对话框工程基础上,添加两个MFC CFormView 类上面步骤完成后,可以看到类视图中添加了两个类的类文件另外,资源...原创 2022-05-12 13:12:42 · 1161 阅读 · 0 评论 -
MFC一一窗口控件随窗口大小进行自适应
通常,我们在将窗口进行最大化时会出现窗口中的控件自适应问题,如何让窗口中的所有控件跟随窗口做自适应变化,提供如下操作方法供参考1、首先在OnInitDialog函数中获取窗口位置坐标BOOL CDialogQual::OnInitDialog(){ CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 CRect rect; GetClientRect(&rect); //取客户区大小 old.x=rec转载 2022-05-10 14:39:11 · 3252 阅读 · 1 评论 -
MFC嵌套拆分窗口的实践总结
前一阵子因为项目需要,了解了一下MFC拆分窗口的实现。这里总结下来,供以后复习和回顾。(///先摘抄下基本知识)MFC支持两种类型的拆分窗口:动态和静态。静态拆分窗口的行列数在拆分窗口被创建时就设置好了,用户不能更改,但是用户可以缩放各行各列。一个静态拆分窗口最多可以包含16行16列。Windows资源管理器即是静态拆分窗口的实例。资源管理器的主窗口在垂直方向上被静态拆分窗口分成了两半。动态拆分窗口最多可以有两行两列。但他们可以相互拆分和合并。显示在动态拆分窗口中的视图并不是完全独立的:动态转载 2022-05-10 14:23:09 · 720 阅读 · 0 评论 -
MFC对话框窗口分割/拆分
一、新建项目:项目名称为:MySplitterDlg,其他保持默认选项即可。二、 创建对话框类分别创类CMyFormView0 和CMyFormView1,基类别选CDialog,一定要选择CFormView。类向导->添加类(MFC类):三、 增加WM_CREATE消息响应函数OnCreate通过“类向导”为“CMySpliterDlgDlg类(不要选择其它类)添加WM_CREATE的消息响应函数:四、编辑OnCreate添加了消息函数OnCreate之后,编辑其内容.转载 2022-05-09 21:32:13 · 2078 阅读 · 0 评论 -
字符集 unicode utf-8 gbk
多字节和宽字节多字节:一个字符对应一个字节(英语国家最开始使用) 宽字节:一个字符对应多个字节(中文、韩文等其它语言引入后使用)Unicode 就是宽字节,unicode 有很多种比如常见的 UTF-8 (一个字符对应 3 个字节) GBK(一个字符对应 2 个字节)多字节转宽字节MFC 工程中会设定当前工程使用什么字节,如果要使用中文要选择宽字节(unicode)。多字节如何转宽字节?第一种方法:直接在字符串前加 L 即可,如:MessageBox(L"aaaa.原创 2022-05-04 10:58:56 · 429 阅读 · 0 评论 -
VC6调节控件的位置和大小
实现这个功能的核心是调节控件的位置和大小,这里我采用了CWnd类的SetWindowPos()函数,使用该函数之前必须先获得控件的指针,使用GetDlgItem()来做到这一点。两个函数的原型如下:CWnd* GetDlgItem(int nID)const;返回值:指向给定控件或子窗口的指针;参数:nID为控件或子窗口的ID值。BOOL Set转载 2012-06-13 16:29:09 · 1281 阅读 · 0 评论 -
类型BYTE,WORD与DWORD
做程序最烦人的就是碰到,程序没什么语法错误,编译通过,运行也通过,就是不出结果的情况。昨晚晕晕乎乎的搞了三个小时,没搞出来的程序,就刚才一小会的功夫就看出来了,原来是数据类型搞错了。本来该是DWORD类型的,写成了BYTE类型。难怪!为了不让其他同行也犯类似的低级错误,现将BYTE、DWORD和WORD类型的区别列在下边,仅供参考。^_^在Visual C++ 6.0中,BYTE与WORD,D转载 2012-08-07 10:05:53 · 6319 阅读 · 0 评论 -
举例介绍VC++中的ODBC编程
ODBC(怒放式数据库Databnse连接)是一种应用SQL的程式设计接口,应用ODBC使数据库Databnse实际运用程式的编写者避免了与数据源相连接的复杂性。利用ODBC技能使得程式员从具体的DBMS中解脱出来,从而能够递减热门软件开发的务工量,缩短开发周期,并升高效率和热门软件的可靠性。这项技能目前已经得到了大多数DBMS厂商的广泛支持。Microsoft Developer Studi转载 2012-08-14 10:39:20 · 695 阅读 · 0 评论 -
C++新手之详细介绍MFC
MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft转载 2012-08-14 10:36:58 · 738 阅读 · 0 评论 -
三种Windows中的定时或计时方法
-------------------------------------------------------------------------------三种Windows中的定时或计时方法 -------------------------------------------------------------------------------- ----转载 2012-08-16 12:10:42 · 1322 阅读 · 0 评论 -
时间的函数,sleep,clock,gettickcount,....
介绍 我 们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都 会用到时间函数。还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得出函数或者算法的运行时间。编译器和操作系统为我们提供了很多时间 函数,这些时间函数的精度也是各不相同的,所以,如果我们想得到准确的结果,必须使用合转载 2012-08-16 12:12:12 · 741 阅读 · 0 评论 -
VC format函数详解
一、字符串 首先看它的声明: function Format(const Format: string; const Args: array of const): string; overload;事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的, 但并不多用,所以这里只对第一个介绍: function Format(const Form转载 2012-08-21 14:49:15 · 792 阅读 · 0 评论 -
CStatic类
CStatic类提供了一个Windows静态控件的功能。一个静态控件可以用来显示一个文本字符串、方框、矩形、图标、光标、位图或增强的图元文件。它可以被用来作为标签、方框或用来分隔其它的控件。静态控件通常不接收输入,也不提供输出;但是,如果它具有SS_NOTIFY风格,则它可以通知其父有关设备点击的消息。创建一个静态控件分两步。首先,调用构造函数来构造一个CStatic类的对象,然后转载 2012-08-27 11:06:25 · 724 阅读 · 0 评论 -
CStatic控件的基本使用
CStatic 继承于 CWnd,是一种特殊的窗体。他可以显示文本字符串(这也是最常用的用法)、图标、指针(cursor)、位图和增强图文元件. 通常静态控件不提供输入和输出。但是如果把他的属性设置为 SS_NOTIFY,他可以通知其父窗口的击鼠标事件。一。CStatic 用于显示文本 如果文本不变,可以直接设置其 Caption。如果想在运行过程中改变其显示文本,可以用如下转载 2012-08-27 14:13:07 · 675 阅读 · 0 评论 -
memset用法详解(转)
void *memset(void *s, int c, size_t n); memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。常见的三种错误第一: 搞反了c 和 n的位置. 一定要记住 如果要把一个char a[20]清零, 一定是 memset(a, 0, 20) 而不是 memset(a, 20, 0)转载 2012-08-28 15:29:55 · 546 阅读 · 0 评论 -
VC控件使用总结
VC学习笔记1:按钮的使能与禁止 用ClassWizard的Member Variables为按钮定义变量,如:m_Button1; 则 m_Button1.EnableWindow(true); 使按钮处于允许状态 m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示 VC学习笔记2:控件的隐藏与显示 用CWnd类的函数B转载 2012-09-17 14:44:31 · 662 阅读 · 0 评论 -
关于VC编译错误fatal error C1083的解决办法
错误总是不断的,经验是累积的。C1083: Cannot open precompiled header file: 'Debug/.pch': No such file or directoryThis error results from a missing file - the compiled version of StdAfx.cpp. Visual C++ does a p转载 2012-12-06 09:17:24 · 765 阅读 · 0 评论 -
VC编译时,提示no compile tool is associated with the file extension错误
原因是你目前打开的是.h文件,而C++程序中,.h的头文件是不参与编译的。你只需要把其他.c文件或者.cpp文件,双击打开,这时在编译就不会提示了转载 2012-12-06 09:00:46 · 687 阅读 · 0 评论 -
C#线程篇---解答线程之惑(2)
我们都知道,在这个行业,追求的就是用最少的时间学最多的知识,这是我写这个系列最想达到的目标,在最快的时间内,帮助更多的人学习更多的线程知识。 前一篇,讲述了线程基础,给大家铺垫了一个基础,这一篇着重介绍线程的作用及其工作方式,顺便小试牛刀一把。 现在我想提出,最直接的问题是: 为什么要使用线程? 为什么要使用线程?答案只有三点(欢迎补充^_^):使用线程转载 2013-01-15 09:48:18 · 442 阅读 · 0 评论 -
C#线程篇---让你知道什么是线程(1)
线程线程,进程进程,到底什么是线程,什么是熟练多线程编程?今天来和大家一起讨论讨论线程基础,让大家知道线程的基本构造。说线程之前,先要了解下进程,这个可不能不知道。什么是进程? Microsoft设计操作系统内核时,他们决定在一个进程中运行应用程序的每一个实例,进程也不过就是个应用程序实例要使用资源的集合。(见过烤玉米,烤甘蔗的没?如下图:)转载 2013-01-15 09:43:20 · 475 阅读 · 0 评论 -
C#线程篇---Windows调度线程准则(3)
Windows本身就是一个抢占式操作系统,它的实现,必定有某种算法在里面,比如什么时候调度哪些线程,需要花费多长时间等问题。我们时时在用Windows,作为程序员,我们有必要知道其中最贴近我们的算法。为什么这么说?我们对系统发出的命令,获取信息等操作,Windows为什么能这么快作出反应吗?这仅仅是上下文切换那30毫秒的功劳吗?操作系统能依照人的操作,处理当前用户最迫切的请求,并在最短时间转载 2013-01-15 09:50:46 · 486 阅读 · 0 评论 -
lib和dll的区别
什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37) (1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是转载 2013-01-21 15:35:09 · 333 阅读 · 0 评论 -
C++ UpdateData()
UpdateData()参数只有一个,默认为TRUE。UpdateData(TRUE)——刷新控件的值到对应的变量。(外部输入值交给内部变量)即:控件的值—>变量。UpdateData(FALSE)—— 拷贝变量值到控件显示。(变量的最终运算结果值交给外部输出显示)即:变量值—>控件显示。例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_userco转载 2013-06-04 18:01:23 · 4355 阅读 · 0 评论 -
在vc中添加变量向导中 类别 Value和control 是什么意思
ClassWizard支持为控件增加Value和Control两种类型的成员变量,但每个控件同时最多只能有一个Value型和一个Control型的成员变量,前者代表着控件的值,而后者代表着控件本身。如果只想设置或获取控件内部存储的值,那么可以选择添加一个Value型的变量,如果还想在运行时对控件的各种属性进行控制,那么可以选择添加一个Control型的变量。常见的Value型变量有int、转载 2013-06-04 18:13:58 · 4379 阅读 · 0 评论 -
一步一步实现MFC扩展DLL中导出类和对话框
http://www.vckbase.com/index.php/wv/1199 如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对话框。一、创建MFC扩展DLL 步骤: 运行Visual Studio 6.0->Fi转载 2013-06-21 22:29:38 · 859 阅读 · 0 评论 -
VC6.0 应用MSCOM控件
MSComm控件属性----说明 必须要熟悉的几个——CommPort:设置并返回通信端口号;Setting:以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区定一个字符串)1)CommPort属性void SetCommPort(s转载 2013-10-10 09:45:19 · 4411 阅读 · 0 评论 -
64位机器上的控件注册
注册控件本来是件比较容易的事情,regsvr32 控件名字,不过在64位win7下稍微麻烦点,考虑权限之类的问题。初始状态:保证要注册的OCX控件都下载全了1.确保win7管理员权限2.把OCX控件,放到C:\Windows\SysWow64 路径下面3.进入cmd,管理员权限运行4.regsvr32 C:\Windows\SysWow64\XXX.ocx转载 2013-10-10 09:46:31 · 861 阅读 · 0 评论 -
win7 64位 想用VC6.0 ActiveX控件,但是没有Register Active解决办法
在Project>>>Add to project>>>>Component and controls,后只出现gallery,没有关于Active-x控件的相关东西,怎么办啊? 嘿嘿解决掉了,位置跑偏了,在对话框随便一个地方,右键,然后选择如图示。转载 2013-10-10 11:29:17 · 4851 阅读 · 0 评论 -
VC 中Combo Box的使用
Combo Box(组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。1.改变下拉框大小 1)直接在控件上操作,先点向下的箭头,就可以调整下拉框大小; 2)为了让列表框变的更宽,可以用setdroppedwidth(int width)函数来调转载 2013-10-12 09:32:35 · 733 阅读 · 0 评论 -
VC6中两个对话框的同时显示
对于VC++初学者,可能会遇到这样一个问题:一个基于Dialog的MFC AppWizard应用程序,再Insert一个对话框,如何同时显示这两个对话框呢? ---- 其实这个问题很简单,想要在屏幕上同时显示两个对话框,并且这两个对话框都可以被激活,则至少第二个对话框应该为非模态对话框。启动非模态对话框的方法与启动一个普通窗口的步骤是一样的,即先调用窗口类的Create()函数创建一个窗口对转载 2013-10-14 17:00:07 · 1713 阅读 · 0 评论 -
VC中的ComBox控件详解 (转)
一、如何添加/删除ComboBox内容1,在Combo Box控件属性的Data标签里面添加,一行表示Combo Box下拉列表中的一行。换行用ctrl+回车。2, 在程序初始化时动态添加如: //控件内容初始化 CString strTemp; ((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消 除现有所有内容转载 2013-10-27 17:34:09 · 1420 阅读 · 0 评论 -
VC静态链接库与动态链接库的区别,创建及调用
http://www.dz3w.com/mcu/othermcu/10279.htmlVC静态链接库与动态链接库的区别,创建及调用VC静态链接库与动态链接库的区别,创建及调用1.静态链接库与动态链接库区别:静态链接库:lib中的指令被直接包含在最终生成的EXE文件中。动态链接库:dll不必被包含在最终的EXE中,EXE文件执行时可以动态地引用和卸载DLL文件。同转载 2013-08-09 13:42:16 · 883 阅读 · 0 评论 -
VC6如何调用 串口控件(Commn ActiveX)
1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest;2.在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的 Components andControls…选项,在弹出的对话框中双击RegisteredActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表转载 2013-11-17 15:10:08 · 2702 阅读 · 0 评论