阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 72 73 74 75 76 77 78 79 80 ··· 139 下一页

2012年2月4日

摘要: 该程序将演示如何将一个简单结构序列化后发送到网络上,如何从网络上接收到数据后反序列化回结构。 ACE的 C++ WRAPPER FACADE层将网络通信分成三种角色:连接者 (ACE_SOCK_Connector)、等待者 (ACE_SOCK_Acceptor)和传输者 (ACE_SOCK_Stream)。建立连接 首先使用 ACE_SOCK_Connector::connect连接某个服务器(使用 ip地址和端口号),该服务器上使用 ACE_SOCK_Acceptor::accept等待外部的连接请求。 ACE_INET_Addr类进行管理 SOCKET通信使用的 IP地址和端口号。 当连接 阅读全文

posted @ 2012-02-04 21:55 阳光VIP 阅读(192) 评论(0) 推荐(0) 编辑

摘要: Linux编程环境时间日期类型timeval 及其相关API“时间”和“日期”的概念,主要有以下几个:Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间。这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点 阅读全文

posted @ 2012-02-04 21:55 阳光VIP 阅读(156) 评论(0) 推荐(0) 编辑

摘要: 算法排序算法Selection Sort连续的容器中存放了很多的元素,我们需要对其进行排序,假设每个元素都支持operator <运算符。选择排序的做法是先选择第一个元素,然后和其他的n-1个元素逐一比较,找到n-1个当中最小的,并且同时小于第一个元素的,交换位置。然后用同样的算法考虑后面的n-1、n-2、n-3...个元素,直到还剩下最后一个元素。template<typename T>void SelectionSort(T a[],size_t length){assert(length>1);size_t curPos=0,minPos,end=length;w 阅读全文

posted @ 2012-02-04 21:54 阳光VIP 阅读(158) 评论(0) 推荐(0) 编辑

摘要: Windows下,每个线程都可以拥有一个消息队列,通常UI线程默认就拥有自己的消息队列,Work Thread需要自己调用PeekMessage来创建自己的消息队列。 消息是一个数据结构,下面是它的定义:typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt;#ifdef _MAC DWORD lPrivate;#endif} MSG 每个消息都包含了要接收消息的窗口的句柄,消息ID,两个参数,还有其他信息。SDK下的消息循环通常这样写:while ( 阅读全文

posted @ 2012-02-04 21:53 阳光VIP 阅读(187) 评论(0) 推荐(0) 编辑

摘要: 下面是我通过使用向导生成的代码:class CDemoView : public CWindowImpl<CDemoView, CTreeViewCtrl>{public: DECLARE_WND_SUPERCLASS(NULL, CTreeViewCtrl::GetWndClassName()) BOOL PreTranslateMessage(MSG* pMsg) { pMsg; return FALSE; } BEGIN_MSG_MAP(CDemoView) END_MSG_MAP()}; 注意和普通窗口的区别:1)CWindowImpl第二个木板参数为CTreeViewCt 阅读全文

posted @ 2012-02-04 21:52 阳光VIP 阅读(95) 评论(0) 推荐(0) 编辑

摘要: Form窗口实际上就是派生自对话框类CDialogImpl类。因为也有一个对话框资源,所以我们可以使用可视化编辑的方式添加控件。class CFormView : public CDialogImpl<CFormView>{public: enum { IDD = IDD_FORM_FORM }; BOOL PreTranslateMessage(MSG* pMsg) { return CWindow::IsDialogMessage(pMsg); } BEGIN_MSG_MAP(CFormView) END_MSG_MAP()}; 注意当手动添加对话框资源时,需要将Border属 阅读全文

posted @ 2012-02-04 21:52 阳光VIP 阅读(128) 评论(0) 推荐(0) 编辑

摘要: WTL提供了3个类用来分隔窗口:CSplitterImpl、CSplitterWindowImpl、CSplitterWindowT。CSplitterImpl类实现了最主要的分割窗口所需要的函数。CSplitterWindowImpl继承了CSplitterImpl类,它实现了一个什么都不做的OnEraseBackground函数,还实现了一个OnSize函数,该函数可以自动调整分割窗口的客户区大小。通常情况下,我们可以直接使用CSplitterWindowImpl类作为我们窗口的父类,如果这两个函数的行为达不到我们的要求,我们可以改写继承自CSplitterImpl类的消息处理函数。CSp 阅读全文

posted @ 2012-02-04 21:52 阳光VIP 阅读(307) 评论(0) 推荐(0) 编辑

摘要: 如何让整个窗口具有透明效果呢? 使用如下的类:// class CLayeredImpl// Layered Windowtemplate <class T>class ATL_NO_VTABLE CLayeredImpl{public: HMODULE m_hUser32LWA; CLayeredImpl() { } virtual ~CLayeredImpl() { } LONG SetLayeredStyle() { T* pT = static_cast<T*>(this); ATLASSERT(::IsWindow(pT->m_hWnd)); LONG 阅读全文

posted @ 2012-02-04 21:51 阳光VIP 阅读(198) 评论(0) 推荐(0) 编辑

摘要: 如何改变窗口的背景色,但是不影响OnPaint函数内部的绘图逻辑呢?举例:LRESULT OnEraseBackground(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled) { // handled, no background painting needed CPaintDC dc(m_hWnd); RECT rect; GetClientRect(&rect); CBrush brush; brush.CreateSolidBrush(RGB(255,134,255)); dc.Fil 阅读全文

posted @ 2012-02-04 21:51 阳光VIP 阅读(195) 评论(0) 推荐(0) 编辑

摘要: WTL7.5在VC8中的使用简单剖析目录前言... 1WTL7.5安装... 1WTL 对话框... 2WTL窗口... 5SDI窗口... 5MDI窗口... 7进程入口---_tWinMain. 8前言 我看了很多关于MFC/ATL/COM方面的书,我发现国外的技术作者大多喜好挖掘代码内部最晦涩难懂的精华部分,试图解释给读者,当然我非常感激,我也因此受益匪浅。但是常常发现当我在钻研技术底层的时候,容易迷失了方向,搞不清这些东西做什么用。我常常想,写书的人,在每每挖掘内核的时候,总是能在一开始提纲携领的描述一下我们要做什么,可能效果好得多。但是也许那些人实在站在比我高得太多的山巅上,那些在他 阅读全文

posted @ 2012-02-04 21:50 阳光VIP 阅读(259) 评论(0) 推荐(0) 编辑

上一页 1 ··· 72 73 74 75 76 77 78 79 80 ··· 139 下一页