C++如何使用CWnd*对象加载图像

C++ How to use CWnd * object to load images?

本文关键字:对象 加载 图像 CWnd 何使用 C++      更新时间:2023-10-16

我是C++的新手,我需要编辑C++软件。我需要用图像图标替换GUI按钮图形。我不确定,但也许按钮是在这部分代码中创建的:

BOOL CButtonDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetDlgItemText(IDC_BUTTON_LOAD,_T("Load"));
return TRUE;
}

当我查看代码时,我看到按钮启用了这样一个代码:

m_dButtondlg.GetDlgItem(IDC_BUTTON_LOAD)->EnableWindow(true);

其中,IDC_BUTTON_LOAD是整数常量。我在代码中找不到常量的任何其他用法,所以我不确定按钮是如何创建的。我只知道

 m_dButtondlg.GetDlgItem(IDC_BUTTON_LOAD) 

返回指向CWnd 的指针

如何使用CWnd对象将图像附加到按钮?

编辑:我发现,用IDC_button_LOAD标识的按钮是CDIalog派生类的实例,而不是CButton。

最好的方法是将CWnd指针转换为CButton,如下所示,

CButton * DlgButton = (CButton*)GetDlgItem(IDC_BUTTON_LOAD);

您可以轻松地将图像加载到CButton对象上。

编辑

在CButton、上加载位图的代码

   CButton * DlgButton = (CButton*)GetDlgItem(IDC_BUTTON_LOAD);
   DlgButton->ModifyStyle( 0, BS_ICON );
   HICON hIcn= (HICON)LoadImage(
        AfxGetApp()->m_hInstance,
  MAKEINTRESOURCE(IDI_ICON3),
        IMAGE_ICON,
        0,0, // use actual size
        LR_DEFAULTCOLOR
    );
    DlgButton->SetIcon( hIcn );