关于WINDOWS编程的几个基本问题(困扰已久) hInstance作用是用来区分是EXE还是DLLm_hThread是线程句柄 m_hInstance是实例句柄。区别看名子就知道。pWnd是为你的调用准备的,hWnd是为Windows准备的。它们都是指针。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充一下:千万别把窗口句柄当指针,它和指针是完全不同的。 对于指针,他的内容是地址,如果你不去改变它,那么他指的地址就不会变,而句柄是标识了一个对象,对象的内存地址是可以变的,并且由于Windows动态管理内存的缘故,对象的内存地址是经常在变的,单通过句柄可以向用户进程隐藏这种改变,你使用句柄的时候根本不用考虑这个实时。 #ifdef STRICTtypedef void *HANDLE;#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name#elsetypedef PVOID HANDLE;#define DECLARE_HANDLE(name) typedef HANDLE name#endiftypedef HANDLE *PHANDLE;以上代码摘自Winnt.h,HANDLE的确是指针,只是不让我们用。 怎样提高vc6.0的编译速度 DLL头文件引起的编译问题 菜鸟问题:Runtime Error DrawText 背景透明 用ole将word嵌入到程序中,并划好了按钮,下一步想通过按钮控制这个嵌入的word,请教各位前辈 combobox的内容修改问题 我使用字体对话框,GetLogFont(&logfont)的问题 请大家帮帮忙,急!!!在线等待!! 如果创建和使用DLL MFC显示bmp图片,并通过按钮放大、缩小、移动 在网页上填的东西是怎样送给服务器的? CRecordset的问题
对于指针,他的内容是地址,如果你不去改变它,那么他指的地址就不会变,而句柄是标识了一个对象,对象的内存地址是可以变的,并且由于Windows动态管理内存的缘故,对象的内存地址是经常在变的,单通过句柄可以向用户进程隐藏这种改变,你使用句柄的时候根本不用考虑这个实时。
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;以上代码摘自Winnt.h,HANDLE的确是指针,只是不让我们用。