在我正在使用的一个程序中(仅使用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)
提前致谢。
首先,您需要将句柄按住到编辑框,以便以后可以重新使用它。您将需要从要在编辑框上调用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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句