使用 C 和原始 Win32 设置按钮图标
Setting button icon using C with raw Win32
我正在使用原始 Win32 API 和纯 C(无 MCF)构建一个带有一些简单对话框的 GUI。
在其中一个对话框中,我想显示一个带有图标(一个小文件夹)而不是文本的按钮。
我准备了一个大小合适(16x16 像素)的 .ico 文件,然后进行如下操作:
我在资源 header 文件中定义了图标资源:
#define ICON_FOLDER 901
我已将名为 folder.ico 的图标放在资源脚本的同一文件夹中,并在其中加载了图标资源:
ICON_FOLDER ICON "folder.ico"
我已经在指定 BS_ICON
样式的相应对话框资源中定义了我的按钮(MODEL_SEARCH
也是在资源 header 中定义的资源 ID) :
CONTROL "", MODEL_SEARCH, "button", BS_PUSHBUTTON | BS_ICON | WS_TABSTOP | WS_VISIBLE | WS_CHILD, 300, 8, 18, 18
在 GUI 代码中,当构建包含按钮的对话框时,我尝试在对话框过程开始时加载图标,然后尝试在案例中设置图标 WM_INITDIALOG
分别使用以下两行代码:
HICON folderico=LoadIcon(NULL,MAKEINTRESOURCE(ICON_FOLDER));
和
SendMessage(GetDlgItem(hwnd,MODEL_SEARCH),BM_SETIMAGE, (WPARAM)IMAGE_ICON,(LPARAM)folderico);
不起作用,显示了 按钮但没有显示图标。
我尝试做一些更改,例如,如果我使用最后两行代码来设置一个默认图标,例如 IDI_APPLICATION
一个,对应于 IDI_APPLICATION
的图标资源已正确显示。
您应该将 GetModuleHandle(NULL)
传递给 LoadIcon 的第一个参数。如果您正在加载标准 Windows 图标,您只想对第一个参数使用 NULL。
我正在使用原始 Win32 API 和纯 C(无 MCF)构建一个带有一些简单对话框的 GUI。 在其中一个对话框中,我想显示一个带有图标(一个小文件夹)而不是文本的按钮。
我准备了一个大小合适(16x16 像素)的 .ico 文件,然后进行如下操作:
我在资源 header 文件中定义了图标资源:
#define ICON_FOLDER 901
我已将名为 folder.ico 的图标放在资源脚本的同一文件夹中,并在其中加载了图标资源:
ICON_FOLDER ICON "folder.ico"
我已经在指定
BS_ICON
样式的相应对话框资源中定义了我的按钮(MODEL_SEARCH
也是在资源 header 中定义的资源 ID) :CONTROL "", MODEL_SEARCH, "button", BS_PUSHBUTTON | BS_ICON | WS_TABSTOP | WS_VISIBLE | WS_CHILD, 300, 8, 18, 18
在 GUI 代码中,当构建包含按钮的对话框时,我尝试在对话框过程开始时加载图标,然后尝试在案例中设置图标
WM_INITDIALOG
分别使用以下两行代码:HICON folderico=LoadIcon(NULL,MAKEINTRESOURCE(ICON_FOLDER));
和
SendMessage(GetDlgItem(hwnd,MODEL_SEARCH),BM_SETIMAGE, (WPARAM)IMAGE_ICON,(LPARAM)folderico);
不起作用,显示了 按钮但没有显示图标。
我尝试做一些更改,例如,如果我使用最后两行代码来设置一个默认图标,例如 IDI_APPLICATION
一个,对应于 IDI_APPLICATION
的图标资源已正确显示。
您应该将 GetModuleHandle(NULL)
传递给 LoadIcon 的第一个参数。如果您正在加载标准 Windows 图标,您只想对第一个参数使用 NULL。