MFC项目多版本软件图标共存问题

发布时间 2024-01-12 10:08:17作者: 快雪

在实际项目中,一套代码可能对应多个版本(定制),不同的版本显示不同的软件图标。如何修改软件图标?现将方法整理如下:

1.不同版本,在项目属性-》C/C++-》预处理器-》预处理器定义,定义各自的预编译开关。假如有三个项目,分别为:_OEM_A,_OEM_B,_STANDARD_。

2.在项目属性-》资源-》预处理器定义中添加各自对应的预编译开关。

3.添加资源ico至项目res路径下。

4.修改资源rc.2文件,添加如下代码,不同的版本对应不同的ico。

//切换ICON
#if defined(_OEM_A)
IDR_MAINFRAME           ICON                    "res\\A.ico"
#elif defined(_OEM_B)
IDR_MAINFRAME           ICON                    "res\\B.ico"
#else
IDR_MAINFRAME           ICON                    "res\\S.ico"
#endif

至此,图标已修改完毕。

 

PS:某些软件实现了“关于...”对话框,如果涉及图标修改,可将bmp格式图标添加至资源,然后新建对话框类,设置新的图标。在OnAppAbout,根据预编译开关,显示不同的对话框。如下所示:

// App command to run the dialog
void CXXXApp::OnAppAbout()
{
#ifdef _OEM_A
    CAboutBoxADlg aboutDlg;
#elif _OEM_B
    CAboutBoxBDlg aboutDlg;
#else
    CAboutDlg aboutDlg;
#endif

    aboutDlg.DoModal();
}