21xrx.com
2025-03-22 21:03:00 Saturday
文章检索 我的文章 写文章
如何在C++中建立对话框并选择路径
2023-06-30 03:50:07 深夜i     9     0
C++ 对话框 路径 建立 选择

在C++语言中,创建对话框并选择路径非常简单,只需要使用Windows API中的一些函数即可完成。下面将介绍如何创建一个简单的对话框程序,并在其中添加选择路径功能。

首先,打开Visual Studio,创建一个新的C++空项目,然后添加一个新的对话框资源。在对话框编辑器中,可以添加一些控件,如按钮、文本框和标签等。本例中,我们只需要添加一个按钮控件和一个文本框控件。

接下来,在CreateDialog函数中加载对话框资源,并显示对话框:

INT_PTR CALLBACK DialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
  switch (message) {
  case WM_INITDIALOG:
    return TRUE;
  case WM_COMMAND:
    switch (LOWORD(wParam)) {
    case IDC_BUTTON_CHOOSE:
      ChooseFolder(hDlg);
      break;
    case IDOK:
    case IDCANCEL:
      EndDialog(hDlg, LOWORD(wParam));
      return TRUE;
    }
    break;
  default:
    break;
  }
  return FALSE;
}
void ShowDialog(HINSTANCE hInstance, int nCmdShow) {
  DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), nullptr, DialogProc);
}

在按钮的单击事件中,调用ChooseFolder函数,该函数将显示一个选择路径对话框,并在文本框中显示所选路径:

void ChooseFolder(HWND hDlg) {
  BROWSEINFO bi = { 0 };
  bi.lpszTitle = L"Choose a folder";
  LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
  if (pidl != nullptr) {
    // Get the folder path
    TCHAR path[MAX_PATH];
    SHGetPathFromIDList(pidl, path);
    // Update the text box
    HWND hWndEdit = GetDlgItem(hDlg, IDC_EDIT_FOLDER);
    SetWindowText(hWndEdit, path);
    // Free the PIDL
    IMalloc* imalloc = nullptr;
    if (SUCCEEDED(SHGetMalloc(&imalloc))) {
      imalloc->Free(pidl);
      imalloc->Release();
    }
  }
}

在ChooseFolder函数中,使用SHBrowseForFolder函数创建一个选择路径对话框,并获取所选路径。然后,使用GetDlgItem和SetWindowText函数设置文本框的文本,并释放PIDL(可在SHGetMalloc下使用的内存块)。

最后,编译并运行程序。当单击按钮时,将显示选择路径对话框。选择一个文件夹后,所选路径将显示在文本框中。通过这种方式,我们可以轻松地在C++中创建对话框,同时添加选择路径的功能,这可以非常方便地用于用户界面设计和文件操作等方面。

  
  

评论区

请求出错了