falla.zhang

导航

ATOM

网络转载

sdk中的ATOM到底是?
系统定义了一个叫做原子表的表(table),用来存储字符串和相关的定义.应用程序在原子表中可以放置字符串,并接收一个16位整数值(叫做原子,即atom),它可以用来提取该字符串.放在原子表中的字符串叫做原子的名字;

  MAKEINTRESOURCE是一个资源名转换的宏,
  VC的定义是(winuser.h):
  #define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
  #define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
  #ifdef UNICODE
  #define MAKEINTRESOURCE MAKEINTRESOURCEW
  #else
  #define MAKEINTRESOURCE MAKEINTRESOURCEA
  #endif // !UNICODE
  这个宏是把一个数字类型转换成指针类型的宏,它不存在释放的问题.
  用这个宏的主要原因是有的资源是用序号定义的,而不是字符串.所以要把数字转换成字符串指针,然后再传递给LoadResource之类的函数,这样才加载了资源.
  要释放资源(用LoadResource加载的)可以调用FreeResource函数把LoadResource返回的指针传递给FreeResource.
  MAKEINTRESOURCE 的作用:
  是把一个"数字形ID",转化为"字符串".但是执行前后,输入的数据的内容和长度是不变的!它只不过就是C语言里面"强制类型转换"而已.
  请看 Winuser.h 代码:
  #define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
  #define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
  #ifdef UNICODE
  #define MAKEINTRESOURCE MAKEINTRESOURCEW
  #else
  #define MAKEINTRESOURCE MAKEINTRESOURCEA
  #endif // !UNICODE
  现在,再来归纳它的用法.就用FindResource来说明.(这个函数与MFC的AfxFindResourceHandle)
  HRSRC FindResource(
  HMODULE hModule, // module handle
  LPCTSTR lpName, // resource name
  LPCTSTR lpType // resource type
  );
  就是lpName参数需要使用MAKEINTRESOURCE ,因为它需要LPCTSTR类型的参数输入.那么,情况就很清楚了.凡涉及"资源"的API或者MFC类,在参数类型为LPCTSTR时,就应该使用 MAKEINTRESOURCE.这是针对"资源名字"为"数字类型"时的情况.

函数功能:调入加速键表。该函数调入指定的加速键表。

函数原型:HACCEL LoadAccelerators(HINSTANCE hlnstance,LPCTSTR lpTableName);

参数:

hlnstance:模块的一个事例的句柄,该模块的可执行文件中包含将要调入的加速键表。

IpTableName:指向一个以空结尾的字符串的指针,该字符串包含了即将调入的加速键表的名字。另一种可选的方案是,该参数可以在加速键表资源的低位字中指定资源标识符,而高位字中全零。MADEINTRESOURCE宏可被用于创建该值。

返回值:若函数调用成功,则返回非零值。若函数调用失败,则返回值为零。若要获得更多的错误信息,可以调用GetLastError函数。

备注:若加速键表尚未装入,该函数可从指定的可执行文件中将它装入。从资源中装入的加速键表,在程序结束时可自动释放。Windows CE:资源不被拷贝到RAM中,因而不能被修改。

posted on 2010-01-29 17:26  falla.zhang  阅读(579)  评论(0编辑  收藏  举报