内部控制是指,做了某些操作后产生某些效果,但是Windows系统本身不提供这样的消息,应此不得不自定义.比如父窗口改变了字体,那么所有子窗口也都应该改变字体,至少也得通知一下它们,让子控件自己决定是否响应以及怎么响应(替代了虚函数的作用,但是消息更加干净利落,愿不愿意以及怎么做完全由对方决定),但是Windows不提供这样的消息,于是自定义消息CM_PARENTFONTCHANGED闪亮登场.VCL当然也可以定义一个函数,然后直接去执行这个函数达到目的,但是参数的个数以及类型就成了问题,处理函数…
前言 在逆向算法扫描插件时, 遇到一个windows消息值在msdn中没有定义. 去查资料, 有个老外将全部windows消息值和消息名称定义都码好了:) 写个测试程序, 封装了一个接口, 从消息值得到消息名称. 工程下载点 srcShowMsgName.zip 记录 // ShowMsgName.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <…
1:每个析构函数只会清理自己的成员(成员函数前没有virtual).2:可能是基类的指针指向派生类的对象,当析构一个指向派生类的成员的基类指针,这时程序不知道这么办,可能会造成内存的泄露,因此此时基类的析构函数要定义为虚函数:基类指针可以指向派生类的对象(多态),如果删除该指针delete[]p,就会调用该指针指向的派生类的析构函数,而派生类的对象又会自动调基类的成员函数,这样就会把派生类的对象释放,如果基类的析构函数没有定义成虚函数,则编译器实现的静态绑定,在删除基类的指针,只会释放基类的析构…
摘要:本文是开源IaaS软件ZStack的深度试用报告,分别从部署.架构和网络三个层面分享作者的试用体验,并与OpenStack进行简单的对比,文章最后也对ZStack的改进方向提出了自己的思考.(转载) [编者按]针对采用OpenStack部署云平台的复杂性,CSDN此前介绍过的ZStack是另外一种解决方案.本文是ZStack的深度试用报告,分别从部署.架构和网络三个层面介绍作者的试用体验,并与OpenStack进行简单对比,文章最后也对ZStack的改进方向提出了思考.以下为全文内容: “…
注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现这项工作和我的职业规划不符,于是,裸辞,从北京杀到上海,经历了一段找工作的艰辛,并顺利进入一家自己心仪的公司,这篇文章是深夜失眠时所写,倾诉的欲望难能可贵,风格可能偏文艺,行文略长,希望能给一些朋友一点启示,一点分享,一点鼓励,无它,轻喷. 在临下火车的时候,我瞥了一眼站台上的时钟,四点一刻,凌晨,…
WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设计思路也没摆脱MFC的影响,实际上用泛型做UI Framework也只能算是一次行为艺术,这个思路下继续发展就会变得没法用了,比如 代码过于复杂,编译太慢,出错不好调试等问题难以解决.而且封装得也不完全,还是随处可见 HWND HDC之类的东西.用途主要是写一些很小的程序,或者作为其他UI框架的后端实现部分,比如我写过一个小框架用来做安装卸载程序,非常小,其中创建管理窗口部分是用WTL的. MFC是更高级点的Wi…
VCL设计方法概论 1. 把Delphi对象改造成一个Windows窗口,主要是要设置Handle和回调函数.在创建一个Windows窗口后,将其句柄赋值给Delphi对象的属性,这个并不难,相当于从此以后这个Delphi控件(或称内存对象)代表了这个Windows窗口,准确的说是包含了这个Windows窗口.需要指出的是,创建Windows窗口时的许多参数,就是由Delphi对象的属性提供的,所以创建Windows窗口这个动作,只是Delphi对象的一个中间过程而已,并不是必须的.2. 回调函…
define的定义方式 无参一般形式:#define 标认符 字符串                     比如:#define COUTD "%d\n" 带参一般形式:#define 宏名(形参表) 字符串             比如:#define M2(a,b) ((a>b)?a:b) #include <stdio.h> /*宏定义的注意事项(1)不建议过多的使用宏定义来处理运算,原因是运算符表达式的优先级很容易被搞混,代码优化困难*/ /*预处理在win…
宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多.但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加.如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身可能并不漂亮优雅XD).但是因为宏定义对于很多人来说,并不像业务逻辑那样是每天会接触的东西.即使是能偶尔使…
(转载)http://www.blogjava.net/fhtdy2004/archive/2009/05/30/278971.html C++中将构造函数或析构函数定义为private 很多情况下要求当前的程序中只有一个object.例如一个程序只有一个和数据库的连接,只有一个鼠标的object.通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么?      当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这…
在介绍C++的常前,先看下下面的代码. for (int i = 0; i < 512; ++i) { …; } 512是什么,它具有什么含义?在代码中若直接使用类似512这些“魔数”(magic number),这些数字的具体含义就不能体现出来.另外,假如程序中多处包含512这个数,随着时间的推移,发现有些512需要更改为1024,有些512需要保持不变.这种情况下,程序员必须小心谨慎地去一个一个地查找程序中所有的512,并保证更改的数字不会出错——使用“魔数”会导致难以维护的问题. 为了解决…
在windows程序中,消息是一个重要的概念,最常见的消息一般都是以WM_开头,WM就是window message,窗口消息的缩写,通过处理标准的windows消息,我们可以改变窗口的外观,如使用WM_ERASEBKGND消息可以改变窗口默认的窗口背景,窗口每次需要绘制窗口的背景的时候,就会发送一次这个消息,如果我们处理这个消息,我们就可以绘制我们自己的特性化的背景,如果不处理,默认窗口过程就会处理,绘制背景.通过处理标准的windows消息,我们可以对用户的输入做出响应,如WM_LBUTTO…
我为了移动一个无标题栏的窗体,使用了WM_NCHITTEST消息,这个消息大概如下: 通常,我们拖动对话框窗口的标题栏来移动窗口,但有时候,我们想通过鼠标在客户区上拖动来移动窗口. 一个容易想到的方案是,处理鼠标消息WM_LBUTTONDOWN和WM_LBUTTONUP.在OnLButtonUp函数中计算鼠标位置的变化,调用MoveWindow实现窗口的移动. 注意,拖动标题栏移动窗口的时候,会出现一个矩形框,它提示了窗口移动的当前位置.当鼠标左键放开的时候,窗口就移动到矩形框所在位置.而我们的…
转自:http://www.blogjava.net/fhtdy2004/archive/2009/05/30/278971.html 很多情况下要求当前的程序中只有一个object.例如一个程序只有一个和数据库的连接,只有一个鼠标的object.通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么? (1)构造函数定义private      当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部…
众所周知,C语言一开始只有#define,C程序员用#define定义符号常量.但后来ANSI C加入了const限定符,而const应该比#define更好,为什么现在的C程序员还在大量使用#define来定义常量呢? 这并不是我没有根据地乱说的.这样的例子有很多,例如<limits.h>,例如Windows API,例如OpenGL-- <limits.h>是C标准头文件,发明C语言的人难道不知道const吗? Windows是Microsoft开发的,难道Microsoft的…
CREATE DATABASE 句法 CREATE DATABASE [IF NOT EXISTS] db_name 数据库.表.索引.列和别名 中被给出. 如果数据库已经存在,并且你没有指定 IF NOT EXISTS,这时会产生一个错误. 在 MySQL 中,数据库以包含数据库表对应文件的目录实现的.因为数据库在初始创建时没有表,所以 CREATE DATABASE 语句只在 MySQL 数据目录下创建一个目录. 你也可以使用 mysqladmin 创建一个数据库.查看章节 4.8 MySQ…
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.[1] 中文名 java虚拟机 外文名 Java Virtual Machine 目录 1定义 2简介 3特点 4使用主体 5安装方法 6数据类型 7规格描述 体系结构 运行过程 10参数说明…
今天面试被问到了这个单例模式常用到的技术手段,下面进行分析: 很多情况下要求当前的程序中只有一个object.例如一个程序只有一个和数据库的连接,只有一个鼠标的object.通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么? 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访问私有成员,所以这将导…
现象:1,RTOS  使用时 系统卡启动文件               B       .处. 原因分析:该种情况是由于定义开启了中断,但是未开启中断处理服务.程序执行到中断响应式无对应的程序响应 解决办法: 分析启动头文件,未针对RTOS特别定义中断 分析成分徐程序中开启动了 串口1中断但未能查找到对应的USART1_IRQHandler中断服务程序. 但在RTOS的串口使用中,定义了 vUARTInterruptHandler,因此映射该中断即可. 在RTOS配置中,添加 #define…
目的:为了保证包含的内容只被程序(include) 和编译了一次.判断预处理器常量是否已被定义. 预编译将所有头文件(#include"XXX.h")用头文件中的内容来替换,头文件中的内容都已经包含到需要他们的.cpp 中.最后生成.exe文件是由编译和链接两步完成的.编译时源代码生成obj 二进制目标文件的过程,由于编译时独立的,所以在单元里可以有重名的函数.如x.cpp中有void a(), b.cpp中也有 void a(); 编译过程中,只要声明的东西就能使用,不需要定义,声明…
转载请注明:@小五义:http://www.cnblogs/xiaowuyi 一.包 包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”.其主要由“目的IP地址”.“源IP地址”.“净载数据”等部分构成,包括包头和包体,包头是固定长度,包体的长度不定,各字段长度固定,双方的请求数据包和应答数据包的包头结构是一致的,不同的是包体的定义. 数据包的结构与我们平常写信非常类似,目的IP地址是说明这个数据包是要发给谁的,相当于收信人地址:源IP地址是说明这个数据包是发自哪里的,…
经常遇到编译socket程序的时候生成几百个错误 以下是出错后的错误信息: >c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : warning C4005: “AF_IPX”: 宏重定义 > c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“AF_IPX”的前一个定义 >c:\program files\micro…
架构的定义 先来看看软件架构的普遍定义吧. 一个程序和计算系统软件体系结构是指系统的一个或多个结构.结构中包括软件的构建,构建的外部可见属性以及它们之间的相互关系. 体系结构并非可运行软件.确切的说,它是一种表达,使软件工程师能够: 1.分析设计在满足规定需求方面的有效性. 2.在设计变更相对容易的阶段,考虑体系结构可能的选择方案. 3.降低与软件构造相关联的风险. 软件架构的生命周期 软件开发有其生命周期,它应该是:   而软件架构也有着其生命周期,它又是怎么样的呢?   软件架构的重要性 为…
---恢复内容开始--- JQuery $未定义 转载▼   jquery是Yii集成的,利用jquery写的代码$(document).ready(function(){// 操作列表$('.operate').mouseover(function() {$('#operate-'+$(this).attr('key')).show();}).mouseout(function() {$('#operate-'+$(this).attr('key')).hide();}); $('.toggl…
http://www.cnblogs.com/railgunman/archive/2010/12/10/1902524.html#2868236 说到VCL中的消息处理就不能不提到TApplication,Windows会为每一个当前运行的程序建立一个消息队列,用来完成用户与程序的交互,正是通过Application完成了对Windows消息的集中处理! 首先通过Application.Run进入消息循环进行消息的处理,其中调用了HandleMessage. procedure TApplic…
Javascript在互联网上名声很臭,但你又很难再找到一个像它这样如此动态.如此被广泛使用.如此根植于我们的生活中的另外一种语言.它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西是动态语言的概念是偏偏使用了高标准的静态数据类型.其实,你和Javascript都站错了立场,而现在,你让Javascript很生气.这里有五个原因能说明你的Javascript技术很烂. 1.你没有使用命名空间 是否还记得在大学里老师告诉你不要在家庭作业里使用全局变量?Javascript里的全局…
我们的系统使用了ibm mq,用户用来向国家局上报文件和接收文件,前几天用户说上报一直不成功.由于 开发这块程序的人已经辞职了,我觉定在我的机器部署一套,研究一下.我的思路: 在我的机器上安装mq,建立两个队列,一个用来接收,一个用来发送;在另外一台机器上,发布应用程序,通 过java client向我的机器的队列发送消息和接收消息. mq安装成功,队列管理器.队列.通道也都建起来了,用mq自带的api检测程序检测也成功了. 接下来,在另外一台机器上通过程序发送消息,结果就是不行,总是报原因码是…
在原子的串口程序前加了几个数组定义,加了个对数组处理的函数,出现了HardFault_Handler的错误,不知道怎么解决!!! 因为局部变量是存放在栈区的,而全局变量在全局区(静态区),如果栈区较小,会产生溢出. 修改启动代码 Stack_Size      EQU   0x00000800 对 stack size 进行设定太小. 栈不能开的太大,除了变量需要,调用的函数参数也需要压栈. STM32出现HardFault_Handler故障的原因主要有两个方面: (1)内存溢出或者访问越界.…
1.VCL 概貌 先看一下VCL类图的主要分支,如图4.1所示.在图中可以看到,TObject是VCL的祖先类,这也是Object Pascal语言所规定的.但实际上,TObject以及TObject声明所在的system.pas整个单元,包括在“编译器魔法”话题中提到的_ClassCreate等函数,都是编译器内置支持的.因此,无法修改.删除system.pas中的任何东西,也无法将system.pas加入你的project,否则会得到“Identifier redeclared ‘syste…
使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 工厂方式 原始的方式 因为对象的属性可以在对象创建后动态定义,所有许多开发者都在 JavaScript 最初引入时编写类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() {…