在原始Win32中使用C设置按钮图标

菲利波·米歇莱蒂(Filippo Micheletti)

我正在使用带有纯C(无MCF)的原始Win32 API构建带有一些简单对话框的GUI。在其中一个对话框中,我想显示一个带有图标(小文件夹)而不是文本的按钮。

我准备了具有适当大小(16x16像素)的.ico文件,并按以下步骤进行操作:

  • 我已经在资源头文件中定义了图标资源:

     #define ICON_FOLDER 901
    
  • 我将名为folder.ico的图标放在资源脚本的同一文件夹中,并在其中加载了图标资源:

    ICON_FOLDER ICON "folder.ico"
    
  • 我在对应的对话框资源中定义了BS_ICON样式,定义了我的按钮MODEL_SEARCH也是在资源标题中定义的资源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则正确显示了资源相对应的图标

特雷弗·巴尔科姆(Trevor Balcom)

您应该将其传递GetModuleHandle(NULL)给LoadIcon的第一个参数。如果要加载标准Windows图标,则只想对第一个参数使用NULL。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档