首页 > Windows开发 > 详细

WIN32开发下设置对话框左上角的图标

时间:2020-04-10 23:51:28      阅读:131      评论:0      收藏:0      [点我收藏+]

实现方法

通过LoadIcon函数加载图标,然后通过SendMessage给自身窗口的WM_SETICON消息发送加载好的图标资源
(注:MFC下专门封装的函数为SetIcon,本质就是发送消息实现)

SendMessage函数和LoadIcon函数介绍

1.函数原型


HICON WINAPI LoadIcon(
  _In_opt_  HINSTANCE hInstance,
  _In_      LPCTSTR lpIconName
);

LRESULT WINAPI SendMessage(
  _In_  HWND hWnd,
  _In_  UINT Msg,
  _In_  WPARAM wParam,
  _In_  LPARAM lParam
);

2.参数介绍(详细用法请参考MSDN)

hInstance : 资源句柄

lpIconName : 图标名称,需要把图标的ID通过MAKEINTRESOURCE这个宏转换一下

hWnd : 窗口句柄

Msg :目标消息类型

wParam :附加于消息信息

lParam : 附加于消息信息

3.返回值

HICON类型, 新加载图标的句柄,加载失败返回NULL

LRESULT类型,返回值指定消息处理的结果,取决于发送的消息

示例代码

备注:示例代码没有通过注册方式创建窗口,故需要自行通过VS添加窗口和图标资源

/*
 *     图标ID:IDI_ICON
 *
 */
#include <windows.h>
#include "resource.h"

HINSTANCE g_hInstance;

void OnInitDialog(HWND hwndDlg)
{
	HICON hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_ICON));
	SendMessage(hwndDlg, WM_SETICON, FALSE, (LPARAM)hIcon);
}

BOOL WINAPI MsgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_INITDIALOG:
		OnInitDialog(hwndDlg);
		break;
	case WM_CLOSE:
		EndDialog(hwndDlg, IDCANCEL);
		break;
	default:
		break;
	}
	return FALSE;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	g_hInstance = hInstance;
	DialogBox(hInstance, (LPCTSTR)IDD_MAIN_DLG, NULL, MsgProc);
	return 0;
}

WIN32开发下设置对话框左上角的图标

原文:https://www.cnblogs.com/veis/p/12676769.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!