自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

转载 windows消息复习

队列化消息基本上是使用者输入的结果,以击键(如WM_KEYDOWN和WM_KEYUP消息)、击键产生的字符(WM_CHAR)、鼠标移动(WM_MOUSEMOVE)和鼠标按钮(WM_LBUTTONDOWN)的形式给出。队列化消息还包含时钟消息(WM_TIMER)、更新消息(WM_PAINT)和退出消息(WM_QUIT)。非队列化消息则是其它消息。在许多情况下,非队列化消息来自呼叫特定的Windo

2012-11-30 16:56:19 488

转载 Message vs Notify

WM_LBUTTONDOWN是系统Post给鼠标下面的控件的(通过消息队列),NM_CLICK是控件Send给其父控件的(直接调窗口函数)。从原理上说这两个消息是在不同的消息函数中响应的,不过你可以通过重设按钮的窗口函数(SetWindowLong或者重载CButton类的WindowProc函数),使这两个控件的窗口函数相同,然后在窗口函数中根据句柄来判断是哪一个控件。(来自CSDN论坛)

2012-11-30 10:57:42 737

转载 光标位置

检索通知消息中的光标位置有时,当公共控件收到某些通知消息时,确定光标的当前位置很有用。例如,当公共控件收到 NM_RCLICK 通知消息时,确定当前光标位置很有帮助。有一个通过调用 CWnd::GetCurrentMessage 完成此工作的简单方法。但是,此方法只在发送消息时检索光标位置。因为发送消息后光标可能已经移动,所以必须调用CWnd::GetCursorPos 获取当前光标位

2012-11-30 10:54:04 470

转载 自绘RadioButton

前言:没想到这么久不来这里写东西了。其实真的是前段时间没什么东西好写的,毕竟肚子里面墨水不多。还有就是没有什么有价值的东西,只是觉得最近自己进步很慢,不过倒是不想以前那么散漫了,看到喜欢什么就学什么。看来我还是专心研究C++吧,呵呵。真是门很好很强大的语言。这里自己在做任务的时候接到了一个自绘RadioButton的控件,开始以为很简单,但是由于自己知识点的缺乏,以及对WINDOWS编程的生疏,导

2012-11-29 18:44:06 1165

原创 UI小结1

我所做的界面都是去掉WS_CAPTION 自绘标题栏的1.通过WM_SETFOCUS/WM_KILLFOCUS设置标题栏在不同状态下显示不同图片时,必须注释掉其默认处理2.绘制透明BUTTON时,传递主窗口的hdc/mem dc时,必须在动态Create之前,否则Button对应位置就是一片白的3.You construct a CEdit object in two steps.

2012-11-29 15:47:19 446

原创 Radio Button

MFC 的Radio Button实现原理是什么?各个按钮是如何通信的?

2012-11-28 18:28:52 272

原创 HDC

m_hDCSingle = CreateCompatibleDC(::GetDC(GetSafeHwnd()));m_hDCWhole = CreateCompatibleDC(::GetDC(GetSafeHwnd()));m_hBmpWhole = (HBITMAP)LoadImage(NULL, szFileName, IMAGE_BITMAP, 0, 0, LR_LOADFRO

2012-11-28 00:51:27 425

转载 内存泄露检测

#include "stdafx.h"#include #incude #include #ifdef _DEBUG#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP

2012-11-24 10:39:50 388

转载 使用WSASend改善网络程序的性能

socket本身有一个send函数,这个函数的只能一次发送一个缓冲区,这对于在发送大量数据的时候或者数据包很多的时候就可能导致可能导致系统的低性能,主要原因在于调用太多次的send函数,导致从用户态到核心态的不断切换,而耗费了当前的CPU时钟周期。那么解决办法就是减少调用send的次数,一种办法就是使用一个大一点的BUFFER,在发送数据的时候将多个数据包的内容COPY到这个BUFFER中

2012-11-23 22:33:51 633

原创 send/recv的超时模拟

Server如果只是不接受,send依旧成功如果退出不做任何处理,send返回失败只有将Server挂起,send才返回time-out因此,必须自己设计协议来保证两端的完整通信

2012-11-23 15:53:47 510

原创 clsoesocket, shutdown

closesocket shutdown:1.closesocket:关闭资源,shutdown关闭连接(reuse socket问题?)2.shutdown对udp没影响3.SO_LINGER:如果数据在关闭前发送就是graceful close,如果直接关闭就是hard clsoe这个选项应该只在block下使用,在non-block下,调用closesocket()会

2012-11-23 10:56:13 682

原创 网络小计5

1.host 和 ip 转换char *ip = "www.baidu.com";int value = inet_addr(ip);if( value == INADDR_NONE ){hostent *phost = gethostbyname(ip);int i = 0;while( phost->h_addr_list[i] != NULL ) //注意:不

2012-11-22 15:56:32 777

转载 高并发服务器适时投递accept的方法

On Windows 2000 and later versions, Winsock provides a mechanism for determining if an application is running behind in posting adequateAcceptEx calls. When creating the listening socket, associate

2012-11-20 17:27:32 1068

转载 关于高并发服务器的listen函数参数设置

int listen(int fd, int backlog);socket系统调用listen只被tcp 服务器使用,他做两件事:1. 将未链接的套接口转换为被动套接口,指示内核接受向此套接口的连接请求,调用此系统调用后tcp 状态机有close转换到listen.2.第二个参数制定了内核为此套接口排队的最大连接个数。关于第二个参数,对于给定的监听套接口,内核要维护两个队

2012-11-20 15:55:32 3117

转载 单进程可以创建的最大线程数

在Windows下写个程序,一个进程Fork出2000个左右线程就会异常退出了,为什么?这个问题的产生是因为windows32位系统,一个进程所能使用的最大虚拟内存为2G,而一个线程的默认线程栈StackSize为1024K(1M),这样当线程数量逼近2000时,2000*1024K=2G(大约),内存资源就相当于耗尽。 MSDN原文:“The number of

2012-11-20 14:25:11 1769

原创 网络小记4

1.Overlapped IO模型:在处理线程中①Wait ForMultipleEventObjects②调用GetOverlappedResult对①关联的SOCKET进行结果验证If the WSAGetOverlappedResult function succeeds, the return value isTRUE. This means that your ove

2012-11-18 21:45:59 467

原创 CString解析

CString 有一个转换函数operator PXSTR (){return data;//假设是data}1.PXSTR GetBuffer(){CStringData* pData = GetData();if( pData->IsShared() ) {Fork( pData->nDataLength );}return(

2012-11-15 01:34:11 940

原创 小知识点3

1.char* p = "123abc";if( p == "123abc" ) 和 std::string str = "123abc";if( str == "123abc" )是可以的,用char []是不行的,== 比较的是地址2.class CT{public:CT(int v){m_v = v;}public:in

2012-11-13 18:22:04 645

转载 dll import

我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN

2012-11-02 16:58:24 433

Windows核心编程第5版英文版.chm

Windows核心编程第5版英文版.chm

2012-03-31

c++高手箴言(有关WINDOWS编程)

c++高手箴言,经验总结!CHM 有关WINDOWS编程)

2008-11-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除