|
|
/**************************** Module Header ********************************\
* Module Name: combodir.c * * Copyright (c) 1985 - 1999, Microsoft Corporation * * Directory Combo Box Routines * * History: * ??-???-???? ?????? Ported from Win 3.0 sources * 01-Feb-1991 mikeke Added Revalidation code \***************************************************************************/
#define CTLMGR
#define LSTRING
#include "precomp.h"
#pragma hdrstop
/***************************************************************************\
* xxxCBDir * * Supports the CB_DIR message which adds a list of files from the * current directory to the combo box. * * History: \***************************************************************************/
int xxxCBDir( PCBOX pcbox, UINT attrib, LPWSTR pFileName) { PLBIV plb; int errorValue; TL tlpwnd;
CheckLock(pcbox->spwnd); UserAssert(pcbox->spwndList);
plb = ((PLBWND)pcbox->spwndList)->pLBIV;
ThreadLock(plb->spwnd, &tlpwnd); errorValue = xxxLbDir(plb, attrib, pFileName); ThreadUnlock(&tlpwnd);
switch (errorValue) { case LB_ERR: return CB_ERR; break; case LB_ERRSPACE: return CB_ERRSPACE; break; default: return errorValue; break; } }
/***************************************************************************\
* DlgDirSelectComboBoxEx * * Retrieves the current selection from the listbox of a combobox. * It assumes that the combo box was filled by xxxDlgDirListComboBox() * and that the selection is a drive letter, a file, or a directory name. * * History: * 12-05-90 IanJa converted to internal version \***************************************************************************/
FUNCLOG4(LOG_GENERAL, int, DUMMYCALLINGTYPE, DlgDirSelectComboBoxExA, HWND, hwndDlg, LPSTR, pszOut, int, cchOut, int, idComboBox) int DlgDirSelectComboBoxExA( HWND hwndDlg, LPSTR pszOut, int cchOut, int idComboBox) { LPWSTR lpwsz; BOOL fRet;
lpwsz = (LPWSTR)UserLocalAlloc(HEAP_ZERO_MEMORY, cchOut * sizeof(WCHAR)); if (!lpwsz) { return FALSE; }
fRet = DlgDirSelectComboBoxExW(hwndDlg, lpwsz, cchOut, idComboBox);
WCSToMB(lpwsz, -1, &pszOut, cchOut, FALSE);
UserLocalFree(lpwsz);
return fRet; }
FUNCLOG4(LOG_GENERAL, int, DUMMYCALLINGTYPE, DlgDirSelectComboBoxExW, HWND, hwndDlg, LPWSTR, pwszOut, int, cchOut, int, idComboBox) int DlgDirSelectComboBoxExW( HWND hwndDlg, LPWSTR pwszOut, int cchOut, int idComboBox) { PWND pwndDlg; PWND pwndComboBox; PCBOX pcbox;
pwndDlg = ValidateHwnd(hwndDlg);
if (pwndDlg == NULL) return FALSE;
pwndComboBox = _GetDlgItem(pwndDlg, idComboBox); if (pwndComboBox == NULL) { RIPERR0(ERROR_CONTROL_ID_NOT_FOUND, RIP_VERBOSE, ""); return 0; } pcbox = ((PCOMBOWND)pwndComboBox)->pcbox; if (pcbox == NULL) { RIPERR0(ERROR_WINDOW_NOT_COMBOBOX, RIP_VERBOSE, ""); return 0; }
return DlgDirSelectHelper(pwszOut, cchOut, HWq(pcbox->spwndList)); }
/***************************************************************************\
* xxxDlgDirListComboBox * * History: * 12-05-90 IanJa converted to internal version \***************************************************************************/
FUNCLOG5(LOG_GENERAL, int, DUMMYCALLINGTYPE, DlgDirListComboBoxA, HWND, hwndDlg, LPSTR, lpszPathSpecClient, int, idComboBox, int, idStaticPath, UINT, attrib) int DlgDirListComboBoxA( HWND hwndDlg, LPSTR lpszPathSpecClient, int idComboBox, int idStaticPath, UINT attrib) { LPWSTR lpszPathSpec; TL tlpwndDlg; PWND pwndDlg; BOOL fRet;
pwndDlg = ValidateHwnd(hwndDlg);
if (pwndDlg == NULL) return FALSE;
lpszPathSpec = NULL; if (lpszPathSpecClient) { if (!MBToWCS(lpszPathSpecClient, -1, &lpszPathSpec, -1, TRUE)) return FALSE; }
ThreadLock(pwndDlg, &tlpwndDlg); fRet = xxxDlgDirListHelper(pwndDlg, lpszPathSpec, lpszPathSpecClient, idComboBox, idStaticPath, attrib, FALSE); ThreadUnlock(&tlpwndDlg);
if (lpszPathSpec) { if (fRet) { /*
* Non-zero retval means some text to copy out. Copy out up to * the nul terminator (buffer will be big enough). */ WCSToMB(lpszPathSpec, -1, &lpszPathSpecClient, MAXLONG, FALSE); } UserLocalFree(lpszPathSpec); }
return fRet; }
FUNCLOG5(LOG_GENERAL, int, DUMMYCALLINGTYPE, DlgDirListComboBoxW, HWND, hwndDlg, LPWSTR, lpszPathSpecClient, int, idComboBox, int, idStaticPath, UINT, attrib) int DlgDirListComboBoxW( HWND hwndDlg, LPWSTR lpszPathSpecClient, int idComboBox, int idStaticPath, UINT attrib) { LPWSTR lpszPathSpec; PWND pwndDlg; TL tlpwndDlg; BOOL fRet;
pwndDlg = ValidateHwnd(hwndDlg);
if (pwndDlg == NULL) return FALSE;
lpszPathSpec = lpszPathSpecClient;
ThreadLock(pwndDlg, &tlpwndDlg); fRet = xxxDlgDirListHelper(pwndDlg, lpszPathSpec, (LPBYTE)lpszPathSpecClient, idComboBox, idStaticPath, attrib, FALSE); ThreadUnlock(&tlpwndDlg);
return fRet; }
|