void CPro2::OnBnClickedButton1()
{
ShellExecute(NULL,"open","file.txt","","",SW_SHOW );// TODO: 在此添加控件通知处理程序代码
}
void CPro2::OnBnClickedButton2()
{
ShellExecute(NULL,"open","check.txt","","",SW_SHOW );// TODO: 在此添加控件通知处理程序代码
}
两个按钮实现打开文本文件,怎么让打开第一个文件(Button1)后(file.txt不关闭的情况下)打开第二个文件(Button2)时不另外弹出记事本文档,在原有文档上显示文件内容。就像在记事本上操作“打开”一样的功能。(不要说先关闭后再打开,不想要那种实现方式)

解决方案 »

  1.   

    1. 这个需要记事本程序的支持,可是据我所知记事本程序没有这种功能。
    2. 用户计算机上,打开txt文件的应用程序不一定就是记事本,你怎么可能知道目标应用程序的操作接口呢?
    ————结论,ShellExcute打开 txt文件不大可能实现这种功能,至少不能完整实现该功能。
      

  2.   

    抓notepad的edit句柄然后post/send数据,
    抛砖引玉: HWND hwnd = ::FindWindow(L"Notepad", NULL);
    if(hwnd != NULL){
    hwnd = ::ChildWindowFromPoint(hwnd, CPoint(20, 20));
    if(hwnd != NULL){
    wchar_t text[] = L"its a test\r\n.....";
    ::SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM)text);
    }
    }
      

  3.   

    谢啦,但我说的其实不是文本文件,只是举了个例子。我要打开的是一个软件,和Autocad差不多的那种,所以你的方法貌似还是不行~
      

  4.   

    第二次不要再用ShellExcute了
    给第一个窗口发消息实现
      

  5.   

    我是做CAD二次开发的,根据经验来看,你必须已知应用程序接口才能办到。
    比如:你要打开的是DWG图纸文件,应该程序为AutoCAD。
    那么你调用AutoCAD提供的多文档接口(AutoCAD.AcadDocuments.open)打开此DWG文件,
    接着再打开第二张DWG图纸文件时,继续应用该Application打开即可。
      

  6.   

    具体我没做过
    不过SendMessage打开文件的消息或许可以吧
    你可以试试