标签: mfc-feature-pack

Microsoft Office 2010是否使用WPF,还是普通的MFC?

我已经使用WPF一段时间了,我正在尝试重现他们办公套件的一些漂亮的UI功能.虽然在WPF中很容易,但我想知道如何使用MFC功能包(我可能不得不使用它,因为我的公司还没有批准使用WPF).由于Fluent UI是在Office 2007中引入的,我想知道微软是否实际上在VS2010或Expression Blend之外的其他任何地方使用WPF,特别是在Office 2010中.我希望这个问题不是主题.

wpf mfc mfc-feature-pack office-2010

13
推荐指数
2
解决办法
6473
查看次数

更改CMFCToolbar中菜单按钮的图像

我有一个菜单按钮CMFCToolbar,我希望每次在菜单中选择不同的条目时替换按钮的位图,因为每个条目都有自己的图标.

我成功更改了图标,CMFCToolBarMenuButton::SetImage但它也改变了菜单项中的图标.太糟糕了.

alt text http://www.freeimagehosting.net/uploads/137269b0f2.jpg alt text http://www.freeimagehosting.net/uploads/879d03843a.jpg

这是一个代码示例:

if ( (pToolbar != NULL) && (idBase != 0) )
{
    int ixButtonToReplace                   = pToolbar->CommandToIndex(idBase);
    CMFCToolBarMenuButton* pBtnToReplace    = dynamic_cast<CMFCToolBarMenuButton*>
                                                (pToolbar->GetButton(ixButtonToReplace));
    if ( pBtnToReplace )
    {
        const CObList& listCommands = pBtnToReplace->GetCommands();
        POSITION pos                = listCommands.GetHeadPosition();
        while ( pos != NULL )
        {
            CMFCToolBarMenuButton* pItem = (CMFCToolBarMenuButton*) listCommands.GetNext(pos);
            if ( pItem && (pItem->m_nID == idButtonToReplaceWith) )
            {
                pBtnToReplace->SetImage(pItem->GetImage());
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

c++ mfc mfc-feature-pack

10
推荐指数
1
解决办法
3936
查看次数

MFC Feature Pack类菜单上的图标

菜单中有三个位置显示在新的MFC功能(Feature Pack)中:

  • 在菜单栏(CMFCMenuBar)中
  • 在弹出菜单中(CMFCPopupMenu)
  • 在CMFCButton的"下拉菜单"版本中

我想在所有菜单的菜单中加上图标(高色和透明).我找到了CFrameWndEx :: OnDrawMenuImage(),我可以使用它来自定义菜单栏项目前面的图标.这不是很方便,不得不在2008年实施图标绘制,但它确实有效.对于其他人,我还没有找到解决方案.是否有自动设置菜单图标的方法?

mfc mfc-feature-pack

8
推荐指数
1
解决办法
8173
查看次数

MS Ribbon/Office UI许可证值得担心吗?

想象一下,我想创建一个与MS Word 2007非常相似的应用程序,在VS2008中使用C++和MFC Feature Pack.对于功能区,我有3种选择:

  1. 使用MFC Feature Pack中的功能区而不获取许可证.
    从长远来看可能是狡猾的.在你的产品取得全球性成功之前,你可以做到这一点,此时MS Legal将发送重量级产品.但他们真的能做些什么吗?

  2. 使用MFC Feature Pack中的功能区,但尝试获取许可证.
    我相信如果我应该尝试注册Office UI许可证,我可能会被拒绝,因为它是一个竞争产品:

    该许可证适用于任何平台上的应用程序,但与直接与当前具有新UI(Microsoft Word,Excel,PowerPoint,Outlook和Access)的五个Office应用程序竞争的应用程序除外.

  3. 使用第三方功能区控件.
    如果我要从BCGSoft购买BCGControlBar库的许可证大约500英镑- 其功能区栏由MS在MFC功能包中使用 - 那么我可以在我的应用程序中使用功能区没有问题.

除非绝对必要,否则我不想花钱.如果我使用选项#1直到我讨厌它,那么我可以放弃它并去#3?会为时已晚吗?

当然以上所有都是假设的......;)


注意:我不关心与我的产品和Word之间的相似性有关的任何专利或版权,这只是一个例子.此问题仅涉及功能区许可方面.

ribbon mfc-feature-pack

6
推荐指数
1
解决办法
4714
查看次数

MFC 选项卡式文档 - 如何启用鼠标中键来关闭文档?

如果创建新的 MFC 应用程序(带有 MFC 功能包)并使用所有默认值,请单击“完成”。它使用新的“选项卡式文档”样式创建 MDI 应用程序。

替代文本

我认为这些都很棒,但令我烦恼的是我无法通过中键单击选项卡来关闭选项卡式文档窗口。

这在 Firefox、IE、Chrome 以及更重要的VS2008中都是可能的。但是单击选项卡上的中间按钮不会执行任何操作。

我不知道如何覆盖选项卡栏以允许我处理消息ON_WM_MBUTTONDOWN。有任何想法吗?

编辑:猜测我需要对从 CMDIFrameWndEx::GetMDITabs 返回的 CMFCTabCtrl 进行子类化...

mfc tabbed-document-interface mfc-feature-pack

6
推荐指数
1
解决办法
3085
查看次数

如何更改CDockablePane标题

如何在MFC功能部件包中强制刷新CDockablePane的标题?我正在使用选项卡式visual studio样式示例,我想更改选项卡的标题.

这些似乎在某处缓存,因为当我从默认值更改时,它会使用应用程序在之前运行时使用的内容.我在注册表中找不到与此相关的任何内容.

我正在修改字符串表IDS_FILE_VIEW和IDS_CLASS_VIEW以设置新标题.我已经步入CDockablePane :: CreateEx方法,lpszCaption参数确实包含新标题,但旧标题仍在使用中.

在隐藏窗格并再次显示之前,似乎不会加载新标题.这应该是一个暗示,但我无法弄清楚.

为什么它不会只使用我传递给CreateEx的标题???

mfc-feature-pack visual-studio-2008 visual-c++

6
推荐指数
1
解决办法
3626
查看次数

如何在CDockablePane中放置MFC CFormView?

如何将MFC CFormView放在VS 2008 MFC功能包中引入的CDockablePane中?

c++ mfc mfc-feature-pack

5
推荐指数
1
解决办法
8298
查看次数

如何将功能区菜单添加到现有MFC应用程序?

Microsoft Visual C++ 2008 Feature Pack具有功能区菜单支持.是否可以在未使用功能区菜单创建的现有MFC应用程序中使用它?

mfc ribbon mfc-feature-pack visual-c++

5
推荐指数
1
解决办法
6394
查看次数

是否可以使用alpha混合透明度创建CImageList?

如果可以创建具有alpha混合透明度的CImageList,我想知道.

创建具有丑陋透明度的CImageList的示例代码(无alpha混合)

CGdiPlusBitmapResource m_pBitmap;
m_pBitmap.Load(IDB_RIBBON_FILESMALL,_T("PNG"),AfxGetResourceHandle());

HBITMAP hBitmap;
m_pBitmap.m_pBitmap->GetHBITMAP(RGB(0,0,0),&hBitmap );

CImageList *pList=new CImageList;
CBitmap bm;
bm.Attach(hBitmap);
pList->Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 4);
pList->Add(&bm, RGB(255,0,255));
Run Code Online (Sandbox Code Playgroud)

c++ mfc image alphablending mfc-feature-pack

5
推荐指数
1
解决办法
4113
查看次数

MFC功能区 - 对齐问题

使用功能区创建标准应用程序,然后将其添加到适当位置的CMainFrame :: InitializeRibbon().

// Create panel

CMFCRibbonPanel* pMyPanel = pCategory->AddPanel(L"Test", m_PanelImages.ExtractIcon(27));

// Add wide combobox with short label to panel

m_pMyCombo = new CMFCRibbonComboBox(ID_MYCOMBO, false, 150, L"Short:");
m_pMyCombo->AddItem(L"Just some test data");
pMyPanel->Add(m_pMyCombo);

// Add narrow edit with longer label to panel.

CMFCRibbonEdit* pMyEdit = new CMFCRibbonEdit(ID_MYEDIT, 50, L"Longer label:");
pMyPanel->Add(pMyEdit);
Run Code Online (Sandbox Code Playgroud)

问题1:组合框"粘在"面板顶部.编辑控件"粘住"组合框.大约1/3的高度未使用.

有没有办法让这两个控件使用全高?我可以使用pMyPanel-> SetCenterColumnVert(); 但是2个控件仍然粘在一起,尽管它们现在是垂直居中的.我真正追求的是控件上方和下方的间距或多或少均匀.

问题2:这看起来像

Short: [______________________|v]
Longer label: [___]
Run Code Online (Sandbox Code Playgroud)

这真的不太好看.

我可以调用SetJustifyColums(),但这会导致

Short: [______________________|v]
Longer label: [___]
Run Code Online (Sandbox Code Playgroud)

这似乎还不错,但如果标签的长度反转,则会给出:

Longer label: [______________________|v]
Short: [___]
Run Code Online (Sandbox Code Playgroud)

哪个看起来不太好看.

我真的很想让你知道你通常会做一个对话.标签左对齐,控件左对齐.

Short: [______________________|v]
Longer label: [___] …
Run Code Online (Sandbox Code Playgroud)

mfc mfc-feature-pack

5
推荐指数
0
解决办法
351
查看次数