自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 网络游戏同步

<br />原文地址:http://dev.gameres.com/Program/Abstract/DeadReckoning.htm<br /> 同步在网络游戏中是非常重要的,它保证了每个玩家在屏幕上看到的东西大体是一样的。其实呢,解决同步问题的最简单的方法就是把每个玩家的动作都向其他玩家广播一遍,这里其实就存在两个问题:1,向哪些玩家广播,广播哪些消息。2,如果网络延迟怎么办。事实上呢,第一个问题是个非常简单的问题,不过之所以我提出这个问题来,是提醒大家在设计自己的消息结构的时候,需要把这个因素考虑进

2011-03-20 13:03:00 1083

原创 Lua userdata资源释放

<br />首先来一段PIL中的说明:<br />Life is not always that easy. Sometimes, an object needs other resources besides raw memory, such as file descriptors, window handles, and the like. (Often these resources are just memory too, but managed by some other part of the

2011-02-28 21:25:00 3960

原创 关于Post Build Event

今天早上在修改工程的Post Build Event的时候在里头调用了几个copy命令用于将生成的dll和pdb拷贝到指定目标。copy $(OutDir)/$(TargetFileName)  destDir 发现执行命令的是很老是出错。查了半天才发现是OutDir目录设置的是很是以/分割,而不是以/分割。 在VC工程里头使用两种分割它都能运行OK,但是命令行工具里头是不支

2009-08-08 11:10:00 5910

原创 VS2005中使程序界面具有XP风格

1、创建一个manifest扩展名的文件,内容如下:                                              2、复制该文件到项目文件夹中3、打开项目属性,定位到配置属性->链接器->清单文件->生成清单,改为“是”4、定位到配置属性->清单工具->输入和输出->附加清单文件,加上刚才创建的manifest文件全名。这样再从新编译项目,就能

2009-07-26 20:29:00 925

原创 cursor drop shadow

  custom cursor  with alpha blen to implement drop shadow effect   care SPI_GETDROPSHADOW and the system settings changed.    two cursor res needed...  

2009-07-19 21:40:00 594

原创 继上一篇,带光标的截屏

void SaveBmpToFile(HWND hWnd, LPCWSTR fileName){ // memdc with bitblt HDC hdc = ::GetWindowDC(hWnd); RECT rcWindow; ::GetWindowRect(hWnd, &rcWindow); int w = rcWindow.right - rcWindow.left

2009-07-19 21:11:00 2111 1

原创 关于SelectOjbect使用需要注意的一些问题

      下午在弄远程控制的时候,需要将目标机器当前桌面的图像块信息发送到客户端并且在客户端显示出来。简单的来讲,服务器端可以将屏幕内容抓下来发生给客户端。简单的抓屏基本是流程是:      GetDC --> GetBitmap --> GetDIBits等来保持dc相关的位图数据。用GDI需要关于位图文件结构,比如说要构造位图文件头信息、位图Header信息、数据块信息的填充等。使用

2009-07-19 18:58:00 1002

原创 dll中的tls

线程局部变量引入可以解决多线程修改静态或者全局变量的不同步问题。举个简单的例子,一个函数fn可能需要修改一个静态变量,写这个函数的本意是自己线程内部调用,但是如果其它线程也可能调用这个函数的话,可能就破坏了这个静态变量的值。使用线程局部变量保证各个线程使用自己的一副拷贝,互不干扰。   这里需要注意一些问题,关于tls。比如__declspec(thread)只能用于定义静态的或者全局的

2009-07-18 20:58:00 3089

原创 Visual Studio 2010引入的C++0x特性

 C++的新标准C++0x虽然还没有正式发布,但是已经进入了feature freeze的阶段,很多人都在猜测C++0x中的x到底是9还是10,从目前的情况来看,9是最大的可能了。Visual Studio 2010作为下一代开发工具,当然不会错过对新的C++标准C++0x的支持。除了随着之前发布的Visual C++ Feature Pack而引入的TR1包含的部分特性外,在新的Visual S

2009-07-18 11:30:00 1151 1

原创 hook dx然后绘制出fps

   也不是啥新鲜东西了,只是搞着玩玩罢了。   首先是Hook dx device,然后可以hook内部的函数,这里只是hook d3drender的结束标记函数endScene。内部记录fps,然后创建一个D3DXFont对象来讲fps绘制在屏幕的指定位置。   hook进d3d 还是老方法,设置钩子,将自己代码注入到远程进程地址空间,在dll代码中进行hook api。这里是修改

2009-07-16 19:05:00 4448 2

原创 dump

    宕机的minidump里头的反汇编还是比较容易看懂的,关键要耐着性子。结合pdb,很多符号能看得到,当然解析错误的事情是有发生,不过这些都很容易看出来,加上Mem你可以随便随地看。      以后没事可以多看看了....     出问题了,dump是一方便,很多事情宕机了难以重现,宕机的地方不是根源所在,而只是爆发点。这样就需要自己综合分析,多思想,看看上下文trace

2009-07-14 20:44:00 681

原创 dump

<br />    宕机的minidump里头的反汇编还是比较容易看懂的,关键要耐着性子。结合pdb,很多符号能看得到,当然解析错误的事情是有发生,不过这些都很容易看出来,加上Mem你可以随便随地看。 <br /> <br />    以后没事可以多看看了....<br /> <br />    出问题了,dump是一方便,很多事情宕机了难以重现,宕机的地方不是根源所在,而只是爆发点。这样就需要自己综合分析,多思想,看看上下文trace分析各种可能引起的情况,dump是死的,人是活的,dump是为了快速解决

2009-07-14 20:35:00 589

原创 关于虚函数的顺序

        一直以来的想法:虚函数在虚函数表中的顺序是按照虚函数在类中定义的先后顺序。实际上并非如此。今天在看一个宕机dump的时候发现这个事实。        后来随便测试了下,对于没有重载函数而言,是按照虚函数在类中定义的先后顺序,但是一旦有重载虚函数,形势就变了。        gcc和vs对于这种情况的实现又不一样。这里只说vs。        vs对于有重载的虚函数,

2009-07-14 20:04:00 2451 1

原创 cegui优化

    前段时间抽空做了点cegui的优化,主要是内存消耗相关的。 基于序列化的目的引入的属性集虽然用起来确实很方便,但是也有自己的短板----相当的吃内存。加上cegui的字符串又是那么的庞大....    基本上一个最普通的Window窗口占用内存在7-8k左右,扩展一点的窗口达到10K很正常了,游戏中随便创建几个几千个小窗口也不足为奇。内存是相当的客观,这些都不算UI资源的占用----

2009-07-13 19:52:00 3114 3

原创 hook api的一点记录

    hook api方法不外乎有修改导入表和修改目标函数代码,让其调整到hook函数处执行。这里仅仅说下后者。‘    后者主要实现为:通过钩子将代码注入到目标进程(简单点就通过钩子加载dll的方式来hook;复杂点的话就使用创建远程线程的方式来进行),然后通过修改要注入的目标函数其实几个字节(一般来说是5个字节),替换为一个无条件跳转指令,让其跳转到目标函数来执行。    一

2009-07-11 21:01:00 1178

原创 咋这次安装就没有注册msdbg2.dll呢?

    同样的下载安装包,之前装了N次都没事,这次装了之后无法调试,提示你msdgb2.dll需要注册。在program/common files/microsoft shared/目录下有这个库。注册库(regsvr32)就好了。    真是郁闷,搞得我重装了2次还是这个样子,浪费时间,浪费感情。  

2009-07-11 20:40:00 1229

原创 迅雷新版界面看起来不错

    今天下载了最新版的迅雷,看起来不错,比以前看起来舒服,整个布局着色比较协调看来兄弟们还是做了点事情,至于功能就唔知了,也只是用来下载点东西而已,希望能再接再厉....  

2009-07-11 19:57:00 742

原创 process inject

#pragma comment(lib,"Shlwapi.lib")#pragma comment(lib,"ADVAPI32.LIB")#include #include #include #include #define INJECT_EXE   "explorer.exe"typedef struct _RPar{DWORD dwDel

2009-06-17 21:48:00 758

原创 获取进程的开始、结束时间

 基本思想是利用PSAPI EnumProcess  EnumDeviceDrivers枚举进程,然后EnumProcessModule获取进程的模块句柄列表,注意这里获取的模块非本进程地址空间数据,仅仅是个快照,无需你进行资源释放(closehandle)。不能调用GetModuleFileName,而需要调用PSAPI的GetModuleBaseName或者GetModuleInforma

2009-06-17 20:55:00 1809

原创 关于gdiplus使用

  http://www.codeproject.com/KB/GDI-plus/startinggdiplus.aspxgdiplus使用向导。补充一点:如果不是MFC程序,而是普通的Win32工程,需要包含

2009-06-04 15:10:00 805

原创 flicker-free

http://www.codeproject.com/KB/buttons/NoFlicker.aspx 基本原则:1、双缓冲2、WM_ERASEBKGND 取消默认的擦出处理3、ClipChildren(或者子窗体也处理WM_ERASEBKGND)

2009-06-02 15:10:00 774

原创 绘制透明按钮的另外一法

   前面有说两种方法都是通过bitblt光栅操作来实现位图的透明绘制。这里说的是利用alphablend来实现,获取要绘制的位图和背景位图,然后对每个像素执行alpha混合。可以从CButton派生一个子类,设置ownerdraw,然后在drawitem函数中首先备份背景图,然后获取要贴的图进行,之后就是进行混合了。   关键的是如何获取按钮的背景呢? drawitem的lpdr

2009-06-01 22:24:00 936

原创 关于BeginPath之后的问题

    试了下BeginPath EndPath之间进行GDI相关函数的调用构造一个dc相关的path,然后调用pathToRegion将path转换为region,发现总是转换失败,很奇怪。后来无意中发现,createFontIndirect创建一个字体对象,然后将其选入到dc中,之后在beginPath和endPath之间textout,最后调用pathToRegion就成功转换为一个regi

2009-05-31 22:02:00 2743

原创 VC FAQ

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2009-05-30 18:22:00 1330

原创 又犯了老错误... 自责一下

     项目里头存在一个ownerString,派生自std::basic_string,并且修改和扩展了一些东东。其中重写了basic_string的replace()方法。     在一个代码片段中使用ownerString::replace方法,居然编译提示错误,找不到函数原型,当时是看到basic_stirng中存在对应replace函数的,咋回事?     晕了半天,后来才发现

2009-05-28 19:50:00 607

原创 不规则区域窗口

下面是根据一副位图设置不规则窗体代码,自己参考 CDC* pDC=this->GetDC(); CDC memDC; CBitmap bmpMonkey; CBitmap* pOldMemBmp = NULL; COLORREF PixelColor,BackGroudColor; CRect cRect; int

2009-05-27 16:39:00 797

原创 创建掩码位图来实现透明绘图

    前面有篇文章讲到如何进行透明贴图,其实主要用在一些不规则控件UI的制作上面。那个用到的方法是制作一张掩码位图,然后利用BitBlt提供的一些光栅操作进行透明绘制。    有时候人家可能仅仅提供一张需要透明显示的位图,而并没有同步提供掩码位图,怎么办呢?非要人家提供或者我们自己制作一张? 太麻烦了,有没有简单的程序实现方法?本文将简单介绍下通过程序如果创建给定位图的掩码位图,然后绘制透明

2009-05-26 21:17:00 4851 1

原创 关于IsIconic函数

用MFC向导生成的基于对话框的程序中,默认的对话框OnPaint函数一般是如下代码行为:void CDynButtonDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM

2009-05-23 12:23:00 5939 5

原创 ListView相关问题汇总

1、给ListView关联一个Small ImageList后,会发现所有Item都会自动加上ImageList的第一个图标,而在添加Item的时候并没有指定LVIF_IAMGE和相应的ImageIndex。如何只在subItem显示图标呢?解决办法:在添加Item的时候带上LVIF_IMAGE掩码,并且将imageIndex设置为I_IMAGENONE或者I_IMAGECALLBACK,这个

2009-05-20 16:54:00 803

原创 位图透明绘制

    透明位图,通常用于控件的绘制。    比如一个按钮的4状态图,我们需要额外做一个掩码图用于裁剪,比如想做一个圆形按钮,我们做一个同样大小的按钮位图,其边角(要裁剪掉的地方)设置为黑色,其它设置为白色。一般出图可以将掩码图和状态图在同一张图中出。    实现很简单,利用BitBlt的掩码运算进行处理。简单代码片段如下:void CTransBmpDlg::loadRa

2009-05-13 19:24:00 773

原创 关于在vc6后续版本MFC程序中使用ActiveX组件

    看完季后赛第二轮火箭主场和湖人的比赛,意料中的又输了,虽然总是期待着火箭能做成黑马,创造奇迹。无事打开csdn看到有个tx提问说vs2003下面在MFC程序中使用wmp控件的问题,说啥vs2003 2005和以前的vc6不太相同了,于是就试了下,发现还真的是有些变化。    在vc6下面,直接在MFC工程中插入一个ActiveX组件,然后在为其建立一个控件类型成员的同时,MFC

2009-05-09 16:49:00 3026

空空如也

空空如也

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

TA关注的人

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