繁体   English   中英

如何在编辑框中显示/添加文件路径(或任何文本)? (C ++ Win32 API)

[英]How to display/append a file's path (or any text) into an edit box? (C++ Win32 API)

在我正在使用的一个程序中(仅使用Win32 API),我试图使用一个打开的文件对话框来选择一个文件,该文件的路径随后将出现在程序的编辑框或列表框中。 我的打开文件对话框正在工作(使用OpenFileName),但是我不确定如何将所选文件的路径显示在编辑框中。

我尝试使用SendMessage函数来执行此操作,但未解决任何问题。

这是我用于打开文件对话框的代码(以及将路径发送到编辑框的位置):

   int OpenDialog(HWND hWnd)
    {
    OPENFILENAME ofn;
    TCHAR szFile[MAX_PATH];
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.lpstrFile = szFile;
    ofn.lpstrFile[0] = '\0';
    ofn.hwndOwner = hWnd;
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = TEXT("txt Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0");
    ofn.nFilterIndex = 1;
    ofn.lpstrInitialDir = NULL;
    ofn.lpstrFileTitle = NULL;
    ofn.lpstrDefExt = "txt";
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

    if(GetOpenFileName(&ofn))
     {
       // the function to send the path name to the edit box would be here
     }
    }

这是我用于编辑框的代码:

    CreateWindow(TEXT("Edit"), TEXT(""), 
    WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE, 
    20, 20, 380, 20, hWnd, NULL, hInstance, NULL);

有什么功能或技术可以做到这一点吗? 我是否需要对编辑框进行编码,以便可以实现? (示例代码将不胜感激:)

(我在Windows 8上使用CodeBlocks 13.12)

提前致谢。

或者:

  • 将对话框项ID传递给CreateWindow并使用SetDlgItemText

    要么

  • 保存从CreateWindow返回的HWND并使用SetWindowText

首先,您需要将句柄按住到编辑框,以便以后可以重新使用它。 您将需要从要在编辑框上调用SetWindowText的函数中访问该句柄。 因此,HWND可以是该类的成员变量,也可以是全局变量。 您设计的是什么。

HWND hEditBox = CreateWindow(TEXT("Edit"), TEXT(""), 
    WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE, 
    20, 20, 380, 20, hWnd, NULL, hInstance, NULL);

在GetOpenFileName之后调用SetWindowText。

 if(GetOpenFileName(&ofn))
 {
    SetWindowText(hEditBox, ofn.lpstrFile);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM