wpcockroach

导航

2012年12月3日 #

Theron, a lightweight C++ concurrency library, 源码分析(二)

摘要: Framework classFramework类在Theron应该可以看作是一个中枢神经系统。他管理着它内部各个actor之间的交互。我们知道,Windows是基于消息的系统。因此,它定义了消息队列,以及处理消息的基本流程: 1: while (GetMessage(&msg, NULL, 0, 0)) 2: { 3: if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 4: { 5: TranslateMessage(&msg); 6: DispatchMes... 阅读全文

posted @ 2012-12-03 22:56 wpcockroach 阅读(1744) 评论(0) 推荐(0) 编辑

Theron, a lightweight C++ concurrency library, 源码分析(一)

摘要: Theron是一个基于Actor Model的轻量级C++并行库(Theron is a fast, portable, lightweight C++ concurrency library based on Actor Model)。在分析Theron源代码前,先简单说一说Actor Model到底是一个什么东西。Actor ModelActor Model是一种并发模型,详细的信息你可以在wiki上找到。如果你觉得英文比较难理解,也可以看看老赵的博客,他写了3篇关于Actor Model的博文(1,2,3)。可以说,看完这三篇文章,你应该能够对Actor Model建立一个直观的认识。我 阅读全文

posted @ 2012-12-03 22:43 wpcockroach 阅读(3500) 评论(0) 推荐(0) 编辑

2012年11月18日 #

Theron (C++ concurrency library) 读后感

摘要: 最近花了点时间看了下并行模型中的Actor Model。顺带看了Theron这个基于Actor模型的C++并行库。整理了第一手的读后感,可能有点乱。后续整理完了后,再发出来。读后感请猛击这里:http://sdrv.ms/T9LB2a 阅读全文

posted @ 2012-11-18 23:24 wpcockroach 阅读(1019) 评论(0) 推荐(0) 编辑

2012年9月28日 #

基于HWND的Win32 UI自动化

摘要: 做了好一阵子的UI自动化,今天来总结总结。先说比较简单一点的以HWND为基础的Win32 UI自动化。 很多人的UI自动化应该是从自动化HWND开始,总体来说入门比较简单,至少接触的都是Win32 API,而且可以不用接触COM相关的东西。说了那么久,进入正题。 UI自动化,至少要处理下面几样东西: 阅读全文

posted @ 2012-09-28 01:56 wpcockroach 阅读(2539) 评论(0) 推荐(0) 编辑

2012年7月19日 #

VC6工程转VC10可能会遇到的一些问题

摘要: 最近一个人把公司核心项目(基于MFC)从VC6转到了VC10(VC2010),遇到了很多的问题,这里把一些难搞定的问题简单说一下。 Error MIDL2025: syntax error : expecting a type specification near “ULONG_PTR”。这是一个比较难搞明白的问题,要看你对COM是否比较了解(?)。导致该问题的一个原因是你的工程中包含了一个从老... 阅读全文

posted @ 2012-07-19 00:17 wpcockroach 阅读(2670) 评论(0) 推荐(0) 编辑

2012年5月10日 #

C++ allocator

摘要: 说一说C++里的allocator。我们知道,C++ STL里定义了很多的容器(containers),每一个容器的第二个模板参数都是allocator类型。比方说在VC10里,vector类的模板声明为: template<class _Ty, class _Ax = allocator<_Ty> > class vector 但是,基本上很少有人会自定义一个allocator。一来,默认的a... 阅读全文

posted @ 2012-05-10 00:08 wpcockroach 阅读(22347) 评论(3) 推荐(4) 编辑

2012年4月24日 #

Windows内存管理介绍

摘要: 《Windows核心编程》 可以说是每一位Windows平台程序员成长过程中必备和必读的书籍。其中的Part III主要讲解了Windows平台的内存管理机制。这部分内容可以说是本书比较有难度并且理论性内容比较多的一章。今天,就内存管理这部分说一说自己的一些理解。Reserve region。reserve基本上可以看做是一个打报告的行为,或者说是预约。通过调用VirtualAlloc配合MEM_RESERVE我们可以从虚拟地址空间分配出一块内存。这块内存称之为region。需要注意的是,此时虽然已经预约了一块内存空间,但事实上并没有真正分配。比较拗口。简单说就是,这个过程预订了一块虚拟地址. 阅读全文

posted @ 2012-04-24 23:51 wpcockroach 阅读(510) 评论(1) 推荐(0) 编辑

2012年4月14日 #

C++操作符重载

摘要: 操作符重载可以说是C++或者说其他面向对象语言的一个很重要的特性。它可以让对象的相关操作看起来和基本数据类型的操作一样。但是本文的重点不是介绍C++操作符重载的语法和简单的应用,而是要强调一下在应用操作符重载时,你是否真的想清楚了。什么意思呢,且看下文。 我们假定有下面这些代码:class CObject{public: CObject(int iObject = 0) : m_iObj... 阅读全文

posted @ 2012-04-14 20:33 wpcockroach 阅读(370) 评论(0) 推荐(0) 编辑

2012年4月10日 #

如何把菜单栏和标题栏合为一体(二)

摘要: 前两天简单说了下标题栏菜单栏合为一体时有哪些解决方案。同时也尝试着解决了一些方案中存在的问题。其中关于最大化的问题一直存留还未解决。今天就来说说如何解决这些和窗口放缩相关的问题。 放缩首先要解决的一个问题是,如何保证在最大化时不覆盖任务栏,怎样可以动态地获得除去任务栏以外的桌面工作区域?要获得这部分区域,我们需要借助SystemParametersInfo函数并传递SPI_GETWORKAREA。解决了区域问题,那在最大化的什么时候去设置这个区域大小呢,WM_SIZE?如果在WM_SIZE时候去设置最大化的话,你会发现这是没有用的。这里,我们要倚仗Windows的另外一个消息:WM_GETM. 阅读全文

posted @ 2012-04-10 00:57 wpcockroach 阅读(2225) 评论(0) 推荐(1) 编辑

2012年4月7日 #

如何把菜单栏和标题栏合为一体

摘要: 你会发现,现在越来越多的桌面应用程序将菜单栏和标题栏合为一体。要实现这种效果,一般有两种方案:将菜单绘制到标题栏上移除标题栏,把菜单栏当标题用众所周知,标题栏和菜单栏都是典型的非客户区,而在Windows平台上,非客户区的自绘对很多程序猿来说,真的是痛苦不堪啊。因此方案一自然而然就被淘汰了。既然如此,那么如何用方案二实现我们要的效果呢?这里,先把“效果”简单说下:应用程序的界面上,标题栏和菜单栏在同一个区域显示,用户点击“菜单区域”,弹出对应的菜单;用户点击其他空白区域,如同点击了标题栏 (表述不清,不过我想大家都理解了吧……)。方案二里,实际上包含了两个要点:移除标题栏用菜单栏模拟标题栏如何 阅读全文

posted @ 2012-04-07 17:35 wpcockroach 阅读(3115) 评论(2) 推荐(0) 编辑