学习心得:杂记一

原创 2007年09月21日 13:08:00
 一、加入右键弹出菜单:

 CPoint pointMouse;
 CPoint point;
 CMenu menu;

 GetCursorPos(&pointMouse);
 point= pointMouse;

 ::ScreenToClient(pNMHDR->hwndFrom, &pointMouse);

menu.LoadMenu(IDR_MENU);  
 CMenu* popup = menu.GetSubMenu(0);        
 ASSERT(popup != NULL);  
 popup->TrackPopupMenu(
  TPM_LEFTALIGN|TPM_RIGHTBUTTON,
  point.x,
  point.y,
  this,
  NULL); 

二、查找硬盘个数,并在仿系统目录树中加入硬盘(注:不支持98以下)

首先,用CreatFile遍历获取硬盘个数,直到返回INVALID_HANDLE_VALUE时结束。

int CDlg::GetDiskNum()
{
 int   nPhysicalHardDisk=0;  
 CHAR   szDevicePath[_MAX_PATH]={0};  
 for(int index=0;;++index)  
 {  
  wsprintf(szDevicePath,"////.//PHYSICALDRIVE%d",index);   //根据PHYSICALDRIVE%d寻找
  HANDLE  hDevice = CreateFile( 
   szDevicePath,    
   0,                                  
   FILE_SHARE_READ | FILE_SHARE_WRITE,    
   NULL,                            
   OPEN_EXISTING,        
   0,                                
   NULL );  
  if(NULL!=hDevice   &&   INVALID_HANDLE_VALUE!=hDevice)  
  {  
   CloseHandle(hDevice);  
   ++nPhysicalHardDisk;  
  }  
  else   
   break;   
 } 
 return   nPhysicalHardDisk;  
 }

然后,就根据hParent和个数插入树视图

void CDlg::AttachDiskNode(HTREEITEM hParent, int nDiskNum)
{
 if (0 != nDiskNum)
 {
  HTREEITEM hItem = NULL;
  TCHAR szName[MAX_PATH];
  SHFILEINFO  shif;
  CString     str;

  str.LoadStringA(IDS_HARD_DISK);    //为了方便多语言版本
  ::SHGetFileInfo("C://", 0, &shif, sizeof(shif), SHGFI_SYSICONINDEX);
  int nIcon = shif.iIcon;                          //用c:的图标
  ::SHGetFileInfo("C://", 0, &shif, sizeof(shif), SHGFI_SYSICONINDEX|SHGFI_OPENICON);
  int nSelectedIcon = shif.iIcon;
  
  for (int i = 0; i < nDiskNum; i++)
  {
   LPNODEINFO lpNodeInfo = new NODEINFO;  // 你所要保存在节点中的信息
   wsprintf(szName,str+"%d",i);  
   TVINSERTSTRUCT tvis;
   tvis.item.mask = TVIF_TEXT | TVIF_IMAGE  | TVIF_SELECTEDIMAGE | TVIF_PARAM;
   tvis.hInsertAfter = TVI_LAST;
   tvis.hParent = hParent;
   tvis.item.iImage =nIcon;;
   tvis.item.iSelectedImage = nSelectedIcon;
   tvis.item.cchTextMax =MAX_PATH;
   tvis.item.pszText = szName;
   tvis.item.lParam = (LPARAM)lpNodeInfo;
   hItem = m_ctrlTree.InsertItem(&tvis);
  }
 }
}

三、多视图文档中加入一些控件,以及对右键消息捕获的几点注意

在mainfrm中加入各变量(控件),然后在OnCreate中填加如下代码

if (!m_wndToolBar.CreateEx(this) ||
  !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  return -1;       
 if (!m_wndTabBar.Create(this, IDR_MAINFRAME,
  CBRS_ALIGN_BOTTOM, AFX_IDW_DIALOGBAR))
  return -1;  

if(!m_wndReBar.Create(this) ||
  !m_wndReBar.AddBar(&m_wndToolBar))
  return -1;     

 if (!m_wndReBar2.Create(this) ||
  !m_wndReBar2.AddBar(&m_wndTabBar))
    return -1;     

 if (!m_wndStatusBar.Create(this) ||
  !m_wndStatusBar.SetIndicators(indicators,
    sizeof(indicators)/sizeof(UINT)))
  return -1;     

…………

注意:在CMainFrame::OnNotify中可以捕获NM_RCLICK,但要判断是谁发出的进行相对应的处理。开始时没注意控件自己的事务消息,结果……    。

还有就是对Tab的右键的一个小处理,当右键点击不是当前活动的子窗口时,(右键菜单有一个关闭选项)选择关闭时关闭的时当前活动的窗口,所以 一个处理就是点击有键是把点击的那一页激活作为当活动窗口,也就是在右键消息处理函数中发送“激活消息”:

::SendMessage(…… WM_LBUTTONDOWN,……)
  
 ::SendMessage(……  WM_LBUTTONUP,MK_LBUTTON, MAKELPARAM(pointMouse.x, pointMouse.y));

 

                                                                                                                

《写真一瞬间》读书杂记

1.1    构图 正面,最大程度体现拍摄对象轮廓; 斜俯视,体现对象整体; 正上方,体现趣味性; 斜上方,强调细节; 斜面,纵深和立体感; 下方,显示空间开阔感; 留白,少强调对象存在...
  • ahpo
  • ahpo
  • 2017年02月22日 15:16
  • 147

写博客杂记

springmvc RequestParam中文乱码 在xml里添加 encodingFilter org.springframework.web.filter.Character...
  • riverflowrand
  • riverflowrand
  • 2017年01月16日 15:03
  • 136

Thread (线程)(杂记)

1、指运行中的程序的调度单位。 2、一个进程可以拥有多个线程,一个线程必须必须有一个父进程。 3、一般情况下,线程具有就绪、阻塞和运行三种基本状态。 4、支持多处理器的操作系统都提供编程接口来让...
  • wangwei129549
  • wangwei129549
  • 2015年12月27日 18:02
  • 153

[杂记] 写在结束和开始

从2007年底进入MTK到现在,不知不觉已经过去了7年多的时光,而明天即将结束在MTK的职业生涯。 在MTK的7年中很辛苦但也有很多的收获,更难得的是基本上一直能够focus在audio的领域,从最初...
  • sszhouplus
  • sszhouplus
  • 2015年01月08日 20:53
  • 421

python中比较pythonic的地方

变量交换 >>> a, b = b, a 循环遍历区间元素 >>>for i in range(10): ... print (i)返回的是生成器对象,生成器比列表更加节省内存 带索引位置的循环...
  • u011404495
  • u011404495
  • 2017年03月03日 15:58
  • 364

JAVA第一阶段总结

JAVA第一阶段总结 一;知识总结      JAVA学习的第一个小的阶段已经学习完了,在第一个阶段中学习了JAVA的语言的介绍,程序的运行环境,JAVA的基本点,变量和常量,基本数据类型,运算符...
  • LS1910831673
  • LS1910831673
  • 2016年11月11日 16:22
  • 647

(一)杂记

之所以第一篇取名为《杂记》,是因为心情真的很复杂。最近找的工作使我从擅长的linux下编程转向了windows编程,熟练使用MFC编程更是成了基本要求。我以前没有深入接触过微软的这个开发平台,甚至可以...
  • shayueqing
  • shayueqing
  • 2014年03月24日 20:40
  • 290

杂记(一)

BGM-简单爱 为什么要开通这个博客啊,很大一部分原因是因为Amon吧,他总认为自己不优秀,算不上优秀。一个很有想法的年轻人,我很喜欢他。 自己也想走Bio的路吧,所以就不得不学习编程了 “编程...
  • mbypineapple
  • mbypineapple
  • 2016年09月09日 23:00
  • 61

杂记一

   想不出可以概括的标题,所以用《杂记》了之。最近两周,开会,设计,编码调试,忙碌下来甚是疲倦。软件开发过程中的那些纷繁芜杂,纷争,各持己见,沟通环节的疑惑与误解,又足足的“享受”了一回。虽然看够了...
  • liuxk99
  • liuxk99
  • 2008年09月26日 22:45
  • 299

杂记(一)

以前我一直想把人生看透 但今天我忽然觉得人生是看不透的许多人事是没有定数的 是不可能看透的所以为人做事放开点把 相信自己 接受兄弟 不要再去猜疑什么 该怎么做就怎么做 凡事就照天意去吧开心就笑 不开心...
  • zdw_1987
  • zdw_1987
  • 2008年02月13日 23:39
  • 169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习心得:杂记一
举报原因:
原因补充:

(最多只允许输入30个字)