Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
Archives
- Today
- Total
기록
[VCL] INI 파일 다루기: 파일 쓰기(2) - Dialog로 폴더 경로 가져오기 본문
소개
이 포스팅에서는 C++ Builder를 사용하여 INI 파일의 경로를 사용자에게 직접 입력받지 않고, 파일 다이얼로그를 통해 선택하도록 하는 방법을 설명합니다. VCL과 Windows API를 이용한 두 가지 방법을 소개합니다.
- 이전 포스팅 : 2024.09.05 - [Desktop] - [C++ Builder] INI 파일 다루기 : 파일 쓰기(1)
예제 코드
1. UI 구성하기
먼저, C++ Builder의 폼 디자인에서 다음과 같은 컴포넌트를 추가합니다:
- TButton:
btnOpenFolderVcl
(VCL 방식으로 폴더 열기) - TButton:
btnOpenFolderWin
(Windows API 방식으로 폴더 열기) - TEdit:
edtFilePath
(선택된 폴더 경로 표시)
2. VCL 방식으로 폴더 선택하기
btnOpenFolderVcl
버튼을 더블클릭해서 OnClick
이벤트 핸들러를 작성합니다.
void __fastcall TForm1::btnOpenFolderVclClick(TObject *Sender)
{
// VCL을 사용하여 폴더 선택 다이얼로그 생성
TFileOpenDialog *folderDialog = new TFileOpenDialog(this);
folderDialog->Options << fdoPickFolders; // 폴더 선택 옵션 설정
folderDialog->Title = "폴더를 선택하세요"; // 다이얼로그 제목 설정
// 다이얼로그 실행
if (folderDialog->Execute())
{
// 선택된 경로를 TEdit에 표시
edtFilePath->Text = folderDialog->FileName;
}
delete folderDialog; // 메모리 해제
}
3. Windows API 방식으로 폴더 선택하기
btnOpenFolderWin
버튼을 더블클릭해서 OnClick
이벤트 핸들러를 작성합니다.
void __fastcall TForm1::btnOpenFolderWinClick(TObject *Sender)
{
// Windows API를 사용하여 폴더 선택 다이얼로그 생성
BROWSEINFO bi = {0};
bi.lpszTitle = L"폴더를 선택하세요"; // 다이얼로그 제목
// 폴더 선택 대화 상자 열기
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
if (pidl != NULL)
{
TCHAR path[MAX_PATH];
// 선택된 폴더의 경로 가져오기
if (SHGetPathFromIDList(pidl, path))
{
// 선택된 경로를 TEdit에 표시
edtFilePath->Text = path;
}
CoTaskMemFree(pidl); // 메모리 해제
}
}
마무리하면서
- VCL 방식과 Windows API 방식
VCL 방식은 코드가 간단하고 직관적이며, TFileOpenDialog 클래스를 사용하여 폴더 선택 기능을 쉽게 구현할 수 있습니다. 반면 Windows API 방식은 상대적으로 코드가 복잡하고, 직접 구조체와 함수를 다루어야 하기 때문에 초기화와 메모리 해제가 필요하여 조금 더 신경 써야 합니다.
유연성 측면에서 VCL 방식은 VCL 컴포넌트를 사용하므로 디자인을 시각적으로 다룰 수 있어 사용자 인터페이스를 쉽게 수정할 수 있습니다. 반면 Windows API 방식은 더 많은 제어와 커스터마이징이 가능하여 특정 요구 사항에 맞게 다이얼로그의 동작을 세밀하게 조정할 수 있습니다.
호환성에 있어 VCL은 Delphi 및 C++ Builder와 같은 RAD 환경에 최적화되어 있어 해당 환경에서의 사용이 추천됩니다. 반면 Windows API 방식은 Windows 운영 체제에서만 사용할 수 있으며, 다른 플랫폼에서는 호환되지 않지만, 더 낮은 수준의 작업이 가능하므로 특정 상황에서는 유리할 수 있습니다.
'Desktop' 카테고리의 다른 글
[VCL] 파일을 선택해서 읽어오기 (0) | 2025.02.03 |
---|---|
[VCL] INI 파일 다루기 : 파일 쓰기(1) (0) | 2025.01.20 |
[VCL] Hello world 어플리케이션 만들기 (0) | 2025.01.06 |
[VCL] TIP/RAD Studio에서 Editor Encoding 변경 (0) | 2024.10.21 |
[VCL] TIP/A component class named <name> already exists (0) | 2024.10.11 |
Comments