<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SurfingAnt的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/shenda21</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shenda21]]></copyright><item><title><![CDATA[struts2采用convention-plugin实现零配置]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/23661471</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/23661471</guid><author>shenda21</author><pubDate>Mon, 14 Apr 2014 10:37:32 +0800</pubDate><description><![CDATA[转自：ITeYe
作者：javeye]]></description><category></category></item><item><title><![CDATA[JSP框架：A框架中刷新B框架问题]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/23187333</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/23187333</guid><author>shenda21</author><pubDate>Tue, 08 Apr 2014 16:25:32 +0800</pubDate><description><![CDATA[问题是这样的：我在main.jsp中定义了3个框架:]]></description><category></category></item><item><title><![CDATA[VC线程中通过自定义消息打开新的对话框(模态与非模态)]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17567101</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17567101</guid><author>shenda21</author><pubDate>Thu, 26 Dec 2013 07:49:15 +0800</pubDate><description><![CDATA[在线程中直接打开已添加的对话框或者通过调用函数的方式打开对话框，虽然编译无错误提示，但运行后有错误提示。
这里列出通过消息机制打开对话框的方法。
假设有Test1Dlg与Test2Dlg两个对话框，其中Test1Dlg为主对话框，Test2Dlg为添加的对话框。
将]]></description><category></category></item><item><title><![CDATA[VC线程中通过自定义消息引用对话框控件]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17565847</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17565847</guid><author>shenda21</author><pubDate>Wed, 25 Dec 2013 23:06:14 +0800</pubDate><description><![CDATA[在线程中直接调用控件会提示错误，可以通过传递消息的方式间接地调用控件。
假设有个对话框:TestDlg ，通过线程调用其编辑框控件（ID:IDC_EDIT_RECV）
线程:
DWORD WINAPI TestProc(LPVOID lpParameter)
{
 char tempBuf[20];
 int n=0;
 while (TRUE)
 {   
     n++;]]></description><category></category></item><item><title><![CDATA[keybd_event，mouse_event的使用及虚拟键值表]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17404397</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17404397</guid><author>shenda21</author><pubDate>Thu, 19 Dec 2013 08:44:58 +0800</pubDate><description><![CDATA[转自：csdn
作者：dijkstar
模拟鼠标产生鼠标事件、键盘事件有时候非常有用，比如在自动化测试中。源程序在：http://download.youkuaiyun.com/detail/dijkstar/4035890
关键程序：
比如一个应用：自动关闭弹出的Messagox对话框（http://blog.youkuaiyun.com/dijkstar/article/details/8761481）（20]]></description><category></category></item><item><title><![CDATA[hook 鼠标键盘消息实例分析]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17404293</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17404293</guid><author>shenda21</author><pubDate>Wed, 18 Dec 2013 22:47:03 +0800</pubDate><description><![CDATA[1、木马控制及通信方法包括：双管道，端口重用，反弹技术，Hook技术，今天重点引用介绍一下hook的用法，hook信息后可以将结果发送到hacker邮箱等，实现攻击的目的。
转自：http://hi.baidu.com/mousetopshow/item/a951102d679f6e8f9c63d1b0

钩子能截获系统并得理发送给其它应用程序的消息，能完成一般程序无法完成的功能。掌握钩子的]]></description><category></category></item><item><title><![CDATA[VC++中StretchBlt图像失真问题的解决办法]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17298421</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17298421</guid><author>shenda21</author><pubDate>Fri, 13 Dec 2013 10:20:26 +0800</pubDate><description><![CDATA[在 VC 中使用 StretchBlt 会碰到一些与点阵图大小缩放相关的一些问题。在扩展一个点阵图时，StretchBlt必须复制图素行或列。如果放大倍数不是原图的整数倍，那么此操作会造成产生的图像有些失真。


　　如果目的矩形比来源矩形小，那么StretchBlt在缩小图像时就必须把两行（或列）或者多 行（或列）的图素合并到一行（或列）。完成此操作有四种方法，它根据装置内容伸展模式属性来]]></description><category></category></item><item><title><![CDATA[多线程同步之关键代码段（临界区）]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17269503</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17269503</guid><author>shenda21</author><pubDate>Wed, 11 Dec 2013 21:42:00 +0800</pubDate><description><![CDATA[关键代码段(临界区)工作在用户方式下。
关键代码段(临界区)是指一个小代码段，在代码能够执行前，它必须独占对某些资源的访问权。通常把多线程中访问同一种资源的那部分代码当做关键代码段。
临界区好比公用电话亭，若想要使用电话亭，得先判断里面是否有人，若有人，则等待至里面的人离开。
临界区相关函数：
void InitializeCriticalSection(LPCRITICAL_SECTIO]]></description><category></category></item><item><title><![CDATA[多线程同步之事件对象（Event Object）]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17268307</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17268307</guid><author>shenda21</author><pubDate>Wed, 11 Dec 2013 20:33:39 +0800</pubDate><description><![CDATA[事件对象属于内核对象，多用于多线程间的同步。
我觉得用红绿灯能比较形象地描述事件对象运作的机理：将行人和机动车辆比作两个线程，道路即为共享资源，若行人和机动车辆同时过马路则存在较大安全隐患，所以建立红灯与绿灯两个事件。灯亮为有信号状态，其对应的线程可以继续活动；灯灭则为无信号状态，其对应的线程需要等到灯亮才能运行。

事件对象原型如下：
HANDLE CreateEvent( 
LPSE]]></description><category></category></item><item><title><![CDATA[多线程同步、异步]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17268823</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17268823</guid><author>shenda21</author><pubDate>Wed, 11 Dec 2013 19:46:13 +0800</pubDate><description><![CDATA[转自：csdn
作者：_Proxy
1、首先明确一点，对于单核CPU，任意一个时刻只有一个线程在运行。那么既然这样，多线程还有什么意义呢？ 举例来说，现在只有一个人，要做好几个任务。单线程就是，任务一个一个地做，必须做完一个任务后，再去做另一个任务。多线程就是一会做这个任务，一会做那个任务，每个任务做一会，不停的切换。显然，最后把所有的任务做完，多线程必定比单线程更耗费时间。为什么？因为，多线]]></description><category></category></item><item><title><![CDATA[vc中调用WM_PAINT消息]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17136341</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17136341</guid><author>shenda21</author><pubDate>Thu, 05 Dec 2013 09:42:52 +0800</pubDate><description><![CDATA[转自：新浪博客
作者：风铃
1. WM_PAINT消息根本就不用SendMessage来实现，当窗口出现无效区时，系统会自己发送这个消息，而用Invalidate（）或者InvalidateRect就会产生无效区而发送WM_PAINT
   void Invalidate( BOOL bErase = TRUE );
  该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘，]]></description><category></category></item><item><title><![CDATA[VC++之使用CFile类操作文件]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17000805</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17000805</guid><author>shenda21</author><pubDate>Thu, 28 Nov 2013 09:28:02 +0800</pubDate><description><![CDATA[VC++之使用CFile类打开文件
转自：百度空间
作者：幽谷小舍
一、CFile类
         1.1、CFile类，一个提供二进制文件操作接口的类，是MFC文件操作类之基础。         1.2、用CFile类打开文件
                  1.2.1、定义CFile对象，后调用open()函数打开文件
CFile m_file;              ]]></description><category></category></item><item><title><![CDATA[Socket的正确关闭]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17000329</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17000329</guid><author>shenda21</author><pubDate>Thu, 28 Nov 2013 08:33:54 +0800</pubDate><description><![CDATA[转自：csdn
作者：hunkcai
TIME_WAIT状态 
如果服务端的Socket比客户端的Socket先关闭，会导致客户端出现TIME_WAIT状态，占用系统资源。 


所以，必须等客户端先关闭Socket后，服务器端再关闭Socket才能避免TIME_WAIT状态的出现。 
判断客户端Socket的关闭 
最近试验发现，当客户端Socket关闭时，服务端的Socket会]]></description><category></category></item><item><title><![CDATA[对话框的建立（模态与非模态）]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/17000297</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/17000297</guid><author>shenda21</author><pubDate>Thu, 28 Nov 2013 08:25:00 +0800</pubDate><description><![CDATA[MFC中对话框有两种形式，一个是模态对话框（model dialog box），一个是非模态对话框（modeless dialog box）。
 一、模态对话框（model dialog box）
        在程序运行的过程中，若出现了模态对话框，那么主窗口将无法发送消息，直到模态对话框退出才可以发送。
       点击模态对话框中的OK按钮，模态对话框会被销毁。]]></description><category></category></item><item><title><![CDATA[GetWindowRect与GetClientRect]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/16855669</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/16855669</guid><author>shenda21</author><pubDate>Thu, 21 Nov 2013 09:38:17 +0800</pubDate><description><![CDATA[先调用GetWindowRect后再调用ScreenToClient,这个时候得到的rect和直接使用GetClientRect得到的值是相等的。有时候需要获得窗口矩形的大小和客户区矩形的大小二者的值，故需要分别调用GetWindowRect和GetClientRect。如果只需要获得客户区矩形的大小，调用GetClientRect就行了。GetWindowRect和GetClientRect函数]]></description><category></category></item><item><title><![CDATA[VC++中的CDC类]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/16855547</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/16855547</guid><author>shenda21</author><pubDate>Thu, 21 Nov 2013 09:25:41 +0800</pubDate><description><![CDATA[转自：新浪博客
作者：雪后DE阳光
 
VC++中的CDC类（VC++学习笔记）
 
在学习VC++中，CDC类是在显示数据，或者使用图形，或者使用文本中必不可少的。Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。
    CDC与CGdiObject的关系

　　说道CDC类就不能]]></description><category></category></item><item><title><![CDATA[CreateThread()函数的使用及参数的传递]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/16855029</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/16855029</guid><author>shenda21</author><pubDate>Thu, 21 Nov 2013 09:17:51 +0800</pubDate><description><![CDATA[CreateThread将在主线程的基础上创建一个新线程，大致做如下步骤：
1.在内核对象中分配一个线程标识/句柄，可供管理，由CreateThread返回
2.把线程退出码置为STILL_ACTIVE，把线程挂起计数置1
3.分配context结构
4.分配两页的物理存储以准备栈，保护页设置为PAGE_READWRITE，第2页设为PAGE_GUARD
5.lpStartAddr和lp]]></description><category></category></item><item><title><![CDATA[无连接Socket中服务端对客户端的记录]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/15814933</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/15814933</guid><author>shenda21</author><pubDate>Wed, 13 Nov 2013 18:58:26 +0800</pubDate><description><![CDATA[在无连接Socket中，客户端每隔一段时间(计时器中设定的)向服务器发送一次连接，如果服务端要建立一个信息表记录客户端的IP并给客户端编号，
那么服务端接收到客户端发来的连接后，有以下两种情形需要处理：
①该客户端是第一个连接的客户端；
②该客户端是第一个之后连接的客户端；
③该客户端是已经连接过的客户端
对于①，服务端需要建立一个文件，并在信息表中给客户端编号并添加信息；
对于②，服]]></description><category></category></item><item><title><![CDATA[CString的一些应用]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/15813947</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/15813947</guid><author>shenda21</author><pubDate>Wed, 13 Nov 2013 16:41:18 +0800</pubDate><description><![CDATA[CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作，使得MFC在做字符串操作的时候方便了很多。
CString位于头文件afx.h中。

CString对应的对象时字符串，所以一些用于字符串的操作也可以使用于CString
如：
#include
#include

void main()
{
	CString s="abc";
	CString b="abc]]></description><category></category></item><item><title><![CDATA[整型与字符串的转换]]></title><link>https://blog.youkuaiyun.com/shenda21/article/details/15808573</link><guid>https://blog.youkuaiyun.com/shenda21/article/details/15808573</guid><author>shenda21</author><pubDate>Wed, 13 Nov 2013 09:40:50 +0800</pubDate><description><![CDATA[一般来说，函数对于其内参数的格式有着严格的定义，比如该参数只能是int型或者char型等。
如MFC列表控件：int InsertItem( int nItem, LPCTSTR lpszItem );  （nItem是控件中行的索引，限制为int型 、lpszItem是控件头的名字）
有些时候，我们希望在格式定义为字符串的参数中添加整型变量，而不需要进行复杂的操作。比如给Ipszltem赋值]]></description><category></category></item></channel></rss>