![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件
leonid112
这个作者很懒,什么都没留下…
展开
-
MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别
ON_COMMAND是响应打开菜单的命令的。 ON_UPDARW_COMMAND是你打开这个菜单时,处理这个菜单的状态,比如选中、变灰等等。比如WINDOWS自带的记事本程序,它的"格式"菜单下有个"自动换行",那么在编写记事本这个程序时,对文本进行自动换行或不自动换行的操作就要放在ON_COMMAND消息响应函数里,而"自动换行"菜单项左边是否打勾的操作则放在ON_UPDATE_CO转载 2012-10-31 11:56:10 · 622 阅读 · 0 评论 -
C/C++内存知识(二)
计算内存容量用运算符sizeof 可以计算出数组的容量(字节数)。int a[3],sizeof(a)的值是12(注意别忘了’\0’)。p是指针,指向a,但是sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数,相当于sizeof(char*),而不是p 所指的内存容量。C++/C语言没有办法知道指针所指的内存容量,除非在转载 2013-08-29 11:58:35 · 495 阅读 · 0 评论 -
C/C++内存知识(三)
指针参数是如何传递内存的?如果函数的参数是一个指针,不要指望用该指针去申请动态内存。函数的语句GetMemory(str, 200)并没有使str 获得期望的内存,str 依旧是NULL,为什么?void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}转载 2013-08-29 12:03:27 · 535 阅读 · 0 评论 -
VC|MFC内存不能为"read",内存不能为 "written" 分析
转载自百度空间,两篇文章VC调试中提示0X000000该内存不能为read的解决方法?昨天运行好的程序,可今天运行时出现了这样的问题。仔细差了代码也没有问题。查了一下资料。在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“转载 2013-08-29 11:52:15 · 1214 阅读 · 0 评论 -
C++ try catch 问题
try{} catch(…){}以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try { BYTE* pch ;pch = (BYTE* )00001234 ; //给予一个非法地址 *pch =6 ; //对非法地址赋值,会造成Access Vio转载 2013-08-30 10:38:43 · 1097 阅读 · 0 评论 -
C++中catch(…)如何使用
上一篇文章中详细讲了讲C++异常处理模型的trycatch使用语法,其中catch关键字是用来定义catch block的,它后面带一个参数,用来与异常对象的数据类型进行匹配。注意catch关键字只能定义一个参数,因此每个catch block只能是一种数据类型的异常对象的错误处理模块。如果要想使一个catch block能抓获多种数据类型的异常对象的话,怎么办?C++标准中定义了一种特殊的cat转载 2013-08-30 10:40:40 · 16982 阅读 · 0 评论 -
C++常见的内存错误及其对策
发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任 ...发生内存错误是件非常麻烦的事情。编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到。而这些错误大多没有明显的症状,时隐时现,增加了改错的难度。有时用户怒气冲冲地把你找来,程序却没有发生任何问转载 2013-08-30 15:32:54 · 677 阅读 · 0 评论 -
SystemParametersInfo 关于VERIFY 出错
今天程序调试中遇到了转载 2014-08-01 17:51:47 · 966 阅读 · 0 评论 -
运用C#编程通过OPC方式实现PC机与西门子PLC通讯-同步通讯篇
1、 OPC服务介绍 西门子提供的最新软件:Simatic Net PC-Software CD 2005为各种组态软件的开发提供了一个统一的平台,它建立的PC站既为一些组态软件,如:WinCC、Protol等提供了与PLC的通讯平台,也提供了一套编程接口,可使用高级语言编程通过Simatic Net访问PLC数据。本文讨论的主要就是这个编程接口,最新版的Simatic NET支持五种编程转载 2014-11-05 22:02:29 · 24182 阅读 · 8 评论 -
C/C++内存知识(四)
有了 malloc/free为什么还要new/delete?malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数转载 2013-08-29 12:12:47 · 530 阅读 · 0 评论 -
C/C++内存知识(一)
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)— 全局变量转载 2013-08-29 11:57:58 · 669 阅读 · 1 评论 -
带状对角矩阵的LU分解及回代求解算法实现
算法名称:带状对角矩阵的LU分解及回代求解 算法描述: 分解主要是使用笔者前面几篇文章提到过的Crout方法。因为不可能把一个带状对角矩阵A的LU分解也像其压缩形式本是一样紧凑的存储起来,因为分解产生了附加的非零元素填入。一种直接的存储方案是,坝上三角因子(U)返回到以前占有的相同的空间中,把下三角因子(L)返回到单独的N×m1压缩矩阵中。U的对角线元素被存放在A的存储空间转载 2013-01-14 11:54:18 · 4677 阅读 · 0 评论 -
typedef和#define的用法与区别
一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“转载 2012-10-31 11:59:54 · 294 阅读 · 0 评论 -
c++中ertern 用法简记
为什么用EXTERN? 全局变量(外部变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态存储区。有时需要用extern来声明全局变量,以扩展全局变量的作用域。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该全局变量,则应该在引转载 2012-10-31 12:01:48 · 556 阅读 · 0 评论 -
指针和const的那些事
在C++中,指针是个比较让人头疼的东西,把指针和const限定符放在一起,显得更难以理解,最近看《C++ Primer》关于这方面的内容有一点心得,和大家分享一下。长话短说,下面进入正题。从大的方面讲,指针和const可以构成“指向const对象的指针”和“const指针”。首先来看“指向const对象的指针“,从字面的意思不难知道,这个const修饰的是对象,而不是指针本身,我们转载 2012-10-26 13:39:53 · 319 阅读 · 0 评论 -
VC++2008如何用tab控件实现属性页
在VC编程中tab控件是个很有用的控件,用它可以来实现如下图所示的属性页:每个属性页对应着一个子页面,不同的子页面实现不同的功能,这便产生了一个问题,每个子页面上可能会有许多控件,这样各个控件之间可能就会相互覆盖,相互影响,显然这是不能实现属性页的功能的。解决这个问题的方法有两种,一是将所有的控件放在一个对话框中,切换属性页时隐藏不需要的控件,但是这样会使得整个对话中的控件非常转载 2012-10-26 13:39:14 · 2188 阅读 · 0 评论 -
多点坐标排序算法
最近做项目中需要一个对多点坐标进行排序的算法,最后终于得到了自己满意的算法,公布如下:#include #include struct POINT{ float x,y;};int pt_cmp(const void* val_l, const void* val_r){ POINT* left = (POINT*)val_l; POINT*原创 2012-11-06 16:03:57 · 9578 阅读 · 1 评论 -
为应用程序添加停靠面板
此例向导为使用Visual Studio 6.0 应用程序向导制作具有可停靠面板的MDI程序. 对于最新版本的 Visual Studio . NET这种技巧同样生效.使用MFC AppWizard制作简单的MDI程序:Visual Studio中选择文件(File) |新建(New) 选择项目(Projects) tab.选择 项目类型为MFC Appwizard(exe) ,输转载 2012-11-28 09:43:59 · 1377 阅读 · 0 评论 -
关于XTToolkitPro中DialogPanes无法响应OnDockingPaneNotify事件的解决办法
由于项目需要用到Xtreme ToolkitPro 2008 Vol 2 (12.1.1)中的Pane,即类似IDE里的面板。看了套件自带的DialogPanes实例,于是自己建立一个对话框的工程进行测试,但发现就是创建不出来。开发环境:WindowsXP + VC6 + Xtreme ToolkitPro 2008 Vol 2 (12.1.1)出现问题: 在对话框的OnI转载 2012-11-28 09:46:29 · 1340 阅读 · 0 评论 -
AutoCAD点排序(x坐标从小到大,y坐标从小到大)
'PList是一个点坐标的一维数组,按地址传递'点排序(x坐标从小到大,y坐标从小到大)Function DianPaiXu3(ByRef PList() As Variant) Dim I As Long I = UBound(PList) Dim Pmin As Variant Dim Temp As Double Dim J As L转载 2012-11-06 17:41:01 · 4348 阅读 · 0 评论 -
运用C#编程通过OPC方式实现PC机与西门子PLC通讯 --异步通讯篇
在上一次发表的主要讲的是同步通讯,本文将主要讲解如何编程实现异步通讯,通过讲解你也将会知道同步通讯与异步通讯的区别,以及在什么情况下使用异步通讯。1、 配置OPC服务器 对于服务器的配置与同步通讯的配置一样,这里不需再讲解,若有不清楚的,可以参阅之前发布的2、 OPC编程 变量组、项的命名规则与同步通讯的一样,这里不再描叙,下面主要就开发一个异步通讯类 AsynServer来讲转载 2014-11-05 22:05:19 · 20002 阅读 · 3 评论