VC++程序启动画面会先看到MainFrame先闪一下再消失的问题解法

本文介绍了一种解决VC++应用程序中启动画面闪烁的方法。通过调整程序代码,在ProcessShellCommand中设置m_nCmdShow为false,避免了主程序框架在显示启动画面前短暂出现的情况。

            今天用VC++做一个程序,使用modeless 对话框来显示程序启动画面。 发现运行时总是会先闪一下主程序框架,再消失(因为我在InitInstance之后将ShowWindow的参数改为SW_HIDE).

      在PreCreateWindow里面修改cs 的style无效:

        cs.style&=~WS_VISIBLE.

      无奈之下,使用单步发现是因为在ProcessShellCommand里面会去创建MainFrame 的窗口,然后根据APP的成员

m_nCmdShow的值去显示窗口。所以Hide window的代码加在ProcessShellCommand之后的话,就会变成先 显示窗口->隐藏窗口的暂态.


     So,解法来了,就是在ProcessShellCommand把m_nCmdShow置为false咯.  问题搞定.


     唉,不搞VC很多年啊.

在 MFC 程序中更换应用程序图标,涉及主框架窗口的图标和执行文件的图标。以下是一个完整的操作流程: ### 更换主框架窗口图标 1. **删除默认图标资源** 在 Visual C++ 的开发环境中,打开工程并切换到 `ResourceView` 标签页。找到 ID 为 `IDR_MAINFRAME` 的图标资源,并按下 Delete 键将其删除。 2. **导入新的图标资源** 从菜单栏选择 `Insert -> Resource`,然后选择 `Icon` 类型。可以新建一个图标或导入现有的 `.ico` 文件。 3. **修改新图标的资源 ID** 如果是 MDI(多文档界面)程序,则将新图标的资源 ID 改为 `AFX_IDI_STD_MDIFRAME`;如果是 SDI(单文档界面)程序,则改为 `AFX_IDI_STD_FRAME`。这些 ID 是 MFC 框架预定义的标识符,用于指定主框架窗口的图标[^1]。 4. **重新编译运行程序** 编译整个项目后运行程序,此时主框架窗口的标题栏图标会显示为你新导入的图标。 ### 更换执行文件图标 除了更改主框架窗口的图标外,还需要设置应用程序的可执行文件(`.exe` 文件)图标。 1. **添加自定义图标资源** 右键点击 `ResourceView` 中的 `Icon` 文件夹,选择 `Add Resource -> Import`,然后从 `res` 文件夹中导入所需的 `.ico` 文件。 2. **更改图标资源 ID** 新导入的图标默认资源 ID 为 `IDI_ICON1`,可以右键点击该图标并选择属性,将其更改为其他 ID,例如 `IDI_PLAY` 或者其他自定义标识符[^2]。 3. **修改应用程序图标关联** 在代码中,通常需要通过资源 ID 来指定应用程序使用的图标。例如,在框架类或初始化函数中使用 `LoadIcon` 函数加载特定的图标资源: ```cpp m_hIcon = AfxGetApp()->LoadIcon(IDI_PLAY); // 加载自定义图标 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 ``` 4. **更新.rc文件以确保正确显示** 确保 `.rc` 文件中包含了正确的图标资源定义,如下所示: ```cpp #define IDR_ICONTETYPE 129 // 文档类型图标 #define IDI_ICON1 130 // 自定义图标 1 #define IDI_ICON2 131 // 自定义图标 2 ``` 这些宏定义确保了资源编辑器能够识别和引用对应的图标资源[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值