WEB开发网
开发学院软件开发VC ATL的GUI程序设计 阅读

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程序设计的部分,这个文件中主要有这么几个值得关注的地方:

  1. Win32程序设计必备的头文件,诸如windows.h、tchar.h等。
  2. CComModule的定义。对于GUI程序设计,我们可以将它简单地看作对HINSTANCE的一个封装。
  3. 一些简单的工具类。(请原谅我不能在这里提供给你它们具体的名字,因为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程序设计的时候,你只需要关心以下这些内容:

  1. HRESULT CComModule::Init( _ATL_OBJMAP_ENTRY* p, HINSTANCE h, const GUID* plibid = NULL );

    进行模块的初始化,第一个参数取NULL,第二个参数取应用程序的实例句柄,也就是WinMain中传入的hInstance。

  2. void CComModule::Term();

    进行模块的卸载,在程序结束时调用。

  3. HINSTANCE CComModule::GetModuleInstance();

    获取应用程序实例句柄CComModule::m_hInst。

  4. HINSTANCE CComModule::GetResourceInstance();

    获取资源模块句柄CComModule::m_hInstResource,这个值在默认情况下是和CComModule::m_hInst一致的。如果你程序的所有资源位于一个DLL之中,那么你可以在初始化应用程序中将CComModule::m_hInstResource成员赋值为这个DLL的模块句柄。

接着说CComModule的实例_Module。可以说,这个全局变量贯穿于ATL整个框架的始终,无论你是使用它编写COM组件还是GUI程序。譬如,你可能不止一次地需要使用模块的实例句柄(LoadIcon、LoadCursor),那么你只需要这样调用:

上一页  1 2 3 4 5 6  下一页

Tags:ATL GUI 程序设计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接