代码改变世界

随笔分类 - I.C/C++

使用文件映射和信号量来进程间通信

2014-05-22 18:57 by Clingingboy, 565 阅读, 收藏, 编辑
摘要: 思路: 使用文件映射来共享进程间数据 每个进程都有2个线程在循环监听数据的发送和接收 数据的发送和接收都有一个信号量来同步信息 通信的两个进程需要知道两者信号量的名字 发送数据的时候,释放发送的信号量,将数据写入文件映射,并释放要通信进程接收数据的信号量 对方进行等待接收数据的信号量,并接收数据 阅读全文

c++智能指针

2013-12-02 23:11 by Clingingboy, 563 阅读, 收藏, 编辑
摘要: 跟comptr类似 明确定义AddRef和Release,然后定义与comptr类似的一个辅助类. 这里有2种方式 1.Release的时候引用计数为0的时候删除对象 2.定义一个管理类RefCountedMgr,把RefCounted都添加到其中,Release引用计数为0时,不删除对象,而是缓存起来以便重新使用,RefCountedMgr析构时删除对象 阅读全文

GUI 快捷键的实现思路

2013-11-29 13:50 by Clingingboy, 714 阅读, 收藏, 编辑
摘要: 思路: 前提快捷键操作不可重复,即一个快捷键对应一个控件的动作 一个窗体保持一份快捷键的map映射 在相应的消息中获取快捷键列表如键盘消息 在控件类对象中定义一个默认的响应行为,比如Button按了Enter键 当子控件隐藏,父控件关系发生变化时则重新设置快捷键 阅读全文

Menu实现逻辑

2013-11-21 22:20 by Clingingboy, 366 阅读, 收藏, 编辑
摘要: 一.前奏 创建一个WS_EX_NOACTIVATE的窗体 创建窗体后注册Hook消息(鼠标在非Menu区域点击时关闭menu,接收键盘消息用于快捷键,接WM_SETFOCUS消息,当打开新窗体时关闭menu) 接LButtonClick(在LButtonUp触发)消息,按下按钮后关闭menu 二.Menu快捷键逻辑 采纳从Enter键之后的快捷键+自定义... 阅读全文

控件保持多种绘图状态的做法

2013-11-21 15:03 by Clingingboy, 325 阅读, 收藏, 编辑
摘要: 基本思路 #pragma once#include struct IPainter{ void Paint() {}};class Element{ void SetPainterState(int dwState, IPainter* pPainter) { m_mapStatePainter[dwState]=pPainter; if(dw... 阅读全文

2个函数宏技巧

2013-11-21 13:56 by Clingingboy, 540 阅读, 收藏, 编辑
摘要: 1.用宏调用对象函数 #define FOR_EACH_OBSERVER(ObserverType, observer_list, func) \ do{ \ CObserverListBase::Iterator it(observer_list); \ ObserverType* obs; \ while((obs=it.GetNext()) != ... 阅读全文

绘图 Painter转接口封装的方式

2013-11-21 11:52 by Clingingboy, 335 阅读, 收藏, 编辑
摘要: 记录下思想 适用于业务逻辑相对单纯的一些画法,比如画背景(颜色,背景,边框等) 一个Draw方法中如果绘制比较复杂的话,就会导致代码混乱,而不灵活,每次需求更改就得重新画过,可重用性差. 以接口的方式可以很好的重复利用功能,不必因为需求的更改而大量变更代码 chrome的方法定义如下 // Painting ----------------------------------... 阅读全文

c++以代理的方式来实现接口化编程

2013-11-05 14:13 by Clingingboy, 985 阅读, 收藏, 编辑
摘要: 假如你项目代码本身已经实现了很多的实体类,但并未采用接口,可以考虑以这种方式来实现接口化编程 struct ITest{ virtual void Test()=0;};class CTest{public: void Test() {}};class CTestProxy:public ITest{ void Test() { m_object... 阅读全文

c++对象工厂

2013-11-04 23:07 by Clingingboy, 2137 阅读, 收藏, 编辑
摘要: 一.简单工厂 #pragma oncestruct IObjectA{ virtual void Test1()=0;};class ObjectA:public IObjectA{public: virtual void Test1(){}};struct IObjectB{ virtual void Test2()=0;};class ObjectB:public I... 阅读全文

使用模板来解决接口继承问题

2013-11-04 20:14 by Clingingboy, 461 阅读, 收藏, 编辑
摘要: 一.定义2个有继承关系的接口 struct IA{ virtual void Test1()=0;};struct IB:public IA{ virtual void Test2()=0;};二.定义2个类来实现class A:public IA{ virtual void Test1() {}};class B:public IB{public: virtual... 阅读全文

c++内存管理的一些资料

2013-10-29 19:04 by Clingingboy, 334 阅读, 收藏, 编辑
摘要: C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区 如何动态调用DLL中的导出类 在dll中导出类,并结合继承带来的问题 如何更好的架构一个界面库,欢迎大家一起讨论 pimpl 【C++程序设计技巧】Pimpl机制 vec... 阅读全文

Uniscribe相关文章

2013-10-18 20:12 by Clingingboy, 270 阅读, 收藏, 编辑
摘要: 相关资料很少http://msdn.microsoft.com/en-us/library/windows/desktop/dd374127(v=vs.85).aspxhttp://www.cnblogs.com/geniusvczh/archive/2012/11/06/2757868.htmlhttp://blog.csdn.net/jianlizhao66/article/details/1480457http://maxradi.us/documents/uniscribe 阅读全文

chrome ui源码剖析-ViewProp

2013-08-12 00:27 by Clingingboy, 622 阅读, 收藏, 编辑
摘要: 先熟悉set的find原理 http://www.cnblogs.com/Clingingboy/p/3252136.html 这个类改造下,还是非常实用的,可以对于不同的类型做数据存储 一.ViewProp // Copyright (c) 2011 The Chromium Authors. All rights reserved.// Use of this source co... 阅读全文

C++ STL set::find的用法

2013-08-12 00:02 by Clingingboy, 16694 阅读, 收藏, 编辑
摘要: 参考: http://blog.csdn.net/lihao21/article/details/6302196 /* class for function predicate * - operator() returns whether a person is less than another person */ class PersonSortCriterion {... 阅读全文

c++ placement new概念

2013-05-06 15:03 by Clingingboy, 5160 阅读, 收藏, 编辑
摘要: 参考:http://www.cnblogs.com/Clingingboy/archive/2013/04/26/3044910.html 转:http://bbs.chinaunix.net/thread-1015707-1-1.html 问题:什么是“定位放置new(placement new)”,为什么要用它 ? 定位放置new(placement new)有很多作用。最简单的... 阅读全文

内存对齐问题

2013-04-26 15:14 by Clingingboy, 1367 阅读, 收藏, 编辑
摘要: 刚开始是为了看这篇文章: Chrome学习之LazyInstance 参考: 【内存对齐(一)】#pragma pack的用法及大小的计算 【内存对齐(二)】__declspec( align(#) )的用法和大小计算 下面拷贝一份chrome里面的一份代码 其提供一种方式,预先在栈上分配内存,然后来控制对象的创建和销毁流程 内存大小必须是2的倍数 // Copyrig... 阅读全文

c++中的pod类型

2013-04-26 11:28 by Clingingboy, 558 阅读, 收藏, 编辑
摘要: 转:http://hi.baidu.com/cindyylxx/item/8a93f409e5a4d9e1ff240da4 最早看到POD(plain old data)类型,是在imperfect c++里。我觉得这是一本把我带到c++世界里的一本很重要的书。 书里是这样解释POD的: 1、 所有标量类型(基本类型和指针类型)、POD结构类型、POD联合类型、以及这几种类型的数组... 阅读全文

c++ template(10)类型函数

2013-04-25 14:14 by Clingingboy, 1241 阅读, 收藏, 编辑
摘要: 一.sizeof模板化 #include <stddef.h>#include <iostream>template <typename T>class TypeSize { public: static size_t const value = sizeof(T);};int main(){ std::cout << "TypeSize<int>::value = " ... 阅读全文

c++智能指针的一些文章

2013-04-23 11:58 by Clingingboy, 313 阅读, 收藏, 编辑
摘要: auto_ptr解析 Boost智能指针——shared_ptr Boost智能指针——scoped_ptr Boost智能指针——weak_ptr 阅读全文

c++ template(9)trait和Policy

2013-03-29 11:59 by Clingingboy, 1560 阅读, 收藏, 编辑
摘要: 先看一个Demo: 累加序列: template <typename T> inline T accum (T const* beg, T const* end) { T total = T(); // assume T() actually creates a zero value while (beg != end) { total += *... 阅读全文
1 2 3 4 5 ··· 8 下一页