- 博客(299)
- 资源 (20)
- 收藏
- 关注
转载 客户端架构设计的简单总结
我们知道,客户端是相对服务端而言的,客户端程序相对普通应用程序,主要是增加了网络通讯功能。在这个移动和云存储的年代,大部分终端应用程序都有网络通讯功能, 所以都可以称为客户端。常见的客户端如浏览器,IM客户端, 网络会议客户端,邮件客户端,微博和微信客户端等...通过观察,我们会发现所有的客户端基本是大同小异,都会包括一些相同的功能组件, 下面简单例举下:通讯协议层
2015-09-20 23:25:29 2419
原创 WTL框架小结
创建窗口时先注册类,通过thunk技术将窗口过程设置为StartWindowProc;主应用程序类_Module至少有一个CMessageMap对象(可以增加、删除或者获得已经存在的引用),而CMessageLoop中存在两个数组,一个数组存放过滤消息结构:CMessageFilter,另外一个数组存CIdleHandler,用于空闲消息处理。CMessageFilter中只有一个PreTrans
2015-08-28 13:32:12 1973
原创 注册COM组件
#include "stdafx.h"#include int _tmain(int argc, _TCHAR* argv[]){ OSVERSIONINFO osvi={0}; osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX); GetVersionEx(&osvi); //Vista以下系统不存在管理员权限运行程序的方式
2015-08-27 12:56:35 1670
原创 模拟QQ窗口抖动效果
RECT rtWindow; GetWindowRect(&rtWindow); //long x = 400; //long y = 200; long x = rtWindow.left; long y = rtWindow.top; long cxWidth = rtWindow.right-rtWindow.left; long cyHeight = rtWindow.bot
2015-08-25 16:59:28 1111
转载 TrackMouseEvent与_TrackMouseEvent
函数功能:当在指定时间内鼠标指针离开或盘旋在一个窗口上时,此函数寄送消息。 函数原型:BOOL TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack); 参数: lpEventTrack;指向结构TRACKMOUSEEVENT的指针。 返回值:如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。
2015-08-20 16:21:01 812
原创 利用subwcrev.exe工具自动生成VS开发工具中的版本号
关于subwcrev.exe参见: http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev.html http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev-keywords.html基本格式是: SubWCRev WorkingCop
2015-08-05 10:48:02 6691
原创 #pragma alloc_text 用法
1、转自 :http://hi.baidu.com/billbeggar/blog/item/e884ce1acb10f49a6438db43.html 2、编译时控制分页能力 有时,驱动程序的某些部分必须驻留内存而另一些可以被分页,这就需要一种能控制代码和数据是否分页的方法。通过指导编译器的段分配可以实现这个目的。在运行时,装入器通过检查驱动程序中的段名, 把段放到你指定的内存池中。此外
2015-08-04 11:38:33 4102
原创 VC窗口刷新InvalidateRect和UpdateWindow
首先说说WM_PAINT这个重要的消息: The WM_PAINT message is generated by the system and should not be sent by an application.The system sends this message when there are no other messages in the application’s mess
2015-07-16 23:09:14 4860
原创 ATL程序框架
stdafx.h#define STRICT#define VC_EXTRALEAN#include <atlbase.h> //基本的ATL类extern CComModule _Module;#include <atlwin.h> //ATL窗口类CMyWindow.h#pragma once#include "stdafx.h"#include "res
2015-07-12 13:08:23 1214
原创 plsql dev中Dynamic Performance Tables not accessible分析解决
解决问题的方式,见:http://www.xifenfei.com/1822.html
2015-07-08 10:50:21 662
原创 Oracle常用查看表结构命令
获取表: select table_name from user_tables; //当前用户的表 select table_name from all_tables; //所有用户的表 select table_name from dba_tables; //包括系统表 select table_name from dba_tables where owner=’用户名’ user
2015-07-03 13:06:08 604
原创 CFile 与 CStdioFile的区别
一. CFile类操作文件默认的是Binary模式,CStdioFile类操作文件默认的是Text模式。 在Binary模式下我们必须输入’\r\n’,才能起到回车换行的效果,’\r’只是回车(回到当前行的第一列),’\n’只是换行(到达下一行的当前列)。 而在Text模式下’\r’的工作是自动完成的,当我们写一个’\n’的时候,系统会自动帮我们在其前面加上一个’\r’,然后保存到文件里。
2015-06-28 13:00:26 1084
原创 代码安全增强与标准注解语言SAL
从Visual Studio 2005开始编译程序时就会遇到很多warning C4996警告。虽然没有错误但是这个警告估计还是让很多人不爽。MSDN上关于此警告有说”为了支持新的、更安全的函数,否决了某些 CRT 和标准 C++ 库函数,如果出于安全原因使用了否决的 MFC 或 ATL 函数,也可能发生 C4996”。以此为切入点来聊聊微软从Visual Studio 2005开始引入的一项针对程
2015-06-27 21:54:40 1114
原创 MFC CStringArray按标识符拆分字符串
CStringArray road; CString temp="a|b|c|d|e"; int s0=temp.ReverseFind('|'); road.Add(temp.Mid(s0+1)); while(s0>0) { temp=temp.Mid(0,s0); s0=temp.ReverseFind('|'); road.Add(temp.Mid(s0+1)); }
2015-06-27 19:21:53 1987
转载 C++中的单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到
2015-06-19 12:33:46 734
原创 vector.resize 与 vector.reserve的区别
std::vector的reserve和resize的区别 1. reserve: 分配空间,更改capacity但不改变size 2. resize: 分配空间,更改capacity也改变size如果知道vector的大小,resize一下可以当数组来用,不会分配多余的内存。reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用
2015-06-15 16:58:54 1467
原创 不要在公共接口中传递STL容器
最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用。 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接口中传递STL容器:这里说的STL容器,但主要则是指容器,字符串类,但其实可以推广到在STL中提供的任何类型, 这里说的公共接口,是指需要暴露给客户的sdk头文件,包括函数签名,或者类成员变量; 也可以说,不要在暴露给客户的头文件中包含STL的头文件。原
2015-06-15 16:57:25 1008
原创 win7下上帝模式
在任何地方创建一个新文件夹,这个操作对于几乎所有电脑用户来说都非常简单,然后重要的是,将这个新文件夹重命名为“GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}”。大家最好直接复制过去,避免手动输入出错。接下来一回车,惊喜立即出现在你面前。
2015-06-13 15:21:22 742
原创 Windows获取本机机器名和ip地址及ip地址的字符串形式
CString CIOCPModel::GetLocalIP(){ // 获得本机主机名 char hostname[MAX_PATH] = {0}; gethostname(hostname,MAX_PATH); struct hostent FAR* lpHostEnt = gethostbyname(hostname);
2015-06-10 14:39:33 1545
转载 windows常用消息大全(系统消息、通告消息、用户消息)
文章参见:http://blog.csdn.net/nupt123456789/article/details/7370562
2015-06-05 17:03:22 917
原创 正确使用std::auto_ptr
正确使用std::auto_ptr 原文:http://blog.csdn.net/just_a_beginning/article/details/43867551, auto_ptr类auto_ptr是一个模板类,定义如下:template class auto_ptr {…};它存储的是一个指向Type的指针。顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它
2015-06-01 22:18:57 793
原创 GDI和GDI+枚举字体
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-05-29 10:25:48 995
原创 gdi/gdiplus如何加载字体
对于gdi画法:云风的博客上这么说(http://blog.codingnow.com/2006/01/font.html):以前做游戏想用隶书,但是并非每台机器上都装有这个字体,所以有时候需要给用户提供一个。在自己软件的路径下放上字体文件,直接调用 CreateFont 这个 API 是不认的。这种情况下可以使用 AddFontResource ,然后调用PostMess
2015-05-19 16:23:57 3313
原创 VS2008中定位代码前一个大括号的方法
一直在找定位前一个大括号的方法,今天终于发现了,有时候一个代码块特别长,要调到前面部分,只能拉动滚动条,特别麻烦,今天想想,要将光标移动的前一个大括号,应该是先将光标移动到后一个大括号内侧,再用方向键才行,单独用方向键肯定不行,所以要加组合键,组合键一般也就是ctrl, shift, alt几个了,用试的办法了,最后发现时alt+方向键(上)。哈哈,以后可以省点事了。 今天发
2015-05-14 17:45:27 3088 2
原创 Windows窗口消息大全
Windows窗口消息大全,全不全自己看 ////////////////////////////////////////////////////////////////////////// #include "AFXPRIV.H"//消息值的定义来源 #include "Dde.h"//DDE消息值的定义来源 #include "CPL.H"//控制面板消息值的定义来源 #incl
2015-04-14 17:54:48 1311
原创 用WinInet开发Internet客户端应用指南
文章来源:http://www.cnblogs.com/zdxster/archive/2011/01/27/1945899.html实现步骤大家知道,每个Internet客户端程序都伴随有一定的目的行为,如读文件、写文件、删除文件等等。客户端的程序要实现这些行为的先决条件是建立Internet连接。然后再根据不同的目的进行具体的操作。为了方便起见,下面这这些张表格针对不同的应用行
2015-03-16 10:02:35 687
原创 VS调试时监视/查看全局变量
最近同事在调试一个十多年前就开始写的程序,在VS下基于MFC的项目,其中使用了部分全局变量,现在需要在原来的基础上增加新的功能,问我能不能用直接在Watch窗口直接查看全局变量值,他的方法是把全局变量赋值给局部变量再查看,由于多个位置需要就得添加很多的代码,调试完成还要删除,很是不方便。http://furzoom.com/vs-debug-watch-global-variable/VS
2015-03-02 13:46:23 30748 3
原创 求助:程序如何模拟鼠标点击一个TreeView节点?
void CreateTreeViewControl(HWND hMainWnd){ g_hTreeView = CreateWindow(WC_TREEVIEW, _T("Tree View"), WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT, 5, 5, 320, 480, hMainWnd, NULL
2015-02-05 17:26:29 4519
原创 ARRAYSIZE宏与RtlpNumberOf的区别
// test_RtlpNumberOf.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include templatelong f1(T (&t)[N]){ //typedef T zz; //typedef T zz[N]; //zz a; return
2015-01-29 14:40:36 1715
原创 如何在程序异常或者崩溃时产生一个dump文件
核心API是:CreateFile()MinDumpWriteDump()需要包含头文件:#include #pragma comment(lib, "dbghelp.lib")代码如下:// test_dump.cpp : Defines the entry point for the console application.//#include "
2015-01-07 11:39:50 1630
原创 win32程序中如何使用GDIPlus
方法一:删除宏定义:#define WIN32_LEAN_AND_MEAN加上gdiplus.lib引用:#pragma comment(lib, "gdiplus.lib")包含gdiplus头文件:#include 添加初始化代码:ULONG_PTR gdiplusToken;GdiplusStartupInput gdiplusStartupI
2015-01-05 11:02:46 2917 1
原创 GDI 与 GDIPlus 获取文字宽度和高度的方法
GDI 与 GDIPlus 获取文字宽度和高度的方法 /// GDI获得字体宽度的方法CClientDC dc(this); CFont font; //Requested font height in tenths of a point.//For instance, pass 120 to request a 12-point font.)
2014-12-31 15:37:54 3856
原创 Calculating The Logical Height and Point Size of a Font
CreateFont第一个参数字体高度优先使用负数而不是正数。
2014-12-30 12:49:34 1389
原创 stl std::map容器排序及使用注意事项
#include "stdafx.h"#include #include int _tmain(int argc, _TCHAR* argv[]){ /** * map中的每个元素都是一个pair类型 * 对于插入其中的元素都会默认按键值升序排列好 */ std::map m; m.insert(std::pair(1, 20)); m.insert(std::p
2014-11-05 12:44:12 5454
转载 UTF-8编码规则
UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现。UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码
2014-10-31 15:47:30 1178
转载 窗口子类化
VC 中基于 SDK 编程的窗口子类化窗口子类化的作用窗口子类化技术最大的特点就是能够截取 Windows 的消息。一旦用户自定义的窗口函数截取了传向原窗口函数的消息,就可以对被截取的消息进行如下处理:将其传给原来的窗口函数。这是对大多数消息应该采取的措施,因为子类通常只对原来的窗口特性作少量的改动截取该消息,阻止其向原窗口函数发送。修改该消息,修改完毕以后
2014-10-15 16:06:18 799
转载 MFC的消息反射机制
1、消息反射解释: 父窗口将子窗口发给它的通知消息,首先反射回子窗口进行处理(即给子窗口一个机会,让子窗口处理此消息),这样通知消息就有机会能被子窗口自身进行处理。 2、MFC中引入消息反射的原因: 在Windows的消息处理中,子窗口的发给其父窗口的通知消息只能由其父窗口进行处理,这使得子窗口的自身能动性大大降低(你想,它连改变自己的背景色,处理一个自身滚动问题都要其父窗口来
2014-10-15 16:01:11 859
文章《用Android Studio进行NDK编程》配套资源
2018-04-17
即时通讯flamingo服务器端代码
2017-04-06
即时通讯flamingo客户端
2017-04-06
myreactor项目C++11版本源代码
2016-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人