转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx

手头上有个东西要用到单文档,由于想省事,直接用VS2010做了。刚生成的代码直接编译后会有Output、Property、Workspace和我们主程序的CxxView窗口。并且在WorkSpace窗口中添加了了树控件,在Workspace窗口中预添加了两个属性页(类视图和文件视图)。感觉ms做的比较周到,但我不需要这么多窗口,只好把某些窗口注释掉。

1、去掉窗口(使用)。在“MainFrm.h”中找到相应窗口对象的定义,将他们注释掉,注释后的Output 和 Property 窗口的定义如下:

..........

// COutputWnd        m_wndOutput; //去掉输出窗口, 2010.06.07
// CPropertiesWnd    m_wndProperties;//去掉属性窗口, 2010.06.07

..........

然后再通过搜索,将所有含有 m_wndOutput 和 m_wndProperties  的代码段注释掉:

“MainFrm.cpp”中

..........

//去掉输出窗口, 2010.06.07
 
 //去掉属性窗口, 2010.06.07

..............

//去掉输出窗口, 2010.06.07

//去掉属性窗口, 2010.06.07

..........

//去掉输出窗口, 2010.06.07

//去掉属性窗口, 2010.06.07

...............

// m_wndOutput.UpdateFonts();//去掉输出窗口, 2010.06.07

...............

将上述代码注释掉后再运行,就会发现单文档中没有了输出窗口和属性窗口。

2、修改Workspace窗口。

1)修改属性页名字。由于预生成的两个属性页的名字是以字符串资源形式存在工程中的,因此只需将相应资源改为我们想用的名字即可。

在资源窗口中,打开String table 选项,将相应的“类视图”和“文件视图”对应的字符串资源修改为我们想要的字符串即可。

2)修改树控件。vs2010为我们预添加了许多“树项”,我们需要将其注释掉或修改为自己的项名。

要注释掉的代码在ClassView.cpp中:

void CClassView::FillClassView()
{
 HTREEITEM hRoot = m_wndClassView.InsertItem(_T("控制器"), 0, 0);//要保留的我定义的一个树项
 m_wndClassView.SetItemState(hRoot, TVIS_BOLD, TVIS_BOLD);

}

3)使树项响应鼠标单击事件。直接生成的树控件中仅能实现鼠标单击选中、打开、折叠树项的功能,而不受我们的控制,我尝试在CTreeView中添加WM_LBUTTONDOWN消息,发现只能响应树中空白处的单击,而一旦单击了某项就没有反应。因此我在NM_CLICK消息中添加了如下代码,终于实现了控制树控件中鼠标单击事件响应的目的。以下是单击后改变项的名称的例子:

void CViewTree::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
 // TODO: Add your control notification handler code here
 //测试
 //AfxMessageBox(_T("CViewTree::OnLButtonUp"));

// 获取当前选择的项
 CTreeCtrl* pTreeCtrl = this;
 CPoint ptCurSel(0,0);
 TVHITTESTINFO HitTestInfo;
 // 通过鼠标在客户区中的位置
 GetCursorPos(&ptCurSel);
 pTreeCtrl->ScreenToClient(&ptCurSel);  
 // 获取当前选择的是哪一项
 HitTestInfo.pt = ptCurSel;  
 HTREEITEM hSelect = pTreeCtrl->HitTest(&HitTestInfo);
 
 if(hSelect != NULL)
 {
  CString strItem = pTreeCtrl->GetItemText(hSelect);
  ::AfxMessageBox( strItem);
 }
 // 设置该项为选中状态
 pTreeCtrl->SelectItem(hSelect);
  
 //以下方法获取的是上一次处于选中状态的项首先将点击的对象选中
 CTreeCtrl* pTreeCtrl = this;
 HTREEITEM hSelect = pTreeCtrl->GetSelectedItem();
 HTREEITEM hLight = pTreeCtrl->GetDropHilightItem();
 if((hLight != NULL) && (hSelect != hLight))
  hSelect = hLight;
 if(hSelect   ==   NULL)
  return;
 pTreeCtrl->SelectItem(hSelect);

//编辑当前选中对象名称
 pTreeCtrl->EditLabel(hSelect);
 if( NULL != hSelect )
 {
  CString strItem = pTreeCtrl->GetItemText(hSelect);
  if(strItem == _T("控制器"));
  {
   pTreeCtrl->SetItemText(hSelect, _T("改变后的控制器"));
  }
  ::AfxMessageBox( strItem); 
 }

*pResult = 0;
}

【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应的更多相关文章

  1. MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误

    今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目 ...

  2. VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)

    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html   上一讲中讲了VS20 ...

  3. 使用jsdoc-toolkit来自动生成js api文档

    近来前端组小盆友开发的类库越来越多,很多情况下彼此不知道写了些什么方法,为了更好的合作提高工作效率,找了个比较好的api文档生成方法.使用jsdoc-toolkit来自动生成js api文档. 一.  ...

  4. Go学习笔记(六) | 使用swaggo自动生成Restful API文档(转)

    关于Swaggo 或许你使用过Swagger, 而 swaggo就是代替了你手动编写yaml的部分.只要通过一个命令就可以将注释转换成文档,这让我们可以更加专注于代码. 目前swaggo主要实现了sw ...

  5. Golang使用swaggo自动生成Restful API文档

    #关于Swaggo 相信很多程序猿和我一样不喜欢写API文档.写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全.但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至 ...

  6. Spring MVC学习总结(9)——Spring MVC整合swagger自动生成api接口文档

    Swagger 号称:世界最流行的API框架,官网:http://swagger.io/,Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总 ...

  7. C# 自动生成代码API文档

    暂时没学会正规的转载style临时记录一下 NET中的规范标准注释(一) -- XML注释标签讲解 http://www.cnblogs.com/mq0036/p/3544264.html NET中的 ...

  8. 插件式WebApi服务及自动生成Api帮助文档

    上一篇博客中,讲到了将WebApi Host到控制台和IIS,本篇总结一下如何将WebApi的Service以插件的形式进行动态部署,并设置Hoster的首页显示Api帮助文档,当然,也包括动态部署进 ...

  9. 利用ShowDoc自动生成api接口文档

    最近在做新项目,感觉写完一个接口 还要去再写一遍api文档 挺浪费时间的,所以借用ShowDoc的api开放功能 自动生成api文档. 首先 去 https://www.showdoc.cc/ 注册一 ...

随机推荐

  1. lua面试基础知识

    1.lua中八种基础类型:nil(空),boolean(布尔),number(数字),string(字符串),userdata(自定义类型),function(函数),thread(线程),table ...

  2. 修复 Firefox 下本地使用 Bootstrap 3 时 glyphicon 不显示问题

    本地开发使用 Firefox 调试,遇到了 glyphicon 图标不显示的问题,期初以为是路径问题,搜索一大圈后找到了答案,原来这是一个安全性的问题,于是问题就好办了,解决方案如下: 1. 在Fir ...

  3. [OC笔记]我的第一个OC程序

    这是我第一个OC程序,详情都写在了注释里面,讲的是Student和Book这两个类的创建和使用.(是不是觉得student这个类在各种语言入门代码里经常出现呢?真实有爱) 看完这些,你会发现,咱们其实 ...

  4. LLVM example for main

    #include "llvm/IR/CallSite.h" #include "llvm/IR/Instruction.h" #include "ll ...

  5. 网站fail_over测试(障害测试)

    确认Web和DB进行操作: 一:确认web: ①确认进程是否存在: ps aux|grep tomcat ②关闭tomcat: /etc/init.d/catalina_sbi stop ③重启tom ...

  6. Chrome 自动填充的表单是淡黄色的背景,有方法自定义吗

    input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; }

  7. window.close(); 关闭浏览器窗口js代码的分析总结

    序号 关闭代码 需要确认 无任何作用 无需确认 测试 1 window.close() IE7 firefox,chrome,safari Opera Close 2 window.opener=nu ...

  8. Android 遮罩层效果

    (用别人的代码进行分析) 不知道在开发中有没有经常使用到这种效果,所谓的遮罩层就是给一张图片不是我们想要的形状,这个时候我们就可以使用遮罩效果把这个图片变成我们想要的形状,一般使用最多就是圆形的效果, ...

  9. Mysql插入数据为何要加上" ` "(Esc下面那个按键符号)?

    资料上和以前学习的SQL语言,往数据库里面插入数据语句是这样的 INSERT INTO test_table (clo_1, col_2) VALUES("this is value of ...

  10. 解决jquery-ui-autocomplete选择列表被Bootstrap模态窗遮挡的问题

    最近在一个ASP.NET MVC5项目中使用Bootstrap的模态窗(弹出层)来让用户填写内容,其中的一个编辑框提供了自动完成功能,用jQuery UI Autocomplete来实现. 因为我是W ...