我想在一个对话框里实现一个快速启动条,对经常用的应用程序可以用鼠标拖拽到启动条上,
当启动时,只要双击就可以,
请高手指点!
谢谢

解决方案 »

  1.   

    调用一次::DragAcceptFiles(hwndDialog, TRUE); 或者 dlg.DragAcceptFiles(TRUE);
    然后在对话框里响应WM_DROPFILES消息即可,每接收一次消息就表明有一个文件拖过来了
      

  2.   

    为支持文件拖拽
    选中对话框 Accept files 扩展风格 
    或 CDialog::OnInitDialog()中加入 ModifyStyleEx(0,WS_EX_ACCEPTFILES);
    对话框中映射 WM_DROPFILES 消息OnDropFiles(HDROP hDropInfo) 
    {
      // TODO: Add your message handler code here and/or call default
      //
      CDialog::OnDropFiles(hDropInfo);  WORD wNumFiles = DragQueryFile(hDropInfo, -1, NULL, (UINT)0 );//获取文件数    
      for (WORD nFile = 0; nFile < wNumFiles; nFile++ )
      {
        TCHAR szFile[MAX_PATH+1];
        DragQueryFile(hDropInfo, nFile, szFile, sizeof(szFile) );  //获取文件名
        // Open the file 
        // OnFileOpen( lpszFile );  //处理
      }        
      DragFinish(hDropInfo); //释放文件拖拽使用的内存空间
    }
      
      

  3.   

    拖到对话框上只是一个文件名信息后续的还要添加
    比如获取图标(美化效果)
    把文件名保存起来,以便下次启动的时候调入
    ShellExecute CreateProcess等创建运行程序等
    内容还多着呢
      

  4.   

    在对话框底部预留位置放置一个TOOLBAR,当拖来一个文件时就在toolbar上添加一个按钮,读取文件关联图标作为按钮图标,文件名作为tooltip,点击按钮就通过ShellExecute启动对应的应用程序。不用toolbar也可以,动态创建普通按钮也一样能达到同样的效果。
      

  5.   

    建议楼主先练习如何在对话框中动态添加子窗口,以及如何在TOOLBAR中动态添加按钮