更新 VisualFC 0.82 使其正确列举出所有菜单项 ID

更新 VisualFC 0.82 使其正确列举出所有菜单项 ID

VisualFC 一个非常不错的 WTL 编程辅助工具,能大大降低你的一些重复劳动,提高效率。

WTL ClassWizard: Message Notify Command DialogResize DDX/DDV UpdateUI DialogFont

WTL AppWizard: Generic AppWizard for WTL Project (for VS60/2003/2005/2008)

WinxGUI ClassWizard: Event Notify Command DialogResize DDX/DDV UpdateUI DialogFont

大家可以访问 http://code.google.com/p/visualfc/ 

How to get help?

visualfc bolg : http://blog.csdn.net/visualfc/

最近,正在学习 WTL GUI 编程,用了VisualFC 0.82, 感觉功能很实用。

但使用中发现,美中不足的是,VisualFC 0.82 不能列举出包含在弹出菜单中子弹出菜单中菜单项 ID。


如下图  File 菜单下 Encoding 子弹出菜单中 菜单项


好在 ViualFC 是开源项目,在发送求救邮件到 visualfc@gmail.com 后无回应后,我们可以自行更新源代码,改善不足。

具体修改如下:

1, ClassWizard\VFC_Core\resources\ResMenu.cpp ResMenu.h 增加如下函数

void CResMenu::ListMenuItem( CAtlArray< ResMenuItem > & arrayMenuItem )
{
	for( size_t i = 0; i < m_vItems.GetCount(); ++i )
	{
		ResMenuItem newitem = m_vItems.GetAt(i);
		if ( ! newitem.m_ID.IsEmpty() )
		{
			arrayMenuItem.Add( newitem );
		}
	}

	for( size_t j = 0; j < m_SubMenus.GetCount(); ++j )
	{
		CResMenu subMenu = m_SubMenus.GetAt(j);
		subMenu.ListMenuItem( arrayMenuItem );
	}
}
2,修改 ClassWizard\VFC_Core\codeparser.h  中的 class codeparser

	template <typename FUNC>
	bool EnumResMenuItem(const CResMenu * menu, FUNC & Process)
	{
		CResMenu * pMenu = ( CResMenu * ) menu;
		CAtlArray< ResMenuItem > arrayMenuItem;
		pMenu->ListMenuItem( arrayMenuItem );
		for( size_t i = 0; i < arrayMenuItem.GetCount(); ++i )
		{
			Process( & arrayMenuItem.GetAt(i) );
		}
		return true;
	}
然后重新编译(我用的是 VC2003 + WTL81 ), 用得到的新 VFC_Core.dll 替换旧的。

好了,工作正常。 


我把更新后的 VisualFC 上传到 https://github.com/ywx/VisualFC 欢迎批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值