vc获取系统的图标(icon)

      大家知道,很多Windows程序都使用MessageBox()来显示一个对话框给用户以提示,只要在这个API函数的一个参数中使用MB_ICONQUESTION标志,便可以在MessageBox的对话框中显示问号图标。如果用不同的标志,对话框便可以显示不同的图标。与Windows以前的老版本相比,Windows 2000以及Windows XP中的图标越来越好看,种类也越来越多。

      前段时间, 做的项目中对界面进行了重写,在基本完工的时候发现MessageBox()的风格和开发的程序非常不协调,所以打算使用自定义对话框来替代MessageBox(), 要和MessageBox()产生一样的效果, 在如何调用系统图标上遇到了问题, Google了半天找到了.

      MessageBox()使用的图标在系统中都是通过IDI_X来标识的,如MB_ICONQUESTION可以使用IDI_QUESTION来获取.

#ifndef NOICONS

// begin_r_winuser
/*

* Standard Icon IDs
*/
#ifdef RC_INVOKED
#define IDI_APPLICATION 32512
#define IDI_HAND 32513
#define IDI_QUESTION 32514
#define IDI_EXCLAMATION 32515
#define IDI_ASTERISK 32516
#if(WINVER >= 0x0400)
#define IDI_WINLOGO 32517
#endif /* WINVER >= 0x0400 */
#else
#define IDI_APPLICATION MAKEINTRESOURCE(32512)
#define IDI_HAND MAKEINTRESOURCE(32513)
#define IDI_QUESTION MAKEINTRESOURCE(32514)
#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
#define IDI_ASTERISK MAKEINTRESOURCE(32516)
#if(WINVER >= 0x0400)
#define IDI_WINLOGO MAKEINTRESOURCE(32517)
#endif /* WINVER >= 0x0400 */
#endif /* RC_INVOKED */

#if(WINVER >= 0x0400)
#define IDI_WARNING IDI_EXCLAMATION
#define IDI_ERROR IDI_HAND
#define IDI_INFORMATION IDI_ASTERISK
#endif /* WINVER >= 0x0400 */

// end_r_winuser

#endif /* !NOICONS */

下面使用LoadIcon和DrawIcon来绘制图标了,就不多说了

posted @ 2011-10-27 13:42  likebeta  阅读(4128)  评论(0编辑  收藏  举报