21xrx.com
2024-11-10 00:40:52 Sunday
登录
文章检索 我的文章 写文章
如何在C++中建立对话框并选择路径
2023-06-30 03:50:07 深夜i     --     --
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++中创建对话框,同时添加选择路径的功能,这可以非常方便地用于用户界面设计和文件操作等方面。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复