C++选择目录并定位到默认目录

这篇博客展示了如何在C++中实现选择目录的功能,并能自动定位到默认目录。通过提供的源代码,读者可以了解具体实现过程,并可从链接下载相关资源。

效果图




源代码

//选择目录

void CDemoDlg::OnClickedButtonFolder()
{
    char szPath[MAX_PATH];
    m_folder.GetWindowTextA(szPath, MAX_PATH);

    BROWSEINFO bi={};
    bi.hwndOwner=m_hWnd;
    bi.lpszTitle="请选择输入目录";
     bi.lpfn=CDemoDlg::BrowseCallbackProc;
    bi.lParam=long(&szPath); //选择目录对话框弹出时的默认目录


    LPITEMIDLIST lp=SHBrowseForFolder(&bi);
    if(lp && SHGetPathFromIDList(lp, szPath))
 
### 如何在C++项目中设置目录C++项目中,根目录通常是整个项目的起始位置,包含了主要的源代码、配置文件以及其他必要的资源。通过构建工具(如 CMake),可以方便地识别管理项目的根目录。 #### 使用 CMake 设置目录 在基于 CMake 的项目中,可以通过预定义变量 `CMAKE_SOURCE_DIR` 来获取项目的根目录[^2]。该变量始终指向顶层源码目录,无论当前正在处理的是哪个子目录中的 CMakeLists.txt 文件。以下是具体用法: ```cmake # 获取项目的根目录 set(PROJECT_ROOT ${CMAKE_SOURCE_DIR}) # 打印根目录路径到终端以便调试 message(STATUS "Project root directory is: ${PROJECT_ROOT}") # 将根目录传递给其他目标或脚本 add_custom_target(print_root_dir COMMAND echo "${PROJECT_ROOT}") ``` 此方法适用于任何使用 CMake 构建的项目,能确保即使在复杂的嵌套目录结构下也能正确找到根目录。 #### 在 VSCode 中配置工作区根目录 对于 Visual Studio Code 用户,在 `.vscode/settings.json` 文件中可通过指定 `"workspaceRoot"` 参数来明确指代项目的根目录[^1]。虽然现代版本已不再显式支持这一键值对名称,但其概念依然存在,默认情况下会自动检测打开的工作空间作为根目录。如果需要自定义行为,则可以在 launch 和 tasks 配置文件里利用 `${workspaceFolder}` 宏替代原有方式完成类似功能设定。 例如,当配置调试器时: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/bin/main", // 基于根目录定位可执行文件的位置 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", // 设定当前工作目录为项目根目录 "environment": [] } ] } ``` 以上展示了如何借助 IDE 自身机制结合实际需求灵活调整默认认定的根目录范围。 #### 推荐的标准目录布局及其意义 为了更好地管理和维护大型 C++ 应用程序或者库工程,遵循一定的标准化目录组织形式是非常重要的。下面给出了一种广泛接受的做法供参考[^3]: | **目录** | **描述** | |----------------|-------------------------------------------------------------------------------------------| | `/include` | 存放公共接口声明即头文件(.h,.hpp),按需分组存放到对应命名空间下的子文件夹内 | | `/src` | 实现细节位于此处,与 include 下保持一致性的模块划分 | | `/lib` | 放置链接所需的第三方共享/静态库 | | `/bin` | 编译完成后生成的应用二进制放置区域 | | `/obj` | 中间产物比如.o/.obj 文件暂存地点 | | `/tests` | 单元测试相关材料所在之处 | | `/third_party` | 如果项目依赖某些开源软件包而不想直接引入系统安装版的话可以选择复制粘贴到这里加以隔离 | 这种层次分明的设计不仅有助于开发者快速理解整体架构还能促进团队协作效率提升。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值