摘要: 0. 前言 你是否也是一个c++玩家,经常用c++写一些带界面的小程序?厌倦了每次在vs里用鼠标拖各种控件,然后copy / paste一大堆win32的api?没用过mfc,wtl,qt,只用sdk? 本文介绍一种方法把这些api进行封装,弄一个界面库出来,当然前提是对这些api有基本了解。 之前看过些界面库源码,尤其是egui,好多东西都是从它那学来的。它们都用到像boost这种第三方库,因为当时c++版本没有自带shared_ptr,lambda,functional这些工具, c++11之后包含了这大部分东西,也就不需要第三方库了,但需要较新的编译器。下面的源码可以用MinGW编译,或 阅读全文
posted @ 2013-03-29 14:45 aj3423 阅读(2731) 评论(0) 推荐(1) 编辑
摘要: 发在看雪上了 http://bbs.pediy.com/showthread.php?t=159415没看雪帐号的话可以从这下载: wifi.rar 阅读全文
posted @ 2012-12-11 10:55 aj3423 阅读(276) 评论(0) 推荐(0) 编辑
摘要: mutex.h // MinGW 4.7 暂不支持 ,临时用这个代替// MinGW doesn't provide ...#pragma oncenamespace std {struct once_flag { bool f; once_flag(bool f = false) : f(f) {}};templatevoid call_once(once_flag& flag, fn_t fn, args_t... args) { if(!flag.f) { flag.f = true; fn(args...); }}}thread.h#pragma once#includ 阅读全文
posted @ 2012-11-05 16:07 aj3423 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 看了几个序列化框架,都有这个那个瑕疵1. boost 太大,不容易学2. eternity 不支持非侵入式,必须在类里加序列化方法。并且不支持 map> 之类嵌套3. s11n 太复杂,不支持二进制存储,导致文件比较大所以尝试自己搞了下,目前做到以下功能1. 非侵入式2. 支持pod原生类型,如 int, double, 指针3. 支持stl容器4. 二进制存储地址: serialization.rar例子:#include #include #include #include #include #include using namespace std;#include "se 阅读全文
posted @ 2012-11-05 02:33 aj3423 阅读(405) 评论(0) 推荐(0) 编辑
摘要: 经常会遇到这种情况,比如一个读文件内容的类,有个比较耗时的方法 getContent,假设这个方法对于固定参数返回的内容是固定的,比如:class FileReader { public function getContent($file) { $content = // open -> read -> do some decode return $content; }}$r = new FileReader();$r->readContent('a.txt');$r->readContent('a.txt');$r->readCo 阅读全文
posted @ 2011-09-24 00:42 aj3423 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 一个csdn的提问帖:现有一个不规范二维数组 [[1,2,3],[4,5],[6],[7,8,9,10],[11,12],[13,14],[15,16,17],[18,19,20]]想得到该数组的所有组合方式,如[1,4,6,7,11,13,15,18],[1,4,6,7,11,13,15,19]......具体见原帖:http://topic.csdn.net/u/20110920/22/7c71bc58-55bf-41fd-a029-4fad1e5c7aa3.html 阅读全文
posted @ 2011-09-24 00:38 aj3423 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 某题目1: 某公司在北京和上海各有 N 个员工,比如北京有10员工,员工编号 1 到 10,在上海有10个员工,编号 11 到 20. 公司的所有项目,都是2个人的team,一个来自北京,一个来自上海 每个人可能参与多个项目,但同一个team,不会参与多个项目 年终了,CEO要开总结会,要求每个项目都要来至少 1 个代表,来总结项目。 由于经费有限,需要写一个程序,计算出最少的人(但每个项目都要来人),至少打印出一组数据测试样例:1, 161, 131, 152, 193, 165, 157, 137, 148, 14一组可能的输出结果: 2, 13, 14, 15, 16数学模型: 1. 每 阅读全文
posted @ 2011-09-24 00:33 aj3423 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 原文 http://ajaxian.com/archives/settimeout-delay(可能已被墙)js中的setTimeout(fn, delay)该函数通常用于2种情况:1. 为了创建延时2. 为了新开"线程"来避免堆栈溢出第2种情况下延时不是我们的目的,所以通常希望delay值越小越好,但即使把delay值设置成0,也不能真正做到零延时,各浏览器对于setTimeout都有一个最小延时,大部分浏览器是10ms。就是说即使setTimeout(fn, 0) 也会有10ms延时,下面介绍一种真正零延时的做法:setZeroTimeout(function() { 阅读全文
posted @ 2011-03-12 02:23 aj3423 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 来自http://blog.jcoglan.com/2010/08/30/the-potentially-asynchronous-loop/(可能已被墙)写程序时候经常会碰到这种情况,有一个队列,对这个队列进行一次操作会相当消耗性能,因此需要对队列中每个元素独立进行操作,一个接一个。如果这个操作是阻塞的话 用一个for循环就搞定了,如果是异步操作呢。比如,有一个url数组,需要轮流访问每一个url,上一个返回后才进行下一个listOfUrls.forEach(function(url) { $.get(url, function(response) { // ha... 阅读全文
posted @ 2011-03-12 02:00 aj3423 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 首先看看创建XHR最简单的方法:function createXHR() { // Factory method. var methods = [ function() { return new XMLHttpRequest(); }, function() { return new ActiveXObject('Msxml2.XMLHTTP'); }, function() { return new ActiveXObject('Microsoft.XMLHTTP'); } ]; var xhr; ... 阅读全文
posted @ 2011-02-28 18:26 aj3423 阅读(315) 评论(0) 推荐(0) 编辑