BLOG main image
전체 (276)
[Computer] (42)
[Programming] (62)
[DBMS] (26)
[Operating System] (21)
[Study English] (8)
[For money] (28)
[Interest] (89)
«   2009/11   »
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
29 30          
77889 Visitors up to today!
Today 81 hit, Yesterday 46 hit
'긁어라'에 해당되는 글 2건
[폭주기관차, 2007/03/08 13:00, [Programming]/Visual C++ API/MFC]
static int CALLBACK BrowseCallbakProc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM pData)
{
    switch(uMsg)
    {
    case BFFM_VALIDATEFAILED:
        CString strText;
        strText.Format("%s", reinterpret_cast<LPTSTR>(lParam));
        AfxMessageBox(strText);
        break;
    }
    return 0;
};

void CTest3Dlg::OnButton1()
{
    ITEMIDLIST *pildBrowse;
    char pszPathname[MAX_PATH];

    LPITEMIDLIST pidl = NULL;
    BROWSEINFO bInfo;
    ZeroMemory( &bInfo, sizeof(BROWSEINFO) );

    SHPathToPidl( CSIDL_DESKTOP, &pidl );        //이곳에 최상위 루트를 지정하시구요
                         // CSIDL_NETWORK,CSIDL_DESKTOP,CSIDL_RECENT
    bInfo.hwndOwner = GetSafeHwnd();
    bInfo.pidlRoot = pidl;
    bInfo.pszDisplayName = pszPathname;
    bInfo.lpszTitle = "디렉토리를 선택하세요";
    bInfo.lpfn = BrowseCallbakProc; //에디트 박스에서 텍스트를 받아오기 위한 Callback 입니다.
    bInfo.ulFlags = BIF_BROWSEINCLUDEFILES | BIF_EDITBOX | BIF_VALIDATE;
    pildBrowse = ::SHBrowseForFolder(&bInfo);

    if( pildBrowse != NULL )
    {
        SHGetPathFromIDList(pildBrowse, pszPathname);
        CString m_strFolder = (LPCTSTR)pszPathname;
        MessageBox( m_strFolder );
    }
}

HRESULT CTest3Dlg::SHPathToPidl( LPCTSTR szPath, LPITEMIDLIST* ppidl )
{
    LPSHELLFOLDER pShellFolder = NULL;
    OLECHAR wszPath[MAX_PATH] = {0};
    ULONG nCharsParsed = 0;

    HRESULT hr = SHGetDesktopFolder( &pShellFolder );

    if( FAILED(hr) )
        return FALSE;

    MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szPath, -1, wszPath, MAX_PATH );

    hr = pShellFolder->ParseDisplayName( NULL, NULL, wszPath, &nCharsParsed, ppidl, NULL );

    pShellFolder->Release();

    return hr;
}



- 표시 플래그

BIF_BROWSEFORCOMPUTER : 네트워크의 컴퓨터만 선택가능
BIF_BROWSEFORPRINTER : 프린터만 선택가능
BIF_BROWSEINCLUDEFILES : 파일도 표시
BIF_DONTGOBELOWDOMAIN : 네트워크의 컴퓨터를 표시하지 않는다
BIF_EDITBOX : 에디트 박스를 표시한다
BIF_RETURNFSANCESTORS : 네트워크의 컴퓨터만 선택가능
BIF_RETURNONLYFSDIRS : 폴더만 선택가능
BIF_STATUSTEXT : 스테이터스 텍스트를 표시한다
BIF_VALIDATE : 부정 입력시에, BFFM_VALIDATEFAILED 이벤트

출처 : 자바/Java/C/C++ 개발자모임 카페
Trackback Address :: http://kongmks.cafe24.com/trackback/169
Name
Password
Homepage
Secret
[폭주기관차, 2007/03/07 08:22, [Programming]/Visual C++ API/MFC]
int ReadRegVal(char *reg_path, char *key, char *val, int val_buf_size ) // reg읽기
{
    HKEY phk=0;
    DWORD nEC = REG_BINARY;                  // 바이너리모드로 읽기
    DWORD size = val_buf_size;                   // 레지스트리읽기시 버퍼크기

    memset(val,0,val_buf_size);                    //mem clear

    RegOpenKey(HKEY_LOCAL_MACHINE,reg_path,&phk);
    RegQueryValueEx(phk, key, NULL,&nEC, (LPBYTE)val, &size )//읽기 값은 val에 저장
    //val은 걍 맘편히 타입케스팅 바로 하셔서 쓰셔욧....
    RegCloseKey(phk);

    return 0;
}

int WriteRegVal(char *reg_path, char *key, char *val)          //reg write
{
    HKEY phk=0;
    long nRet;

    RegCreateKey(HKEY_LOCAL_MACHINE, reg_path, &phk);
    nRet = RegSetValueEx(phk, key, 0, REG_SZ, (LPBYTE)val, strlen(val));
    RegCloseKey(phk);

    if(ERROR_SUCCESS == nRet)   return 0;

    return 1;
}


사용법:
 <레지스터 쓰기.>
       WriteRegVal("SOFTWARE\\Microsoft\\Windows", "Windows", "5.2" );


출처 : 네이버 지식인

Trackback Address :: http://kongmks.cafe24.com/trackback/168
Name
Password
Homepage
Secret
*1