C++:LoadIcon()函数

C++:LoadIcon()函数

1. 函数概述在C++的Windows编程中,LoadIcon()函数用于从指定的模块中加载图标资源。它是Windows API(应用程序编程接口)的一部分,主要用于图形用户界面(GUI)编程。这个函数返回一个图标句柄(HICON),可以用于设置窗口图标、在系统托盘显示图标等多种与图标相关的操作。

2. 函数原型及参数HICON LoadIcon(HINSTANCE hInstance, LPCTSTR lpIconName);

参数解释:

hInstance(HINSTANCE类型):

这是一个实例句柄,代表包含图标资源的模块。如果要加载应用程序本身包含的图标,通常可以使用WinMain函数中的hInstance参数。这个参数告诉函数去哪里寻找图标资源。例如,图标资源存储在应用程序的可执行文件(.exe)中,hInstance就指向这个可执行文件对应的模块。

除了应用程序自身的实例句柄,也可以是其他动态链接库(.dll)的实例句柄,这样就能够从外部库中加载图标资源。

lpIconName(LPCTSTR类型):

这是一个指向图标名称的指针。图标名称可以有两种形式:

资源标识符(整数值):在资源脚本文件(.rc文件)中,图标资源通常会被分配一个唯一的整数标识符。可以使用MAKEINTRESOURCE宏将这个整数标识符转换为LPCTSTR类型来作为参数。例如,如果有一个图标资源标识符为IDI_MAINICON,可以这样调用函数:LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAINICON));。

字符串名称:相对较少见,也可以是一个真正的字符串名称来指定图标。如果图标是通过字符串名称定义的,就直接将这个字符串的指针传递给lpIconName参数。

3. 返回值LoadIcon()函数返回一个HICON类型的图标句柄。

如果成功加载图标,返回的句柄可以用于后续的操作,比如设置窗口类(WNDCLASSEX)中的图标成员(hIcon和hIconSm)。

如果加载失败,函数返回NULL。这可能是因为指定的实例句柄无效、图标资源不存在或者其他资源相关的问题。

4. 使用示例以下是一个简单的示例,用于在创建窗口时加载图标:

#include

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

// 加载大图标

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAINICON));

// 加载小图标

wcex.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SMALLICON));

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);

wcex.lpszMenuName = NULL;

wcex.lpszClassName = "MyWindowClass";

if (!RegisterClassEx(&wcex))

{

return 0;

}

HWND hWnd = CreateWindow("MyWindowClass", "My Window",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, CW_USEDEFAULT,

NULL, NULL, hInstance, NULL);

ShowWindow(hWnd, iCmdShow);

UpdateWindow(hWnd);

MSG msg;

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message)

{

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}在这个示例中,WinMain函数首先填充WNDCLASSEX结构体。通过LoadIcon函数,使用hInstance(应用程序实例句柄)和通过MAKEINTRESOURCE宏转换后的图标资源标识符(IDI_MAINICON用于大图标,IDI_SMALLICON用于小图标)来加载图标。然后将加载得到的图标句柄赋值给wcex.hIcon和wcex.hIconSm,用于为窗口类设置图标。之后,在创建窗口并进入消息循环后,窗口就会显示相应的图标。

C++编程API库

C++:API(仅展示平时要用的)

C++:Win32 桌面应用程序

C++:WinMain()函数

C++:WNDCLASSEX 窗口类结构体

C++:LoadIcon()函数

C++:LoadCursor()函数

C++:RegisterClassEx()函数

C++:CreateWindowEx()函数

C++:ShowWindow()函数

C++:UpdateWindow()函数

C++:GetMessage()函数

C++:MSG 消息结构体

C++:TranslateMessage()函数

C++:DispatchMessage()函数

C++:WndProc()窗口过程函数

C++:GetModuleHandle()函数

C++:DestroyWindow()函数

C++:DefWindowProc()函数

C++:SendMessage()发送消息函数

C++:FindWindow()函数

C++:FindWindowEx()函数

C++:EnumWindows()函数

C++:EnumWindowsProc()函数

C++:GetWindowText()函数

C++:SetWindowText()函数

C++:GetDlgltem()取控件句柄函数

C++:GetDlgCtrllD()取控件ID函数

C++:GetDlgltemText()取对话框控件文本函数

C++:SetDlgltemText()设置对话框控件文本函数

C++:GetDlgltemlnt()取对话框控件整数函数

C++:SetDlgltemlnt()设置对话框控件的整数值函数

C++:DialogBox()模态对话框函数

C++:DialogBoxParam()创建模态对话框函数

C++:MessageBox()显示消息框函数

C++:DefDlgProc()对话框过程函数

C++:MessageBoxIndirect()显示消息框函数

C++:EndDialog()结束模态对话框函数

C++:OpenClipboard()打开剪贴板函数

C++:GetClipboardData()获取剪贴板数据函数

C++:SetClipboardData()设置剪贴板数据函数

相关推荐

garena怎么样
365现金app

garena怎么样

📅 10-16 👁️ 8066
手机在线课程app排行榜TOP10推荐
365bet线路检测中心

手机在线课程app排行榜TOP10推荐

📅 07-07 👁️ 2130
被小米打败的国际巨头,如今“躺赢”,年入1400亿,闷声发大财