ATL的GUI程序设计
2006-07-22 22:54:31 来源:WEB开发网核心提示: atlbase.h在用ATL进行GUI程序设计的时候,就如同SDK中的windows.h一样重要,ATL的GUI程序设计(5),对于GUI程序设计的部分,这个文件中主要有这么几个值得关注的地方:Win32程序设计必备的头文件,无论你是使用它编写COM组件还是GUI程序,譬如,诸如windo
atlbase.h在用ATL进行GUI程序设计的时候,就如同SDK中的windows.h一样重要。对于GUI程序设计的部分,这个文件中主要有这么几个值得关注的地方:
- Win32程序设计必备的头文件,诸如windows.h、tchar.h等。
- CComModule的定义。对于GUI程序设计,我们可以将它简单地看作对HINSTANCE的一个封装。
- 一些简单的工具类。(请原谅我不能在这里提供给你它们具体的名字,因为ATL 3.0和ATL 7.0是不一样的。VC 6.0附带的是ATL 3.0,它的atlbase.h中主要提供了一些COM的智能指针和字符串,如CComPtr、CComBSTR等;而VS2003中的ATL 7.0中则附带了一些更有趣的类,比如CRegKey、CHandle等。)
下面接着说CComModule。相信你可以从它的类名称中看出来,这个类主要用来管理COM的各种信息。如果你深入到ATL的源代码之中,你可能会为它的众多成员与方法感觉到迷惑。其实在进行GUI程序设计的时候,你只需要关心以下这些内容:
- HRESULT CComModule::Init( _ATL_OBJMAP_ENTRY* p, HINSTANCE h, const GUID* plibid = NULL );
进行模块的初始化,第一个参数取NULL,第二个参数取应用程序的实例句柄,也就是WinMain中传入的hInstance。
- void CComModule::Term();
进行模块的卸载,在程序结束时调用。
- HINSTANCE CComModule::GetModuleInstance();
获取应用程序实例句柄CComModule::m_hInst。
- HINSTANCE CComModule::GetResourceInstance();
获取资源模块句柄CComModule::m_hInstResource,这个值在默认情况下是和CComModule::m_hInst一致的。如果你程序的所有资源位于一个DLL之中,那么你可以在初始化应用程序中将CComModule::m_hInstResource成员赋值为这个DLL的模块句柄。
接着说CComModule的实例_Module。可以说,这个全局变量贯穿于ATL整个框架的始终,无论你是使用它编写COM组件还是GUI程序。譬如,你可能不止一次地需要使用模块的实例句柄(LoadIcon、LoadCursor),那么你只需要这样调用:
[]
更多精彩
赞助商链接