自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 收藏
  • 关注

原创 UE4

2019-02-07 17:47:55 222

原创 UE4

2019-02-07 17:40:38 392

原创 软件开发报价的计算方法 (转)

1.软件开发价格估算方法软件开发价格与工作量、商务成本、国家税收和企业利润等项有关。为了便于计算,给出一个计算公式:软件开发价格 = 开发工作量 × 开发费用/人·月1.1开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工作量 = 估算工作量经验值 × 风险系数 × 复用系数1.1.1估算工作量经验值(以A来表示)...

2019-01-23 17:45:00 730

原创 MFC- OnIdle空闲处理

MFC- OnIdle空闲处理 CWinApp::OnIdlevirtual BOOL OnIdle( LONG lCount );返回值:  如果要接收更多的空闲处理时间,则返回非零值;如果不需要更多的空闲时间则返回0。参数:  lCount 该参数是一个计数值,当应用程序的消息队列为空,OnIdle函数被调用时,该计数值就增加1。  每当一条新...

2019-01-06 11:46:00 435

原创 华为代码质量军规 (1) 数组访问,必须进行越界保护

https://blog.csdn.net/thecoldone/article/details/50759044 C++中数组作为形参传递给函数时把数组视为指针,并没有将数组的长度信息传递给函数,因而在函数中稍有不慎就会造成数组内存的越界访问。为了避免这个问题,下面根据书上给的内容做了一点总结和说明。数组形参的定义void func(int *) {/* ...*/}void...

2018-09-06 15:44:00 490 1

原创 WinSocket 编程

套接字套接字指通信双方在通信时所使用的通信点(Endpoint),通信的双方通过通信点来交换信息和数据。不同类型的通信会使用不同的类型通信点,比如对于电话通信而言,通信点就是电话号码和分机号码的组合,这时因为如果你想和朋友通话,就需要拨打你朋友的电话号码和分机号码。对于IP网络通信而言,通信点就是套接字,即两个进程在进行网络通信的时候,他们通过套接字来交换信息和数据。和电话通信类似,...

2018-08-01 21:20:00 3809

原创 【C/C++】链表的理解与使用

转载自:http://blog.csdn.NET/xubin341719/article/details/7091583/最近不是太忙,整理些东西,工作也许用得到。1,为什么要用到链表数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性。但数组也同样存在一些弊病。如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3...

2018-07-31 16:04:00 191

原创 单链表

单链表的结构有多种这里介绍的链表有头结点、有尾节点并且尾节点指向头结点 单链表的每个结点的地址存放在其直接前驱结点的指针域中。其中第一个结点没有前驱结点,因此需要一个头指针指向第一个节点,便于我们对整个链表进行操作;这里的单链表的最后一个节点的指针域存放的是头结点的地址。单链表不能随意存取,必要的时候我们可以通过已知结点的指针域不断遍历从而获取我们要的结点。  //构建...

2018-07-28 18:15:00 189

原创 C++ lambda表达式 (二)

#include <functional>#include <iostream>int main(){ using namespace std; int i = 3; int j = 5; // The following lambda expression captures i by value and // j by...

2018-07-22 18:51:00 357

原创 C++ lambda表达式 (一)

为什么要lambda函数匿名函数是许多编程语言都支持的概念,有函数体,没有函数名。1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值。正因为有这样的需求,c++引入了lambda 函数,你可以在你的源码中内联一个lambda函数,这就使得创建快速的,一次性的函数变得简单了。例如,你可以把lambda函数可在参数中传递给std::sort函数。#include ...

2018-07-14 21:16:00 4528

原创 C++11 volatile 类型

volatile作用: 作为指令关键字,确保本条指令不会受到编译器的优化而省略,而且要求每次直接读值。 定义:volatile int nTest;volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。...

2018-07-13 17:25:00 1431

原创 关于结构体内存对齐方式的总结(#pragma pack()和alignas())

最近闲来无事,翻阅msdn,在预编译指令中,翻阅到#pragma pack这个预处理指令,这个预处理指令为结构体内存对齐指令,偶然发现还有另外的内存对齐指令aligns(C++11),__declspec(align(#))(Microsoft专用),遂去探究两者之间的不同点。1、#pragma pack这个指令为预处理指令,所谓与处理指令执行在程序的预处理阶段,该指令对应着编译选项...

2018-07-13 16:33:00 2160

原创 C++ decltype类型说明符

1 基本语法decltype 类型说明符生成指定表达式的类型。在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。语法为:decltype( expression )编译器使用下列规则来确定expression 参数的类型。如果 expression 参数是标识符或类成员访问,则 decltype(expression) 是 expression 命名的实...

2018-07-13 14:21:00 207

原创 C++拷贝构造函数详解

一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include <iostream> using namespace std; class CExamp...

2018-07-12 16:57:00 122

原创 C++ 重载运算符和重载函数

C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。C++ 中...

2018-07-12 11:00:00 117

原创 C++ 数据抽象

数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD 播放器),但是您不知道它的内部实现细节,也就是说,您并不知道它是如何通过缆线接收信号,如何转换信号,并最终显示在屏...

2018-07-12 10:22:00 110

原创 C++ 接口(抽象类)

我觉得学完虚函数和存虚函数应该趁热看看接口是怎么实现的,因为怎么说,他们都是一个东西。接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:class ...

2018-07-12 09:05:00 175

原创 C++使用thread类多线程编程

 转自:C++使用thread类多线程编程C++11中引入了一个用于多线程操作的thread类,下面进行简单演示如何使用,以及如果进行多线程同步。thread简单示例#include <iostream> #include <thread> #include <Windows.h> using namespace s...

2018-07-11 17:51:00 152

原创 Google C++代码规范

http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/

2018-07-11 17:07:00 192

原创 从硬件到语言,详解C++的内存对齐(memory alignment)(一)

  作者:赵宗晟  出处:https://www.cnblogs.com/zhao-zongsheng/p/9099603.html很多写C/C++的人都知道“内存对齐”的概念以及规则,但不一定对他有很深入的了解。这篇文章试着从硬件到C++语言、更彻底地讲一下C++的内存对齐。什么是内存对齐(memory alignment)首先,什么是内存对齐(memory alignment)...

2018-07-11 16:53:00 791

原创 C++中的纯虚函数

---恢复内容开始---在C++中的一种函数申明被称之为:纯虚函数(pure virtual function).它的申明格式如下class CShape{public: virtual void Show()=0;};在什么情况下使用纯虚函数(pure vitrual function)?1,当想在基类中抽象出一个方法,且该基类只做能被继承,而不能被实例化;...

2018-07-11 14:56:00 681

原创 初步认识虚函数(三)

#include<iostream>using namespace std;class A{//虚函数示例代码2 public: virtual void fun(){cout<<"A::fun"<<endl;} virtual void fun2(){cout<<"A::fun2"<&a

2018-07-11 14:22:00 119

原创 初步认识虚函数(二)

 虚函数是如何做到的如果你没有看过《Inside The C++ Object Model》这本书,但又急切想知道,那你就应该从这里开始)虚函数是如何做到因对象的不同而调用其相应的函数的呢?现在我们就来剖析虚函数。我们先定义两个类class A{//虚函数示例代码 public: virtual void fun(){cout<<1<&l...

2018-07-11 09:36:00 96

原创 C++遍历目录+_finddata_t结构体用法

Struct _finddata_t是用来存储文件各种信息的结构体,使用这个结构体要引用的头文件为“ #include <io.h>”它的结构体定义如下:struct _finddata_t { unsigned attrib; time_t time_create; time_...

2018-07-10 22:03:00 2645

原创 初步认识虚函数(一)

首先,虚函数是这么定义的,简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。大家能看懂吗?反正我是看不懂所以就是这种让人看不懂的定义,导致我现在还不理解什么是虚函数.....最近面试频繁的被问到“...

2018-07-10 09:35:00 92

原创 gSOAP 使用WebServer心得


 关于正常怎么使用gSOAP的话,下面那篇博客已经讲得非常详细,我就不再赘述了https://www.cnblogs.com/dengpeng1004/p/6165751.html问题1:WCF server with basicHttpBinding use soap1.1, while gSoap generates client that uses so...

2018-07-09 11:55:00 370

原创 如何优雅的写UI——(6)内存泄漏


 控件讲了这么久,其实我的程序有两个Bug不知道大家有没有发现,这两个Bug都不会报错,对程序运行来说都没有阻碍,但是这种Bug对整个代码来说是一个很大的安全隐患。什么是内存泄漏内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。简单的说就是new完之后...

2018-07-09 10:11:00 242

原创 如何优雅的写UI——(5)选项卡功能实现


  先在我们的选项卡可以说能用了,每个标签页都能点进去,但是这还远远没到能用的地步,比如说你把窗口最大化后。立马就露出马脚了,所以这篇我们要先讲讲tabctrl的最基本的功能实现 改变选项卡大小上图的原因就是主窗口在改变的大小的时候没有通知选项卡让他跟着主窗口一起变,所以我们现在通知选项卡一下添加ON_WM_SIZE消息,实现函数void CtabV...

2018-07-07 16:18:00 1091

原创 如何优雅的写UI——(4)选项卡美化


 现在做出来的选项卡实在太丑的,咱们怎么把他弄得好看一点呢tabctrl是可以添加icon图标的,那派生与tabctrl的mfctabctrl肯定也能添加图标,他们两个添加图标的原理一样,但是还是有点不同首先给项目添加三个图标 然后在成员变量中添加ImageList对象,必须要添加在成员变量中,否则加载不出来图片。 CImageList m_im...

2018-07-07 14:51:00 4139 1

原创 《将博客搬至CSDN》

将博客搬至CSDN

2018-07-07 12:58:00 46

原创 变色字体


 CRect rect;    GetClientRect(hWnd, rect);    HDC hdc = GetDC(hWnd);    HDC memDC = CreateCompatibleDC(hdc);     BITMAPINFO bmi;    bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER...

2018-07-05 19:02:00 224

原创 如何优雅的写UI——(3)添加MFC选项卡


 窗体创建完成,接下来我们讲讲控件的使用首先在CFormView窗体下选项卡的成员变量,这里我选择MFC下的选项卡类库:CMFCTabCtrl class CtabView : public CFormView{ ...... ...... public: CMFCTabCtrl m_tab; ...

2018-07-05 13:47:00 2262 1

原创 如何优雅的写UI——(2)MFC下基于CFormView的文档视图程序


  在MFC中可以创建多种类型的窗口程序,如对话框程序、单文档结构程序(非文档/视图结构)、单文档(文档/视图结构)以及多文档视图结构程序等。在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对话框的程序不支持视图类,有些功能实现起来会麻烦许多。此时我们可以使用CFormView作为基类来创建单文档(非文档/视图结构)和单文档(文档/视图结构)的程序。一...

2018-07-05 08:23:00 971

原创 如何优雅的写UI——(1)MFC六大核心机制-程序初始化

很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下可以简单的写程序。本文开始就跟大家分享一位同行前辈写的MFC核心机制分析(稍作整理),语言朴实易懂,在读完此深入浅析的剖析系列后,相信留给大家的是对MFC运行机制的深入理解。       ...

2018-07-05 08:09:00 341

原创 C#如何调用非托管的C++Dll

C#如何调用非托管的C++Dll 现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞VC++开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在C#中使用C++开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管C++封装一个C++类以提供给C#使用。 比如,现在有一...

2018-07-04 18:05:00 143

原创 CList 点击表头排序 (3)两种排序的第二种

在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法CList 点击表头排序 (1)SortItems函数CList 点击表头排序 (2)两种排序方法中其中一种这种方法不在需要数据绑定,只要确定你点击的表头的第几列就行,过程与第一种是一样的,同样需要SortItems()方法,但是你可以把SetItemDate用在更加有用...

2018-07-04 13:57:00 170

原创 CList 点击表头排序 (2)两种排序方法中其中一种


 上一篇讲解SortItem()方法如何使用,虽然都是抄别人的但是就是想让大家有个大概的了解CList 点击表头排序 (1)SortItems函数点击表头排序基本思路都是1.首先响应HDN_ITEMCLICK 消息来获取点击表头的位置2.设置结构体来存储排序信息,结构体信息主要有三个 (1)CListCtrl的指针,(2)点击第几列的列数,(3)排序,主要以...

2018-07-04 13:44:00 355

原创 CList 点击表头排序 (1)SortItems函数

点击表头排序整体的思路都是去 CListCtrl类中的方法SortItems去实现CListCtrl::SortItems的原型是:BOOL SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData );第一个参数pfnCompare为回调函数,形式为:int CALLBACK CompareFunc(LPARAM lParam1, LPAR...

2018-07-04 13:21:00 696

原创 CListCtrl 隔行变色

响应消息ON_NOTIFY(NM_CUSTOMDRAW, ListCtrl的ID, OnNMCustomdrawList) 实现函数OnNMCustomdrawList void CFinishWellToFind::OnNMCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult){ NMLVCUSTOMDRAW* pLVCD = rei...

2018-07-04 13:12:00 669

原创 CreateThread给线程函数传递的参数

HANDLE WINAPI CreateThread( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, // 指向SECURITY_ATTRIBUTES 的指针,为新线程指定安全描述 __in SIZE_T dwStackSize, // 初始化线程堆栈尺寸 __in LPT...

2018-05-18 15:16:00 343

空空如也

空空如也

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

TA关注的人

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