自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (1)
  • 收藏
  • 关注

原创 MFC下二维OpenGL环境详细配置

一直以来,网上有很多关于OpenGL在MFC环境下配置的教程,但是,一般都说的不够详细,或者配置过程不够完整,今天我在自己摸索和学习的基础了,写出了这篇文章,尽量说明了坐标系的设定、添加深度测试类型以防止颜色变淡或者不纯等等。首先说明,本配置教程配置完成的OpenGL环境为二维环境,坐标系为中心坐标系,客户区中心为OpenGL坐标系的中心,向右为x轴增大方向;向上为y轴增大方向,与其他的配置方法不

2015-01-25 18:35:35 939

原创 VS中如何快速找到某个函数

在VS中,有时候程序编多了,函数越来越多,通过转到定义、转到声明等方法找函数函数很麻烦,这时候可以通过VS上侧的函数列表来看,如下图所示:

2015-01-25 18:34:52 22900 1

原创 VS中条件断点调试

在调试的过程中,有时候我们并不想让程序没循环一次就停一次,而是在满足一定的条件下才停止,这就需要使用条件断点,所谓条件断点,顾名思义,就是满足一定条件才能触发的断点,添加方法如下:在VS中添加普通断点(单击代码最左侧或在代码所在行按F9),然后在断点的右侧,代码的左侧,也就是紧靠行号的左边空白处,选择条件选项,如下图所示:在弹出的对话框中设置中断条件,设置完成后,断点内会出现一

2015-01-25 18:33:13 1402

原创 在MFC单文档/多文档/对话框环境下添加控制台

在开发过程中,有的时候需要实时查看一些处理结果,或者查看函数的运行时间以判断其性能是否达到要求,但是MFC/对话框环境中并没有控制台,也就是那个常见的黑框框,写了cout代码后,结果也不会输出,为了调试的方便,如何在MFC/对话框环境中加入控制台程序呢?在程序初始化时,开启控制台,并开启读写权限:///测试用,开启控制台,后面destroy里面配套有free::AllocConsole(

2015-01-25 18:31:23 1149

原创 Debug模式和Release模式的区别和调试无法看到正确结果的原因

VS中生成/调试中有两种模式Debug和Release,顾名思义,Debug为调试模式,也就是开发者在开发时使用的模式,Release为发布模式,也就是交付给用户使用的时用的模式。在Debug模式下,VS会留出很多的调试信息和调试接口,方便进行程序调试,但是Debug模式下生成的程序拷贝到其他电脑上,只要该电脑没装VS,就肯定用不了,这对用户来说是不可能接受的,用户使用的永远是Release版本的

2015-01-25 18:28:56 1408

转载 MFC中菜单图标的实现

在MFC中,为了让自己的程序更美观,更形象,有时候需要添加一些菜单图标,这时候该如何实现呢?(1)单文档的菜单图标实现: 1、新建一个位图资源,大小为13*13,假设ID为IDB_BITMAP1,画好图标 2、在CMainFrame中添加成员变量:CBitmapbitmap 3、在CMainFrame的OnCreate中加入: bitmap.LoadBitmap(IDB_B

2015-01-25 18:27:34 1408

原创 MFC中如何删除工具栏中多余的图标

刚学习MFC的时候,发现在MFC资源视图里面编辑工具栏的时候,多余的图标没有删除键,其实只要把你要删除的图标按住并往外拖就可以了。

2015-01-25 18:26:45 1649 1

转载 MFC状态栏的创建、管理、维护等

一个好的软件,界面非常重要,其中的功能要让客户一目了然。而这些可以借助于工具栏,如在MicrosoftWord中的工具栏,相关的操作基本上都可以借助工具栏来完成。下面,我就将我知道的关于VC中关于工具栏的一些东西写写,与大家共享,不对的地方请大家帮忙纠正。 下面我以VisualStudio.net 2003下的单文档/视图的程序为例说明。 在VS中,实现工具栏的类是CToolBar

2015-01-25 18:25:54 522

原创 OpenGL启用双缓冲时颜色变淡或者不纯的解法方法

初学OpenGL,什么都不太会,在开启双缓冲并进行实时绘图的时候发现,颜色和设置的颜色并不完全一样,不太纯正,一直找不到原因,互联网上也搜不到,后来有个偶然的机会,知道了原因,需要在OpenGL环境初始化的时候做一些配置,具体配置非常的简单,在启用深度测试的后面,指定所做的测试类型,代码如下://启用深度测试 ::glEnable(GL_DEPTH_TEST); glDepthFunc(

2015-01-25 18:24:51 667

原创 OpenGL抗锯齿、提高显示效果的设置

OpenGL是一种高效的图形编程库,因此只要不做复杂的图形运算,我们都可以开启OpenGL的抗锯齿、平滑等功能,来增加显示效果,设置需要做在OpenGL画图 前面,一般也就是glBegin的前面,需要记住,OpenGL的效果一次设置,在本程序内一直有效,不需要重复设置,代码如下: //OpenGl设定 glEnable(GL_BLEND); //启用混合功能,将图形颜

2015-01-25 18:22:17 3644

原创 OpenGL启用双缓冲时颜色变淡或者不纯的解法方法

初学OpenGL,什么都不太会,在开启双缓冲并进行实时绘图的时候发现,颜色和设置的颜色并不完全一样,不太纯正,一直找不到原因,互联网上也搜不到,后来有个偶然的机会,知道了原因,需要在OpenGL环境初始化的时候做一些配置,具体配置非常的简单,在启用深度测试的后面,指定所做的测试类型,代码如下: //启用深度测试 ::glEnable(GL_DEPTH_TEST); glDepthFunc(

2015-01-25 18:21:49 941

原创 MFC GDI环境HFONT、Cpen类型使用完后必须按时释放

在使用OpenGL编写基于MFC的OpengGL PPI显示器的时候,开始总会有内存溢出,一直找不到原因,后来发现是创建了一个HFONT的字体变量,然后字体用完后没有释放,原本以为HFONT类型的变量和int型变量一样,是一种基本类型,无需手动释放,后来发现,这是微软在MFC GDI环境下提供的一种变量,和Cpen一样,需要做手动释放,具体代码如下:      //建立字体 HFO

2015-01-25 18:13:10 1495

原创 在MFC环境下配置OpenGL导致闪屏的解决方案

按照牛四强OpenGL学习中网页的配置方法或者网上的配置方法在MFC框架下配置完OpenGL后,虽然启用了双缓冲,但是仍然会出闪屏的情况,这是由于OpenGL自己有刷新背景的函数glClear,故而应禁止Windows刷新窗口背景。否则,当窗口需要重画时,Windows会自动先发送WM_ERASEBKGND,而缺省的处理函数使用白色的背景刷。当OpenGL使用的背景颜色不是白色时,作图时有一帧白色

2015-01-25 18:11:36 1610

转载 C++中类似C#用于折叠代码的语句

这个微软在VS2005及其以上版本提供的功能,不是C++的标准功能,但是在VS下进行编程时,可以对其代码进行整理、折叠,方便使用。//语法描述#pragma region name#pragma endregion //END//实例代码#pragma region Region_1void Test() {}void Test2() {}void 

2015-01-25 18:10:56 637

原创 C++标准库中vector容器的使用

标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。非标准的关联容器hash_set、hase_multiset、hash_map和hash_multimap。容器是具有大小可变的存储空间,这

2015-01-25 18:09:11 2448

转载 CString和内置类型之间的转换

Cstring是MFC中比较好用和常用的一种字符串类型,有时候我们需要将一些例如int、double等的常用类型转换成Cstring类型,具体转换方法如下:(1)  float、int、double转Cstring在MFC中可以采用CString内置的函数Format实现,形式如下CString destinationdestination.Format(_T("%??"),sou

2015-01-25 18:07:48 375

原创 结构体类型的使用

结构体类型是一种非常常用的类型,相对于类,其所有的成员均为public类型,而且只有数据,而没有多余的方法,因此经常使用。使用结构体的主要作用是减少变量数目,并使结构清晰化,代码简单化。特别是对于那种多个地方多次使用的相同类型的变量,更应该封装成结构体。比较常见的一种情况是,我们在一个名为CommonDefine.h的头文件中声明各段代码都共用的结构体类型,然后在其他的头文件中包含这个头文

2015-01-25 18:07:08 851

原创 MFC RadioButton用法简单介绍

基础介绍:radio button通常都是成组使用的,在一组里面是互斥的。分组的原则是:1、首先将RadioButton控件定好Tab顺序,具体方法:工具栏“格式”—>“Tab键顺序”选项选中,然后按照预定的顺序依次点击对话框上面的RadioButton按钮,Tab键顺序设定完成。2、按照上面的Tab键顺序进行分组,然后设定每组第一个RadioButton的Group属性为TRUE

2015-01-25 18:06:02 713

转载 如何让MFC程序只能运行一个?

有时候,有的程序只能运行一个实例,这时候可以在程序中进行控制。在APP::InitInstance()定义个互斥对象,HANDLE m_hMutex; //用于互斥的对象句柄,具体代码如下: m_hMutex = ::CreateMutex(NULL, TRUE, "互斥名(随便取)"); if (GetLastError() == ERROR_ALREADY_EXISTS) //程序已经运

2015-01-25 18:04:27 859

原创 C#报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”的解决方法。

在VS下进行C#编程并调用C++的DLL时候,有很小的概率报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”,其解决方法是把VS菜单中的 调试—异常—Managed Debuggin Assistants—LoaderLock的选中状态去掉。

2015-01-25 18:03:17 2895

转载 VS2010工程占用空间过大的原因和解决方法

如果不进行特定的设置,用VS2010建立的工程占用磁盘空间会非常的大,原因是VS2010会自动生成.ipch和.sdf文件,用于记录整个开发过程中的变化,这些东西在99.9999%的情况下是完全用不到的,要解决占用空间大的问题,有两种方法:(1)临时性方法:每次复制VS2010工程时在其文件夹中搜索.ipch和.sdf文件,并直接删除,不影响工程的打开和使用。(2)永久性方法:在VS201

2015-01-25 18:02:30 4119

原创 MFC中通过代码添加按钮

(1)首在相应类的头文件添加private类型的Cbutton指针的定义;private://牛四强自己定义的//仿真开始按钮CButton *SimStart;(2)在相应类的头文件的DECLARE_MESSAGE_MAP()后添加相应的按钮响应函数的声明;//牛四强自己添加的消息函数afx_msg voidOnBtnSimStart();(3)在相应类的CPP文

2015-01-25 18:01:53 4406 1

原创 MFC中获取/设置按钮的文字/改变按钮的文字

(1)获取按钮的文本具体示例如下://用于缓冲的临时CStringCStringtempstr;//获取ID_SimPause按钮的文本内容,其中ID_SimPause为按钮的IDGetDlgItem(ID_SimPause)->GetWindowText(tempstr);(2)设置按钮的文本具体示例如下://,其中ID_SimPause为按钮的ID,””内为按钮的文字内

2015-01-25 17:59:56 13066

原创 我个人理解的C++面向对象的类

C++中类是一个非常重要的概念,也是经常使用的一个东西,平时我们建立对类成员的属性(public、protected、private)并不注意,经常将所有成员都设为public属性的,按照面向对象的标准化思想,在C++建立类时,需要注意:(1)封装:将功能封装成一个个独立的单元,减小耦合,避免牵一发而动全身,降低维护成本。(2)类的成员变量都定义成private类型的,类的成员函数无特殊情

2015-01-25 17:59:06 408

原创 防止头文件重复包含

在编程中,经常会遇到这种情况,我们的某一个程序会调用多个DLL,因此需要包含多个头文件,不同的头文件可能包含了相同某一个下一级头文件,这就可能会导致头文件的重复包含,从而导致变量/函数的重定义等等,为了解决这个问题,就要求我们在编写Dll的时候,使用#ifndef  …  #define …#endif来保证头文件的唯一性。具体做法为:(1)头文件的时候,在头文件的最前面写上一些两行,意思

2015-01-22 21:56:35 400

原创 Try-catch异常抛出的简单用法

在简单的编程中,我们一般用if来判断异常,也是非常挫逼的,而且由于异常经常会造成内存泄露等不知名的错误,因此在以后的编程中,我们尽量采用try-catch的模式来进行编程。其简单用法如下:try      {             //你需要执行的代码,其中可能有异常。一旦发生异常,立即跳转到catch执行             //如果没有异常,则不会执行catch里面的东西

2015-01-22 21:54:54 5566

原创 配带进度条的C#欢迎界面的实现

最简单的实现C#欢迎界面的实现方法是通过多个对话框(即C#工程中的Windows窗体)来实现,其中一个对话框做欢迎界面,将BackGroundImage设置为你喜欢的欢迎界面即可,在程序载入时,先载入这个对话框,并在对话框里设置一个Timer,按照一定的时间进行对进度条进行递进,这个对话框载入完成后,再进行其他初始化并启动主线程。

2015-01-22 21:54:08 1833

原创 如何在Simulink中添加自己的库?

1.在Maltab安装路径某个地方创建一个文件夹。比如说在E:\MATLABR2009a\toolbox\ 路径下面创建了一个文件夹MyLib, 也就是E:\MATLABR2009a\toolbox\MyLib2.把你的库文件( .mdl )文件 放到这个文件夹下面3.在这个文件夹下面创建一个 slblocks.m文件,基本内容如下function blkStruct = slbloc

2015-01-22 21:49:40 18798 2

原创 为MFC菜单项添加消息处理函数

做进行单文档编程时,有时候需要对原有的菜单进行删除、修改或添加,因此,有些菜单项的消息处理函数需要我们自己添加,那么如何添加消息处理函数呢?首先,打开类视图,选择CmainFrame类,此时在属性对话框中显示的是CmainFrame类的属性,属性标签里面有个小闪电型标签,表示事件,在事件中选择你需要添加消息处理函数的菜单的ID,点击加号,在COMMAND后面点击添加即可,如下图所示:

2015-01-22 21:48:52 3770

原创 利用窗口分割将多EXE嵌入统一程序(MFC)

窗口分割的必要性:有时候我们需要在一个窗口内显示不同的信息,类似于下图所示,每个窗口直接交互并不大,或者我们需要将一个exe嵌入到一个窗口中,这样就用到了窗口分割。窗口分割技术在MFC的单文档文件中比较容易实现,其他编程语言或者对话框可能也可以实现,但是实现起来比较复杂,与此同时没有现成的例子或者函数。实现窗口分割的步骤:(1)建立一个单文档程序:新建—项目—Visual C+

2015-01-22 21:38:12 3819 2

原创 基于计算机时钟晶振的高精度时间的获取

有时候我们需要计算某次仿真的运行时间,以来计算时效比,也就是说实际中1秒钟的时间我们的仿真要消耗多少实际时间,这就需要我们在程序运行前,获取一次系统时间,程序运行后,获取一次系统时间,两次相减,就是用的时间。获取时间可以用17中的方法获取,但是这个函数耗时间长,而且会由于线程占用等导致获取的时间不稳定,因此我们需要一种更精确的计时方法。在Windows操作系统当中,QueryPerform

2015-01-22 21:31:09 2577

原创 C++多线程实例(线程的建立—调度—正确结束)

C++中的多线程编程时一个非常复杂的东西,使用过程中一定要注意线程的调度和结束。那么为什么要用多线程呢?举一个例子,界面里有个按钮,按钮按下后,这个操作需要非常长的时间才能完成,那么在操作未完成之前,会将界面卡死,无法进行其他操作,这就是需要多线程的原因,一个主线程维持界面的运行,其他的线程在后台运行,进行其他需要的操作。首先,要定义线程句柄: //线程句柄    HANDLE h

2014-08-10 13:28:24 2990

转载 C++按行读取txt示例

首先,需要包含fstresm头文件,即#include “fstream,然后需要定义输入流”//定义输入流ifstream fin(“d:\a.txt”,std::ios::in);//缓存字符串                chartempline[10240] = {0};                while(   fin.getline(templine

2014-08-10 13:27:27 633

原创 C#写txt示例

C#读写txt需要用到文件流,首先需要包含文件流的命名空间using System.IO,然后需要定义一个StreamWriter变量,设置文件的保存位置        //测试,C#写txt        public StreamWriter testwrite = newStreamWriter(@"d:\\testwrite.txt",true);然后通过下面语句进行写入txt

2014-08-10 13:25:05 461

原创 VC++项目图标替换方法

如果一个VS下的VC++项目图标已经设置好了,然后你又想改,那么你就需要注意了,尽量不要采用直接在资源界面添加图标的方法,那样改的很不彻底,最好的方法是直接替换,比如你想更改ID号为IDI_PLANE的图标,那么,你首先需要双击这个图标,看其属性页面:

2014-08-10 13:24:25 991

原创 C#编译时出现“不安全代码只会在/unsafe编译的情况下出现”

C#编译时出现“不安全代码只会在/unsafe编译的情况下出现”的原因是在编译的代码中有不安全类型的方法和类,如调用了C++  DLL的指针等等,解决方法是:选择项目——属性——生成——允许不安全代码,具体如图4所示:

2014-08-10 13:22:39 1010

原创 Matlab代码加密/封装处理

有时候为了保护版权等等,我们不希望对方单位看到我们的代码,而Matlab在这方面也有其自己的加密方法——P文件,P文件是一种类似于安卓odex优化的预载入文件,能够提高Matlab的载入速度和运行速度,同时可以对代码进行加密,是其他人看不到m代码,具体做法如图3所示:

2014-08-10 13:19:27 13839 2

转载 绘制有填充和无填充颜色的长方形和圆形(C#)

长方形和正方形是一样的,都是用画长方形函数来画,圆形和椭圆是一样的,都是用画椭圆函数来画,下面就以具体的程序为例来进行了解://正方形protected override void OnPaint(PaintEventArgse)       {            Pen drawingPen = new Pen(Color.Red, 5);e.Graphics.Dra

2014-08-10 13:18:39 11011

原创 Paint事件搭配timer实现动态实时绘图(C#)

在做显控的时候,有时候数据变化较快,需要实时进行绘图,这时候可以把Paint时间和timer结合起来使用,具体过程如下:首先按21的方法激活Paint事件,也就是绘图时间,然后编写绘图函数然后,在设计界面中添加timer控件,并对timer属性进行设置,Enabled属性设置为True,Interval属性设置为10,也就是一个很频繁的刷新速率。之后,双击timer,此时会激活time

2014-08-10 13:17:50 2757 1

原创 鼠标移动函数的添加(C#)

有很多时候我们需要获取鼠标的当前坐标,并根据鼠标位置做一些操作,比如鼠标靠近某个方向或某个点时显示部分信息等等,C#的鼠标移动事件是非常方便的,你只需要在对话框设计的界面中关注属性那个工具栏,下面将结合图片进行详细说明:

2014-05-21 22:02:26 782

新时代交互英语答案(清华版)

新时代交互英语四册答案,清华大学出版社,word文档,很好的

2010-02-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除