C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[90] [답변] CHS80/API중에 SHBrowseForFolder 의 사용법을 갈켜주세요../프포
박지훈.임프 [cbuilder] 7796 읽음    1998-01-28 01:45
무얼 하시는데 SHBrowseForFolder함수를 쓰시려는지 모르겠는데,
답변하시는 분이 없으니 간단히 예제로 알려드리지요.
단, ShellFolder에 관련되는건 저두 지금 공부하구 있는 중이라서
자세히는 알려드릴 수가 없구요, 또 이런 종류의 함수들은 많이
알려지지 않아서 아래 예제에서 제가 이 함수를 잘못사용했다든지
해서 문제가 생기더라도 제가 책임을 져 드릴수가 없다는걸 먼저
알려드리고 싶네요. 앞에서도 말했듯이, 저두 Shell계열의 인터
페이스와 함수들은 공부하구 있는 중이거든요.
아래 예제를 그대루 실행해 보시면 사용법은 아시게 될겁니다.
참고로 프로젝트는 폼하나에 버튼하나 덜렁 그린 꼬라지입니다.

#include <vcl\vcl.h>
#include <shlobj.h>     // <- 추가해야 됩니다.
#pragma hdrstop

#include "Main.h"
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        LPMALLOC g_pMalloc;
        ITEMIDLIST *Pidl, *BrowsePidl;
    char DisplayName[MAX_PATH];
        BROWSEINFO BrowseInfo;

        // IMalloc인터페이스의 포인터를 가져온다.
    SHGetMalloc(&g_pMalloc);

    // 스페셜폴더의 위치를 피들로 리턴해주는 함수입니다.
    SHGetSpecialFolderLocation(Handle, CSIDL_DESKTOP, &Pidl);

    // BROWSEINFO 구조체의 내용을 채웁니다.
    BrowseInfo.hwndOwner = Handle;
    BrowseInfo.pidlRoot = Pidl;
    BrowseInfo.pszDisplayName = DisplayName;
    BrowseInfo.lpszTitle = "Choose a Program Group";
        BrowseInfo.lpfn = NULL;
    BrowseInfo.ulFlags = 0;

    // 채워진 구조체로 SHBrowseForFolder를 호출합니다.
        BrowsePidl = SHBrowseForFolder(&BrowseInfo);

    // 선택한 폴더의 디스플레이네임을 보여준다.
    Application->MessageBox(DisplayName, "Selected Folder", MB_OK);

    // 사용한 피들들을 해제한다.
    g_pMalloc->Free(Pidl);
    g_pMalloc->Free(BrowsePidl);

    // IMalloc인터페이스를 놓아준다.
        g_pMalloc->Release();
}

이상입니다. 델파이를 쓰시는지도 몰겠는데... 대충 보니 특별히 C를 모
르시는분이 막힐 부분은 없군요.
내일 일찍일어나서 친척댁에 가서 금융지원(?)을 좀 받아야 하기 땜에
자세히 설명드릴 시간이 별루 없군요. 그래두 이런 함수를 필요로 하신다
면 피들이나 네임스페이스 같은건 아실거라 생각되니 별 걱정은 안하지만,
혹시 이쪽의 기초지식이 필요하시다면 씨빌더에 있는 (물론 델파이에도
있을거라고 확신하는데...) "Win32 Programmer's Reference" 라는 헬프
화일에서 Shell's Namespace를 참조하시면 아실 수 있을 겁니다.
저두 그걸보구 공부하구 있는중이니...
(근데, 혹시 이 헬프로 공부하시려고 하신다면 상당히 인내가 필요할거라
고 생각되는데... 짜증날정도로 딱딱하게 설명되어 있거든요... 히히)
혹시 Shell쪽이 친절하게 설명된 다른 책이나 도큐먼트같은걸 갖고 계신
분은 소개좀 해주시기 바랍니다. 영어도 잘 못하는 놈이 헬프보구 공부
하려니 죽을맛이거든요... ^^;

도움이 되었는지 몰겠네요.. 저두 지금 박터지고 있는 중이라...
그래두 추가설명이 필요하시면 아는것에 한해 내일쯤 다시 올려드리겠습
니다.

그리구... 이글을 보시고 계시는 프포 여러분, 새해 복많이 받으세요.
히히히...


부산에서 오랜만에 청소를 하고 느긋한 무식이 임펠리테리였습니다.



+ -

관련 글 리스트
88 [질문] API중에 SHBrowseForFolder 의 사용법을 갈켜주세요../프포 chs80 6868 1998/01/26
90     [답변] CHS80/API중에 SHBrowseForFolder 의 사용법을 갈켜주세요../프포 박지훈.임프 7796 1998/01/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.