自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

原创 error C2872: “CPoint”: 不明确的符号

在duilib中使用CImage类时,其包含了#include 文件,文件中使用了CPoint,CSize等类由于duilib本身也有自己的CPoint,CSize等类,这会导致 error C2872: “CPoint”: 不明确的符号 等问题vs编译器编译时会报如下错误:1>c:\program files (x86)\microsoft visual studio 1

2017-07-24 14:11:23 7857

原创 教你如何用duilib实现控件可拖动,可拖拽

要实现的效果:        鼠标点击控件(自绘控件,可继承任意控件类,下文将给出示例),并且进行拖拽,会有一个半透明黑色阴影来表示当前拖动的位置。当松开鼠标,控件重新绘制在鼠标松开的位置。拖拽功能的实现代码主要在DoEvent函数和DoPostPaint函数中完成的。实现步骤:     1、 继承需要的控件并重写DoEvent函数,在UIEVENT_BUTTOND

2017-07-21 14:58:02 4260 3

转载 map的详细使用

一. 声明二. 插入操作2.1 使用[ ]进行单个插入2.1 使用insert进行单个和多个插入三. 取值四. 容量查询五. 迭代器六. 删除交换6.1 删除6.2 交换七. 顺序比较八. 查找九. 操作符C++中map提供的是一种键值对容器,...

2018-07-19 17:07:51 303 1

原创 boost::regex的使用详解

Regex 用法详解2008年03月15日 星期六 14:34Regex头文件: “boost/regex.hpp”正则表达式被封装为一个类型 basic_regex的对象。我们将在下一节更深入地讨论正则表达式如何被编译和分析,这里我们首先粗略地看看ba...

2018-07-13 11:43:35 12413 3

原创 获取exe所在文件的路径

CString LG_GetFilePathName() { wchar_t szPath[MAX_PATH + 1] = { 0 }; ::GetModuleFileName(NULL, szPath, MAX_PATH + 1); *_tcsrchr(szPath, '\\') = 0; CString strPath(szPath); return strPath

2017-11-03 16:59:39 1206

原创 wstring转string,string转wstring

wstring转string // 使用CRT库的wcstombs()函数将wstring转string,平台无关,需设定locale,这种方法可以兼容中文 string WString2String(wstring& ws) { string curLocale = setlocale(LC_ALL, NULL); setlocale(LC_ALL, "chs"); con

2017-11-01 09:36:09 961

原创 CString转string、string转CString

CString转string // CString to String string CString2String(CString strIn) { int nSize = ::WideCharToMultiByte(CP_ACP, 0, strIn, -1, NULL, 0, NULL, 0); char* pChar = (char*)malloc((nSize + 1) *

2017-11-01 09:27:15 699

原创 获取电脑的MAC地址

#pragma comment(lib,"Netapi32.lib") //网卡结构 typedef struct tagASTAT { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30]; }ASTAT, *LPASTAT; //存储网卡的MAC地址的结构 typedef struct tagMAC_A

2017-11-01 09:14:25 1066

原创 windows进程间的通信

主要通过WM_COPYDATA消息接收其他进程发来的消息1,发送端进程代码void SendMessageToOtherWnd(char* pData) //参数可以是字符串,数组,结构体等{ if (NULL == pData || strlen(pData) <= 0) return -1; CWnd *pWnd = NULL; pWnd = CWnd:

2017-10-13 10:36:24 168

原创 观察者模式

程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。要求:              1.要有联动性,老鼠和主人的行为是被动的。            2.考虑可扩展性,猫的叫声可能引起其他联动效应。要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。       2. 对老鼠和主人进行抽象class Observer{public

2017-10-11 20:32:23 210

原创 获取一个ip地址所经过的所有网关

#include #include #pragma comment(lib,"iphlpapi.lib")vector GetAllTraceRouterIpAddr(string strTraceIp)//输入当前ip地址{ WSADATA wsa; vector vecRouterIpAddr; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0

2017-09-30 15:25:29 2846

原创 如何判断IP地址是否合法

如何判断一个IP地址是否合法,以及如何判断一个IP地址是否在给定的IP地址范围内,废话不多说,上代码判断IP地址是否合法:bool isValidIP(char *ip){ if (ip == NULL) return false; char temp[4]; int count = 0; while (true) { int index = 0;

2017-09-22 09:53:15 9072

原创 C++如何读写注册表

1.如何向注册表中写值//写入注册表为DWORD类型bool SetRegValue(LPCTSTR lpSubKey, LPCTSTR lpValueName, DWORD dwValueKey){ bool bRet = false; HKEY hKey; DWORD dwDispoistion = REG_OPENED_EXISTING_KEY; if (ERROR_SUC

2017-09-14 20:21:52 1668

原创 boost库中线程的使用

线程一直被用来当并发地执行多个函数,开发人员现在不得不仔细地构建应用来支持这种并发。 多线程编程知识也因此在多核系统时代变得越来越重要。下面将介绍C++ Boost库 Boost.Thread,它可以开发独立于平台的多线程应用程序。在这个库最重要的一个类就是 boost::thread,它是在 boost/thread.hpp 里定义的,用来创建一个新线程。下面的示

2017-08-31 11:23:29 775 1

原创 static关键字的作用以及静态成员函数与非静态成员函数的区别

静态成员函数与非静态成员函数的区别:静态成员可以互相访问,非静态成员函数可以访问静态成员函数,静态成员函数不能访问非静态成员函数this指针:this指针属于类的一个实例,不属于某个类;由于静态成员函数并不属于某一个对象,属于类;由于它没有this指针,不能用this调用静态成员函数,也决定了静态成员函数不能访问本类中的非静态成员

2017-08-24 20:35:51 385

原创 C++中extern关键字的使用

在编写复杂程序时,会有许多文件,需要有在文件中分享代码的方法,例如,在一个文件中代码可能需要另一个文件中定义的变量,说白了也就是(分离式编译)。为了支持分离式编译,c++支持了将变量的定义和声明分开,即使用extern关键字,只对变量进行声明,如extern int a,变量a只声明未定义,在一个.h文件中声明一个全局变量,在其.cpp文件中定义此变量,在另一个文件中引用此变量,只需在.cpp

2017-08-18 14:53:08 254

原创 什么是线程同步与互斥,使用boost库实现线程同步

使用boost库实现线程的同步,下文主要讲解如何使用mutex,即互斥量来实现线程间的同步。在使用boost库实现线程同步之前,我们先了解一下下面的概念:对于互斥可以这样理解,线程A和线程B互斥访问某个资源则它们之间就会产个顺序问题——要么线程A等待线程B操作完毕,要么线程B等待线程操作完毕,这其实就是线程的同步了。因此同步包括互斥,互斥其实是一种特殊的同步。多

2017-08-18 09:47:00 423

原创 C++中指针和引用的区别

引用必须初始化,指针不必; 删除空指针是无害的,不能删除引用; 内存分配上,程序为指针变量分配内存区域,而引用不分配内存;(1)引用访问一个变量是直接访问, 而指针是间接访问; (2)引用是一个变量的别名,本身不单独分配自己的内存空间, 而指针有自己的内存空间,是实体 (3)引用在开始就绑定到了一个内存空间(开始必须赋初值),所有他只是该内存空间的别名,不能改成其他的;当

2017-08-09 17:16:43 257

原创 笔试题8——二进制中1的个数

方法1:int BitCount(unsigned int n){ int iCount = 0; while (n > 0) { if ((n & 1) == 1) ++iCount; n >>= 1; //n右移一位 } return iCount;}方法2:int BitCount(unsigned int n){

2017-08-08 20:46:12 243

原创 笔试题7——替换数组中的空格

给定一数组,将 空格 替换成  %20 ,要求时间复杂度为O(n)void ReplaceBlank(char string[], int length){ if (string == NULL && length <= 0) return; int oldlength = 0; int NumOfBlank = 0; int i = 0; while (string[

2017-08-08 09:54:34 356

原创 笔试题6——数组中2个出现一次的数(其他2次)

void FindTwoDiff(int a[], int n, int N1, int N2) { int i, j, temp; temp = 0; for (i = 0; i < n; i++) temp ^= a[i]; //此时temp为2个不同数的异或值 //找第一个为1的位 for (j = 0; j < sizeof(int) * 8; j

2017-08-07 21:01:26 231

原创 文件操作——将数据导出到Excel

将数据导出到Excel(.csv)表格中#include #include using namespace std;void CDuiFrameWnd::TestFileOut(){ OPENFILENAME ofn = { 0 }; ofn.lStructSize = sizeof(OPENFILENAME); TCHAR strFileName[MAX_PATH]

2017-08-02 16:38:06 917

原创 笔试题5——数组中超过一半的数

在O(n)的时间内找出数组中超过一半的数,如:3 4 2 3 5 3 3,数字3超过半数bool g_b = false; //全局变量用来判断是不是数组中的数int MoreThanHalfNum(int a[], int len){ bool b = false; if (a == NULL || len <= 0) { g_b = true; ret

2017-08-01 09:50:26 252

原创 虚函数的作用

在某基类中申明为virtual的成员函数,并在一个或多个派生类中被重新定义,通过指向派生类的指针或引用,访问派生类中同名覆盖的成员函数。简单的说:那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性面试1:除了指针能引起多态,还有什么能引起多态?这是面试的时候常问题目,引起多态方式有两种 :指针和引用面试2:重载,重写,覆盖

2017-07-28 15:09:19 1049

原创 笔试题4——数组中第二大的数

求数组中第二大的数,要求时间复杂度为O(n),即遍历一遍const int MinN = -32767;int FindSecMax(int data[], int iCount){ int iMaxNum = data[0]; int iSecMax = MinN; for (int i = 1; i < iCount; i++) { if (data[i] > iM

2017-07-27 16:58:55 347

原创 笔试题3——给定一个整形数组,使得奇数在偶数前面

这道题是厦门大学某一年的考研题,也是一道笔试时经常考的题目这道题类似于快速排序 第一趟排玩的结果,将数组分成前后两部分;我们用这种相似的方法解这道算法题void OddBeforeEven(int a[], int iLength){ if (a == NULL || iLength <= 1) return; int iStart = 0; int iEn

2017-07-25 21:11:18 525

原创 笔试题2——判断链表是否有环,若有则返回环的第一个交点

链表是常有的数据结构,也是笔试、面试常客如何判断一个链表是否有环;若有环,则环的第一个交点;找链表的倒数第k个节点;都是快慢指针的应用;下面给出这三个的实现方法(1)如何判断一个链表是否有环bool IsListR(LinkList* head){ LinkList*pS = head; //慢指针 LinkList*pF = head

2017-07-25 10:21:35 355

原创 文件的相对路径和绝对路径,加载资源文件失败

(1)文件的绝对路径:是从盘符开始的路径,形如              D:\vs2015项目\images\123.png(2)相对路径:是从当前路径开始的路径,假如当前路径为D:\vs2015项目要描述上述路径,只需将代码中的路径参数(一般string类型)传入images\123.png   即可实际上,严格的相对路径写法应为.\imag

2017-07-24 17:07:49 2920

原创 const关键字的用法

被const修饰的成员变量有以下几个特点:1、只能被读2,、必须初始化3、在另一文件中引用const常量              extern const int i;4,、能够进行类型安全检查5、只分配一次内存(和define关键字修饰的变量的区别)             const char s[] = "abc"   //只分配一次       不像def

2017-07-21 20:58:21 241

原创 智力题——桌子上轮流放置硬币怎样才能赢得游戏的胜利

给一张对称的桌子,和足够的硬币,将硬币放在桌子上(硬币不能叠加)!你和对手轮流放置硬币于桌面上,谁的硬币先掉下桌子,谁就输了!那么如果让你先放置硬币怎样才能稳赢?这道智力题是我在甲骨文(oracle)面试的时候,面试官提的一道智力题。当时面试的时候没有想出来,后来回去的路上,楼主思考了一番,还是想出来了,不过此时心情也没那么美好了- -大家先自己想想怎样放置才能稳操

2017-07-20 20:43:21 5181 1

原创 笔试题1——找到字符串中第一个只出现一次的那个字符

哈希表的应用,此题面试官主要考察的字符查找的时间效率,算法的时间复杂度为O(n),那么恭喜你通过此次笔试#define tableSize 256 //哈希表的大小,因为char占一个字节,最多能表示256个字符。char FindFirstCharAppearOnce(char* pString){ if (NULL == pString) //输入不合法

2017-07-20 15:24:09 3270

Duilib列表控件ListEx扩展 支持按钮等各种控件

Duilib列表控件ListEx扩展demo,支持按钮等各种控件;duilib源码下载

2019-01-24

取色器 查看颜色的RGB工具

查看颜色的RGB工具,方便颜色定位,打开exe,拖动颜色区域至需要查看的目标,并显示当前的RGB颜色值,对于界面颜色选定回有帮助

2017-09-28

空空如也

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

TA关注的人

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