[BCG]属性页对话框删除"上一步"..."帮助"等4个按钮

本文介绍如何在BCG属性页对话框中移除常用按钮并调整窗口大小的方法。通过覆盖OnInitDialog()函数,禁用和隐藏了上一步、下一步、帮助和应用等按钮,并实现了窗口尺寸的自定义调整。

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.youkuaiyun.com/humanking7/article/details/52590434


紧接着[BCG]如何建立一个BCG属性页对话框

属性表单PropertySheet中,去除上一步下一步帮助应用四个按钮,并调整窗口大小的办法。

给属性表单实现虚函数-OnInitDialog()

我的属性表单类是 QFXMainPpSheet .
pic1
pic2

添加后的代码:

BOOL QFXMainPpSheet::OnInitDialog()
{
    BOOL bResult = CBCGPPropertySheet::OnInitDialog();

    // TODO:  在此添加您的专用代码

    return bResult;
}

添加好了,就要实现自己的代码了。

核心代码

BOOL QFXMainPpSheet::OnInitDialog()
{
    BOOL bResult = CBCGPPropertySheet::OnInitDialog();

    // TODO:  在此添加您的专用代码

    //禁用 4 Button
    GetDlgItem(IDOK)->EnableWindow(FALSE);
    GetDlgItem(IDCANCEL)->EnableWindow(FALSE);
    GetDlgItem(ID_APPLY_NOW)->EnableWindow(FALSE);
    GetDlgItem(IDHELP)->EnableWindow(FALSE);

    //隐藏 4 Button
    GetDlgItem(IDOK)->ShowWindow(SW_HIDE);
    GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);
    GetDlgItem(ID_APPLY_NOW)->ShowWindow(SW_HIDE);
    GetDlgItem(IDHELP)->ShowWindow(SW_HIDE);

    //调整窗体大小
    CRect btnRect;
    CRect wdnRect;
    GetDlgItem(IDCANCEL)->GetWindowRect(&btnRect);
    GetWindowRect(&wdnRect);    
    ::SetWindowPos(this->m_hWnd, HWND_TOP, 0,0,wdnRect.Width(),wdnRect.Height() - btnRect.Height()-10, SWP_NOMOVE | SWP_NOZORDER); 


    return bResult;
}

效果展示

透明效果不一样是因为后者用了win7的Aero效果。

1.原先效果

pic3

2.取消后效果

pic4


donate

<think>我们正在处理一个关于BCG资源文件缺失的问题。用户提到在资源文件中存在l.chs\bcgcontrolbar.rc(中文简体版本),但缺少l.eng\bcgcontrolbar.rc(英文版本)。我们需要解决如何添加或生成英文版本的资源文件。 通常,BCGControlBar库(一个用于MFC的界面库)的资源文件位于不同的语言子目录中。如果缺少英文资源文件,我们可以考虑以下步骤: 1. 检查BCGControlBar的安装目录,确认是否真的缺少英文资源文件。有时可能只是项目配置中没有包含。 2. 如果确实缺少,我们可以复制现有的中文资源文件,然后将其翻译成英文。 3. 或者,从BCGControlBar的完整版本中获取英文资源文件。 具体步骤: 步骤1:确认资源文件结构 在BCGControlBar的资源目录中,通常会有多个语言子目录,如l.eng(英文)、l.chs(中文简体)等。每个子目录下都有对应的.rc文件。 步骤2:复制和翻译 如果缺少l.eng\bcgcontrolbar.rc,我们可以将l.chs\bcgcontrolbar.rc复制到l.eng目录下(如果没有l.eng目录则创建),然后将其中的字符串资源翻译成英文。 步骤3:使用BCGControlBar提供的工具 BCGControlBar可能提供资源编辑工具或本地化工具,我们可以使用这些工具来创建英文资源。 步骤4:在项目中包含英文资源 在项目的资源文件中,确保包含了英文版本的资源。通常,BCGControlBar会根据当前系统的语言自动加载对应的资源。如果系统语言是英文,它会尝试从l.eng目录加载。 步骤5:重新编译 重新编译项目,确保没有资源相关的错误。 详细操作: 1. 创建目录:在资源文件目录下,创建`l.eng`子目录。 2. 复制文件:将`l.chs\bcgcontrolbar.rc`复制到`l.eng`目录中。 3. 翻译资源:用文本编辑器或Visual Studio的资源编辑器打开`l.eng\bcgcontrolbar.rc`,将其中所有的中文字符串翻译成英文。注意不要改变资源ID。 4. 如果项目中有多个资源文件(如bcgcontrolbar.rc2等),也需要进行同样的操作。 5. 在项目的资源文件(.rc)中,确保有类似以下的代码,用于包含BCGControlBar的资源: ``` #include "BCGCBPro.rc" ``` 而`BCGCBPro.rc`中会根据预处理器定义的语言宏来包含对应语言目录下的资源。例如: ``` #if defined _BCGCBPRO_STATIC_ #ifndef _BCGCB_RESOURCE_ #define _BCGCB_RESOURCE_ #endif #endif #ifdef _BCGCB_RESOURCE_ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT #if _MSC_VER >= 1000 #pragma code_page(1252) #endif #include "res\\BCGCBPro.rc2" // 标准资源 #if !defined _AFX_NO_SPLITTER_RESOURCES #include "res\\BCGProExtSplitter.rc2" // 分隔条资源 #endif #if !defined _AFX_NO_RBCG_TOOLBAR_RESOURCES #include "res\\BCGProToolbar.rc2" // 工具栏资源 #endif #include "l.eng\\bcgcontrolbar.rc" // 英文资源 #endif ``` 注意:上面的代码中,最后一行包含的是`l.eng\\bcgcontrolbar.rc`,这就是我们刚刚复制的文件。 6. 如果项目中已经包含了中文资源,我们需要确保在英文环境下使用英文资源,可以通过设置宏定义或修改资源包含逻辑来实现。通常,BCGControlBar会根据当前系统的语言自动选择,但如果没有对应语言的资源,它会使用默认(可能是英文)或第一个找到的资源。因此,添加英文资源后,系统在英文环境下就会使用英文资源。 7. 重新编译整个解决方案。 注意事项: - 翻译资源文件时,注意不要改动资源ID,只改动字符串内容。 - 如果资源文件中有对话框资源,需要调整对话框布局以适应英文文本(因为英文文本长度可能不同)。 如果用户没有英文资源文件,也可以尝试从BCGControlBar的官方示例或完整安装包中获取。 如果上述方法不可行,用户可能需要联系BCGSoft的技术支持或查找更完整的BCGControlBar安装包。 相关问题: 1. 如何为BCGControlBar添加其他语言支持? 2.MFC项目中如何管理多语言资源? 3. 如何修改BCGControlBar的对话框资源? 4. 如何避免在资源翻译过程中出现乱码?</think>### 解决BCG资源文件缺少英文版本的方法 当BCGControlBar资源文件中存在`l.chs\bcgcontrolbar.rc`(中文资源)但缺少`l.eng\bcgcontrolbar.rc`(英文资源)时,可通过以下步骤解决: #### 方法1:手动创建英文资源文件 1. **复制现有资源文件** 将中文资源文件复制为英文版本: ```bash cp l.chs/bcgcontrolbar.rc l.eng/bcgcontrolbar.rc ``` 2. **翻译资源内容** 用文本编辑器(如VS Code)打开`l.eng\bcgcontrolbar.rc`,将所有中文字符串翻译为英文。例如: ```rc // 原中文内容 STRINGTABLE BEGIN ID_FILE_NEW "新建(&N)" END // 改为英文 STRINGTABLE BEGIN ID_FILE_NEW "New(&N)" END ``` 3. **更新资源编码** 在文件顶部添加英文编码声明: ```rc #pragma code_page(1252) // 英文Windows代码页 ``` #### 方法2:使用BCGSoft资源工具 1. **下载BCG资源生成器** 从[BCGSoft官网](https://www.bcgsoft.com)获取资源工具(如BCGCBRes.exe)[^1]。 2. **生成英文资源** 运行命令生成默认英文资源: ```bash BCGCBRes.exe -lang 1033 -out l.eng\bcgcontrolbar.rc ``` #### 方法3:修改项目配置 1. **添加资源包含路径** 在项目属性中添加英文资源路径: ```rc #include "l.eng\bcgcontrolbar.rc" // 手动添加包含 ``` 2. **设置备用资源** 在`BCGCBPro.rc`中添加备用逻辑: ```rc #if !defined(__ENGLISH_RES__) #include "l.chs\bcgcontrolbar.rc" // 默认中文 #else #include "l.eng\bcgcontrolbar.rc" // 英文覆盖 #endif ``` #### 验证步骤 1. 编译时添加英文宏定义: ```bash msbuild /p:DefineConstants="__ENGLISH_RES__" ``` 2. 检查资源加载情况: ```cpp // 调试代码验证资源加载 CString str; str.LoadString(ID_FILE_NEW); // 应显示"New"而非"新建" ``` > **注意事项** > - 翻译时保留所有资源ID(如`ID_FILE_NEW`)不变 > - 对话框资源需调整控件尺寸适应英文文本长度 > - 若需完整资源包,可从[BCGSoft GitHub仓库](https://github.com/bcgsoft)获取官方模板[^2] --- ### 相关问题 1. 如何为BCGControlBar添加新的语言支持(如法语)? 2. 在多语言项目中如何动态切换BCGControlBar的界面语言? 3. 翻译资源文件时有哪些常见的本地化陷阱需要避免? 4. BCGControlBar的`.rc`文件与标准MFC资源文件有何区别? [^1]: BCGSoft资源工具文档: https://docs.bcgsoft.com/bcgcontrolbar-resource-tool [^2]: BCG官方资源仓库: https://github.com/bcgsoft/BCGControlBar/tree/master/Resources
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值