MFC 列表文件操作

一 、在一个按键中触发另一个按键:

void CMainPage_1_1::OnBnClickedButton2()
{
 //TODO:
 OnBnClickedButton1();
}

二、列表拖动文件,显示文件内容
1 先设置住对话框的属性:Accept File 修改为 True
2 右键类向导(class wizard),选择消息,找到WM_DROPFILES,双击将其移至右边,编辑代码。

void CDemoDlg::OnDropFiles(HDROP hDropInfo)  
{  
    // TODO: 在此添加消息处理程序代码和/或调用默认值  

    // 获取列表框指针  
    CListBox *pListbox = (CListBox *)GetDlgItem(IDC_LIST1);  
    pListbox->ResetContent();// 清空列表框内容  
  /*************多文件**********************/
    // 取得被拖动文件的数目  第三个参数设置为NULL时,返回文件个数。
   int nCount=DragQueryFile(hDropInfo,-1,NULL,0);    

     // 遍历打印到列表框中  
   for(int i=0; i< nCount; i++)    
   {    
       // 获得拖曳的第i个文件的文件名  
       WCHAR szFilePath[MAX_PATH];    
       DragQueryFile(hDropInfo,i,szFilePath,MAX_PATH);    
 /***********************单文件********************/
       DragQueryFile(hDropInfo,0,szFilePath,MAX_PATH);


     //获取文件名后对应的操作,复制文件内容等
      OnOpenFile(); 

      CDialogEx::OnDropFiles(hDropInfo);  
 }  

三、设置编辑文本大小等
在基类加入
CFont* m_editFont;
CFont* ptf = m_edit.GetFont();
LOGFONT lf;
ptf->GetLogFont(&lf);
lf.lfHeight = 25;
m_editFont.CreateFontIndirectW(&lf);
m_edit.SetFont(&m_editFont);

四 获取列表的行列

    //获取单击所在的行号  
  1. //找出鼠标位置  
  2. DWORD dwPos = GetMessagePos();  
  3. CPoint point( LOWORD(dwPos), HIWORD(dwPos) );  
  4. m_listCtrl.ScreenToClient(&point); 
  5. 
  6. //定义结构体  
  7. LVHITTESTINFO lvinfo;  
  8. lvinfo.pt = point;  
  9. lvinfo.flag = LVHT_ABOVE;
  10.  
  11.  //获取行号信息  
  12. int nItem = m_listCtrl.HitTest(&lvinfo);
  13. //int nItem = m_listCtrl.SubItemHitTest(&lvinfo);  
  14. if(nItem != -1)  
  15.     m_itemSel = lvinfo.iItem;   //当前行号 

5 列表响应CTRL+C
1 列表添加事件处理程序,选择LVN_KEYDOWN
附加一遍关于键盘响应的文章:
http://blog.csdn.net/mjk1133/article/details/6704694

void CListView::OnLvnKeydownReportList(NMHDR *pNMHDR, LRESULT *pResult)
{
    if( ::GetKeyState( VK_CONTROL )& 0x8000) && ( pLVKeyDow->wKey == 'C' || pLVKeyDow->wKey == 'c')
    {
        //TO DO
    }
    *pResult = 0;
}

猜你喜欢

转载自blog.csdn.net/energysober/article/details/54410032