| Index: third_party/npapi/npspy/windows/dirpick.cpp
|
| diff --git a/third_party/npapi/npspy/windows/dirpick.cpp b/third_party/npapi/npspy/windows/dirpick.cpp
|
| deleted file mode 100644
|
| index a3bdaa4ba8ab69eb77dcc453ccad1743fae4a716..0000000000000000000000000000000000000000
|
| --- a/third_party/npapi/npspy/windows/dirpick.cpp
|
| +++ /dev/null
|
| @@ -1,605 +0,0 @@
|
| -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
| -/* ***** BEGIN LICENSE BLOCK *****
|
| - * Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
| - *
|
| - * The contents of this file are subject to the Mozilla Public License Version
|
| - * 1.1 (the "License"); you may not use this file except in compliance with
|
| - * the License. You may obtain a copy of the License at
|
| - * http://www.mozilla.org/MPL/
|
| - *
|
| - * Software distributed under the License is distributed on an "AS IS" basis,
|
| - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
| - * for the specific language governing rights and limitations under the
|
| - * License.
|
| - *
|
| - * The Original Code is mozilla.org code.
|
| - *
|
| - * The Initial Developer of the Original Code is
|
| - * Netscape Communications Corporation.
|
| - * Portions created by the Initial Developer are Copyright (C) 1998
|
| - * the Initial Developer. All Rights Reserved.
|
| - *
|
| - * Contributor(s):
|
| - *
|
| - * Alternatively, the contents of this file may be used under the terms of
|
| - * either the GNU General Public License Version 2 or later (the "GPL"), or
|
| - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
| - * in which case the provisions of the GPL or the LGPL are applicable instead
|
| - * of those above. If you wish to allow use of your version of this file only
|
| - * under the terms of either the GPL or the LGPL, and not to allow others to
|
| - * use your version of this file under the terms of the MPL, indicate your
|
| - * decision by deleting the provisions above and replace them with the notice
|
| - * and other provisions required by the GPL or the LGPL. If you do not delete
|
| - * the provisions above, a recipient may use your version of this file under
|
| - * the terms of any one of the MPL, the GPL or the LGPL.
|
| - *
|
| - * ***** END LICENSE BLOCK ***** */
|
| -#define _CRT_SECURE_NO_DEPRECATE
|
| -
|
| -#include <windows.h>
|
| -#include <windowsx.h>
|
| -#include <direct.h>
|
| -#include <stdio.h>
|
| -
|
| -#include "resource.h"
|
| -
|
| -extern HINSTANCE hInst;
|
| -
|
| -#define ITEM_BITMAPWIDTH 16
|
| -#define ITEM_BITMAPHEIGHT 16
|
| -#define ITEM_LEFTMARGIN 4
|
| -#define ITEM_GAP 4
|
| -
|
| -static HWND hWndDirPicker;
|
| -static HICON hIconDrives[5];
|
| -static HICON hIconFolders[3];
|
| -static LPSTR lpszStringToReturn;
|
| -static char szUNCRoot[256] = "";
|
| -
|
| -UINT DriveType(UINT iType);
|
| -
|
| -static void fillComboBox(HWND hWnd)
|
| -{
|
| - HWND hWndCB = GetDlgItem(hWnd, ID_COMBO_DIR);
|
| - HWND hWndTempLB = GetDlgItem(hWnd, ID_LISTTEMP_DIR);
|
| - if(hWndCB == NULL)
|
| - return;
|
| - ComboBox_ResetContent(hWndCB);
|
| - ListBox_ResetContent(hWndTempLB);
|
| - ListBox_Dir(hWndTempLB, DDL_DRIVES|DDL_EXCLUSIVE, (LPSTR)"*");
|
| -
|
| - int iDriveCount = ListBox_GetCount(hWndTempLB);
|
| - int iCurDrive=_getdrive() - 1;
|
| -
|
| - char szDrive[16];
|
| - char szItem[80];
|
| -
|
| - for (int i = 0; i < iDriveCount; i++)
|
| - {
|
| - ListBox_GetText(hWndTempLB, i, szDrive);
|
| - CharLower(szDrive);
|
| - int iDrive = szDrive[2] - 'a';
|
| - char szRoot[16];
|
| - sprintf(szRoot, "%c:\\", szDrive[2]);
|
| -
|
| - int iType = DriveType(iDrive);
|
| -
|
| - if(iType < 2)
|
| - continue;
|
| -
|
| - //Start the item string with the drive letter, colon, and two spaces
|
| - sprintf(szItem, "%c%s", szDrive[2], ": ");
|
| -
|
| - if((iType == DRIVE_FIXED) || (iType == DRIVE_RAMDISK))
|
| - { // get volume ID
|
| - char szVolumeID[80];
|
| - DWORD dwMaxLength;
|
| - DWORD dwSysFlags;
|
| - GetVolumeInformation(szRoot, // address of root directory of the file system
|
| - szVolumeID, // address of name of the volume
|
| - sizeof(szVolumeID), // length of lpVolumeNameBuffer
|
| - NULL, // address of volume serial number
|
| - &dwMaxLength, // address of system's maximum filename length
|
| - &dwSysFlags, // address of file system flags
|
| - NULL, // address of name of file system
|
| - NULL); // length of lpFileSystemNameBuffer
|
| -
|
| - CharLower(szVolumeID);
|
| - lstrcat(szItem, szVolumeID);
|
| - }
|
| -
|
| - //For network drives, go grab the \\server\share for it.
|
| - if(DRIVE_REMOTE == iType)
|
| - {
|
| - char szNet[64];
|
| - szNet[0] = '\0';
|
| - DWORD dwSizeOfszNet = sizeof(szNet);
|
| -
|
| - sprintf(szDrive, "%c:", szDrive[2]);
|
| - CharUpper(szDrive);
|
| - WNetGetConnection(szDrive, szNet, &dwSizeOfszNet);
|
| - CharLower(szNet);
|
| - lstrcat(szItem, szNet);
|
| - }
|
| -
|
| - int index = ComboBox_AddString(hWndCB, szItem);
|
| - ComboBox_SetItemData(hWndCB, index, MAKELONG(iDrive, iType));
|
| - if(iDrive == iCurDrive)
|
| - ComboBox_SetCurSel(hWndCB, index);
|
| - if(szUNCRoot[0] != '\0')
|
| - ComboBox_SetCurSel(hWndCB, -1);
|
| - }
|
| -}
|
| -
|
| -static void fillTempLBWithDirs(HWND hWndTempLB, LPSTR lpszDir)
|
| -{
|
| - BOOL bDone = FALSE;
|
| - WIN32_FIND_DATA ffdataStruct;
|
| -
|
| - char szPath[_MAX_PATH];
|
| - char szFileName[_MAX_PATH];
|
| - lstrcpy(szPath, lpszDir);
|
| - if(szPath[lstrlen(szPath) - 1] == '\\')
|
| - szPath[lstrlen(szPath) - 1] = '\0';
|
| - lstrcpy(szFileName, szPath);
|
| - lstrcat(szFileName, "\\*");
|
| - HANDLE handle = FindFirstFile(szFileName, &ffdataStruct);
|
| - if(handle == INVALID_HANDLE_VALUE)
|
| - {
|
| - FindClose(handle);
|
| - return;
|
| - }
|
| - while(!bDone)
|
| - {
|
| - lstrcpy(szFileName, szPath);
|
| - lstrcat(szFileName, "\\");
|
| - lstrcat(szFileName, ffdataStruct.cFileName);
|
| - if(ffdataStruct. dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
| - {
|
| - char szStringToAdd[_MAX_PATH + 2];
|
| - lstrcpy(szStringToAdd, "[");
|
| - lstrcat(szStringToAdd, ffdataStruct.cFileName);
|
| - lstrcat(szStringToAdd, "]");
|
| - CharLower(szStringToAdd);
|
| - ListBox_AddString(hWndTempLB, szStringToAdd);
|
| - }
|
| - bDone = !FindNextFile(handle, &ffdataStruct);
|
| - }
|
| - FindClose(handle);
|
| -}
|
| -
|
| -static void fillListBox(HWND hWnd, LPSTR lpszDir)
|
| -{
|
| - HWND hWndLB = GetDlgItem(hWnd, ID_LIST_DIR);
|
| - HWND hWndTempLB = GetDlgItem(hWnd, ID_LISTTEMP_DIR);
|
| - HWND hWndEdit = GetDlgItem(hWnd, ID_EDIT_DIR);
|
| - if((hWndLB == NULL) || (lpszDir == NULL))
|
| - return;
|
| -
|
| - int iLastChar = lstrlen(lpszDir);
|
| - if(lpszDir[iLastChar - 1] == '\\')
|
| - lpszDir[iLastChar - 1] = '\0';
|
| -
|
| - SetWindowRedraw(hWndLB, FALSE);
|
| - ListBox_ResetContent(hWndLB);
|
| - ListBox_ResetContent(hWndTempLB);
|
| -
|
| - LPSTR lpszLast;
|
| - lpszLast = CharLower(lpszDir);
|
| -
|
| - SetWindowText(hWndLB, lpszDir);
|
| -
|
| - char szDir[_MAX_DIR];
|
| - char szFullDir[_MAX_DIR];
|
| - sprintf(szFullDir, "%s", lpszDir);
|
| - sprintf(szDir, "%s\\*.*", lpszDir);
|
| -
|
| - BOOL bFirst = TRUE;
|
| - char ch;
|
| - int index;
|
| - while (TRUE)
|
| - {
|
| - LPSTR lpsz;
|
| - if((lpszDir[0] == '\\') && (lpszDir[1] == '\\') && bFirst)
|
| - lpsz = strchr(lpszLast + lstrlen(szUNCRoot), '\\');
|
| - else
|
| - lpsz = strchr(lpszLast, '\\');
|
| - if(lpsz != NULL) {
|
| - if (bFirst)
|
| - ch = *(++lpsz);
|
| - else
|
| - ch = *lpsz;
|
| - *lpsz = 0;
|
| - }
|
| - else
|
| - {
|
| - //If we're looking at a drive only, then append a backslash
|
| - if (lpszLast == lpszDir && bFirst)
|
| - lstrcat(lpszLast, "\\");
|
| - }
|
| - //Add the drive string--includes the last one where lpsz == NULL
|
| - index = ListBox_AddString(hWndLB, lpszLast);
|
| -
|
| - UINT i = (NULL != lpsz) ? ID_ICON_FOLDEROPEN : ID_ICON_OPENSELECT;
|
| - ListBox_SetItemData(hWndLB, index, MAKELONG(index, i));
|
| -
|
| - if(NULL == lpsz)
|
| - break;
|
| -
|
| - //Restore last character.
|
| - *lpsz = ch;
|
| - lpsz += (bFirst) ? 0 : 1;
|
| -
|
| - bFirst=FALSE;
|
| - lpszLast = lpsz;
|
| - }
|
| - int indent = index + 1;
|
| -
|
| - //Get available directories
|
| - fillTempLBWithDirs(hWndTempLB, lpszDir);
|
| -
|
| - int itemCount = ListBox_GetCount(hWndTempLB);
|
| -
|
| - int i=0;
|
| - for (i = 0; i < itemCount; i++) {
|
| - index = ListBox_GetText(hWndTempLB, i, lpszDir);
|
| - //Skip directories beginning with . (skipping . and ..)
|
| - if(lpszDir[1] == '.')
|
| - continue;
|
| - //Remove the ending ']'
|
| - iLastChar = lstrlen(lpszDir);
|
| - lpszDir[iLastChar - 1] = '\0';
|
| - //Add the string to the real directory list.
|
| - index = ListBox_AddString(hWndLB, lpszDir + 1);
|
| - ListBox_SetItemData(hWndLB, index, MAKELONG(indent, ID_ICON_FOLDERCLOSED));
|
| - }
|
| - //Force a listbox repaint.
|
| - SetWindowRedraw(hWndLB, TRUE);
|
| - InvalidateRect(hWndLB, NULL, TRUE);
|
| -
|
| - if(szFullDir[lstrlen(szFullDir) - 1] == ':')
|
| - lstrcat(szFullDir, "\\");
|
| - Edit_SetText(hWndEdit, szFullDir);
|
| -
|
| - GetScrollRange(hWndLB, SB_VERT, (LPINT)&i, (LPINT)&index);
|
| -
|
| - if(!(i == 0 && index == 0))
|
| - ListBox_SetTopIndex(hWndLB, max((int)(index - 2), 0));
|
| -
|
| - ListBox_SetCurSel(hWndLB, indent - 1);
|
| -}
|
| -
|
| -static void onDrawItem(LPDRAWITEMSTRUCT lpdis, BOOL bDrive)
|
| -{
|
| - if((int)lpdis->itemID < 0)
|
| - return;
|
| -
|
| - char szItem[_MAX_DIR];
|
| - DWORD dwItemData;
|
| -
|
| - if(bDrive)
|
| - {
|
| - dwItemData = ComboBox_GetItemData(lpdis->hwndItem, lpdis->itemID);
|
| - ComboBox_GetLBText(lpdis->hwndItem, lpdis->itemID, szItem);
|
| - }
|
| - else
|
| - {
|
| - dwItemData = ListBox_GetItemData(lpdis->hwndItem, lpdis->itemID);
|
| - ListBox_GetText(lpdis->hwndItem, lpdis->itemID, szItem);
|
| - }
|
| -
|
| - if(lpdis->itemAction & (ODA_DRAWENTIRE | ODA_SELECT))
|
| - {
|
| - COLORREF colorText;
|
| - COLORREF colorBack;
|
| - if(lpdis->itemState & ODS_SELECTED)
|
| - {
|
| - colorText = SetTextColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHTTEXT));
|
| - colorBack = SetBkColor(lpdis->hDC, GetSysColor(COLOR_HIGHLIGHT));
|
| - }
|
| - HICON hIcon;
|
| - int indent = 0;
|
| - if(bDrive)
|
| - {
|
| - int iType=(int)HIWORD(dwItemData);
|
| - switch (iType)
|
| - {
|
| - case DRIVE_REMOVABLE:
|
| - hIcon = hIconDrives[0];
|
| - break;
|
| - case DRIVE_FIXED:
|
| - hIcon = hIconDrives[1];
|
| - break;
|
| - case DRIVE_REMOTE:
|
| - hIcon = hIconDrives[2];
|
| - break;
|
| - case DRIVE_CDROM:
|
| - hIcon = hIconDrives[3];
|
| - break;
|
| - case DRIVE_RAMDISK:
|
| - hIcon = hIconDrives[4];
|
| - break;
|
| - }
|
| -
|
| - }
|
| - else
|
| - {
|
| - int iconID = (int)HIWORD(lpdis->itemData);
|
| - switch (iconID)
|
| - {
|
| - case ID_ICON_FOLDERCLOSED:
|
| - hIcon = hIconFolders[0];
|
| - break;
|
| - case ID_ICON_FOLDEROPEN:
|
| - hIcon = hIconFolders[1];
|
| - break;
|
| - case ID_ICON_OPENSELECT:
|
| - hIcon = hIconFolders[2];
|
| - break;
|
| - }
|
| - indent = 4 * (1 + LOWORD(lpdis->itemData));
|
| - }
|
| -
|
| - ExtTextOut(lpdis->hDC,
|
| - lpdis->rcItem.left + ITEM_LEFTMARGIN + ITEM_BITMAPWIDTH + ITEM_GAP + indent,
|
| - lpdis->rcItem.top,
|
| - ETO_OPAQUE | ETO_CLIPPED,
|
| - &lpdis->rcItem,
|
| - szItem,
|
| - lstrlen(szItem),
|
| - NULL);
|
| -
|
| - BOOL res = DrawIcon(lpdis->hDC,
|
| - lpdis->rcItem.left + ITEM_LEFTMARGIN + indent,
|
| - lpdis->rcItem.top,
|
| - hIcon);
|
| -
|
| - if(lpdis->itemState & ODS_SELECTED)
|
| - {
|
| - SetTextColor(lpdis->hDC, colorText);
|
| - SetBkColor(lpdis->hDC, colorBack);
|
| - }
|
| - }
|
| - if((lpdis->itemAction & ODA_FOCUS) || (lpdis->itemState & ODS_FOCUS))
|
| - DrawFocusRect(lpdis->hDC, &lpdis->rcItem);
|
| -}
|
| -
|
| -static void fillUNCRootArray(LPSTR lpsz)
|
| -{
|
| - char szCurDir[_MAX_PATH];
|
| - _getcwd(szCurDir, sizeof(szCurDir));
|
| - lstrcpy(szUNCRoot, lpsz);
|
| - if(szUNCRoot[lstrlen(szUNCRoot) - 1] == '\\')
|
| - szUNCRoot[lstrlen(szUNCRoot) - 1] = '\0';
|
| - for(;;)
|
| - {
|
| - LPSTR lptemp = strrchr(szUNCRoot, '\\');
|
| - if(lptemp == NULL)
|
| - break;
|
| - *lptemp = '\0';
|
| - if(_chdir(szUNCRoot) == -1)
|
| - {
|
| - *lptemp = '\\';
|
| - break;
|
| - }
|
| - }
|
| - _chdir(szCurDir);
|
| -}
|
| -
|
| -static void onInitDialog(HWND hWnd, LPSTR lpsz)
|
| -{
|
| - hWndDirPicker = hWnd;
|
| - lpszStringToReturn = lpsz;
|
| -
|
| - hIconDrives[0] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_DRIVEFLOPPY));
|
| - hIconDrives[1] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_DRIVEHARD));
|
| - hIconDrives[2] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_DRIVENETWORK));
|
| - hIconDrives[3] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_DRIVECDROM));
|
| - hIconDrives[4] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_DRIVERAM));
|
| -
|
| - hIconFolders[0] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_FOLDERCLOSED));
|
| - hIconFolders[1] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_FOLDEROPEN));
|
| - hIconFolders[2] = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON_OPENSELECT));
|
| -
|
| - if(lpsz[0] == '\0')
|
| - _getcwd(lpsz, _MAX_PATH);
|
| - else if(lpsz[lstrlen(lpsz) - 1] == ':')
|
| - lstrcat(lpsz, "\\");
|
| -
|
| - int ret = _chdir(lpsz);
|
| - if(ret == -1)
|
| - {
|
| - char szText[_MAX_PATH + 80];
|
| - sprintf(szText, "The specified directory %s\ncannot be found", lpsz);
|
| - MessageBox(GetParent(hWnd), szText, "Choose Directory", MB_ICONEXCLAMATION|MB_OK);
|
| - _getcwd(lpsz, _MAX_PATH);
|
| - }
|
| - if((lpsz[0] == '\\') && (lpsz[1] == '\\'))
|
| - fillUNCRootArray(lpsz);
|
| - fillListBox(hWnd, lpsz);
|
| - fillComboBox(hWnd);
|
| -}
|
| -
|
| -static void shutDialog(HWND hWnd)
|
| -{
|
| - szUNCRoot[0] = '\0';
|
| -}
|
| -
|
| -static void onCommand(HWND hWnd, int id, HWND hWndCtl, UINT codeNotify)
|
| -{
|
| - char szCurDir[_MAX_PATH];
|
| - switch(id)
|
| - {
|
| - case ID_LIST_DIR:
|
| - if(codeNotify == LBN_DBLCLK)
|
| - {
|
| - int index = ListBox_GetCurSel(hWndCtl);
|
| - DWORD dwItemData = ListBox_GetItemData(hWndCtl, index);
|
| -
|
| - if(HIWORD(dwItemData) == ID_ICON_OPENSELECT)
|
| - {
|
| - shutDialog(hWnd);
|
| - char szString[_MAX_PATH];
|
| - Edit_GetText(GetDlgItem(hWndDirPicker, ID_EDIT_DIR), szString, sizeof(szString));
|
| - lstrcpy(lpszStringToReturn, szString);
|
| - EndDialog(hWnd, IDOK);
|
| - break;
|
| - }
|
| -
|
| - ListBox_GetText(hWndCtl, index, szCurDir);
|
| -
|
| - char szDir[_MAX_DIR];
|
| - LPSTR lpsz;
|
| - if((HIWORD(dwItemData) == ID_ICON_FOLDEROPEN) && (index != 0))
|
| - {
|
| - GetWindowText(hWndCtl, szDir, sizeof(szDir));
|
| - lpsz=_fstrstr(szDir, szCurDir);
|
| - *(lpsz + lstrlen(szCurDir)) = '\0';
|
| - lstrcpy(szCurDir, szDir);
|
| - }
|
| - if (_chdir(szCurDir) == 0)
|
| - {
|
| - _getcwd(szCurDir, _MAX_PATH);
|
| - fillListBox(hWndDirPicker, szCurDir);
|
| - }
|
| - }
|
| - break;
|
| - case ID_COMBO_DIR:
|
| - if(codeNotify == CBN_SELCHANGE)
|
| - {
|
| - char szDrive[80];
|
| - int index = ComboBox_GetCurSel(hWndCtl);
|
| - if(index == CB_ERR)
|
| - break;
|
| - ComboBox_GetLBText(hWndCtl, index, szDrive);
|
| -
|
| - int iCurDrive = _getdrive();
|
| -Retry:
|
| - HCURSOR hCursorOld = SetCursor(LoadCursor(NULL, IDC_WAIT));
|
| - SetCapture(hWndDirPicker);
|
| - if((0 == _chdrive((int)(szDrive[0] - 'a' + 1))) && (NULL != _getcwd(szCurDir, _MAX_PATH)))
|
| - {
|
| - fillListBox(hWndDirPicker, szCurDir);
|
| - ListBox_SetTopIndex(GetDlgItem(hWndDirPicker, ID_LIST_DIR), 0);
|
| - SetCursor(hCursorOld);
|
| - ReleaseCapture();
|
| - break;
|
| - }
|
| - SetCursor(hCursorOld);
|
| - ReleaseCapture();
|
| -
|
| - char szText[80];
|
| - sprintf(szText, "Cannot read drive %c:", szDrive[0]);
|
| - if(IDRETRY == MessageBox(hWndDirPicker, szText, "Choose Directory", MB_ICONEXCLAMATION|MB_RETRYCANCEL))
|
| - goto Retry;
|
| -
|
| - //Changing drives failed so restore drive and selection
|
| - _chdrive(iCurDrive);
|
| -
|
| - sprintf(szDrive, "%c:", (char)(iCurDrive + 'a' - 1));
|
| - index = ComboBox_SelectString(hWndCtl, -1, szDrive);
|
| - }
|
| - break;
|
| - case IDOK:
|
| - shutDialog(hWnd);
|
| - char szString[_MAX_PATH];
|
| - Edit_GetText(GetDlgItem(hWndDirPicker, ID_EDIT_DIR), szString, sizeof(szString));
|
| - lstrcpy(lpszStringToReturn, szString);
|
| - EndDialog(hWnd, IDOK);
|
| - break;
|
| - case IDCANCEL:
|
| - shutDialog(hWnd);
|
| - lpszStringToReturn[0] = '\0';
|
| - EndDialog(hWnd, IDCANCEL);
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| -}
|
| -
|
| -static BOOL CALLBACK DirPickDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
| -{
|
| - switch(msg) {
|
| - case WM_INITDIALOG:
|
| - onInitDialog(hWnd, (LPSTR)lParam);
|
| - break;
|
| - case WM_COMMAND:
|
| - HANDLE_WM_COMMAND(hWnd, wParam, lParam, onCommand);
|
| - break;
|
| - case WM_MEASUREITEM:
|
| - {
|
| - static int cyItem = -1; //Height of a listbox item
|
| - LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam;
|
| - if(cyItem == -1)
|
| - {
|
| - HFONT hFont = (HFONT)SendMessage(hWnd, WM_GETFONT, 0, 0L);
|
| - if(hFont == NULL)
|
| - hFont = GetStockFont(SYSTEM_FONT);
|
| - HDC hDC = GetDC(hWnd);
|
| - HFONT hFontOld = SelectFont(hDC, hFont);
|
| - TEXTMETRIC tm;
|
| - GetTextMetrics(hDC, &tm);
|
| - cyItem = max(ITEM_BITMAPHEIGHT, tm.tmHeight);
|
| - SelectFont(hDC, hFontOld);
|
| - ReleaseDC(hWnd, hDC);
|
| - }
|
| -
|
| - lpmis->itemHeight = cyItem;
|
| - }
|
| - break;
|
| - case WM_DRAWITEM:
|
| - onDrawItem((LPDRAWITEMSTRUCT)lParam, ((UINT)wParam == ID_COMBO_DIR));
|
| - return TRUE; // to prevent default action in listbox (drawing focus)
|
| - default:
|
| - return FALSE;
|
| - }
|
| - return TRUE;
|
| -}
|
| -
|
| -/*
|
| - * DriveType
|
| - *
|
| - * Purpose:
|
| - * Augments the Windows API GetDriveType with a call to the CD-ROM
|
| - * extensions to determine if a drive is a floppy, hard disk, CD-ROM,
|
| - * RAM-drive, or networked drive.
|
| - *
|
| - * Parameters:
|
| - * iDrive UINT containing the zero-based drive index
|
| - *
|
| - * Return Value:
|
| - * UINT One of the following values describing the drive:
|
| - * DRIVE_FLOPPY, DRIVE_HARD, DRIVE_CDROM, DRIVE_RAMDISK,
|
| - * DRIVE_NETWORK.
|
| - *
|
| - * Copyright (c)1992 Kraig Brockschmidt, All Right Reserved
|
| - * Compuserve: 70750,2344
|
| - * Internet : kraigb@microsoft.com
|
| - *
|
| - */
|
| -UINT DriveType(UINT iDrive)
|
| -{
|
| - //Validate possible drive indices
|
| - if((0 > iDrive) || (25 < iDrive))
|
| - return (UINT)-1;
|
| -
|
| - static char path[] = "d:\\";
|
| - path[0] = 'a' + iDrive;
|
| - int iType = GetDriveType(path);
|
| -
|
| - /*
|
| - * Under Windows NT, GetDriveType returns complete information
|
| - * not provided under Windows 3.x which we now get through other
|
| - * means.
|
| - */
|
| -
|
| - return iType;
|
| -}
|
| -
|
| -BOOL PickupDirectory(HWND hWndOwner, LPSTR lpszString)
|
| -{
|
| - if(hWndOwner == NULL)
|
| - hWndOwner = GetDesktopWindow();
|
| - int ret = DialogBoxParam(hInst, MAKEINTRESOURCE(ID_DIALOG_CHOOSEDIR), hWndOwner, DirPickDlgProc, (LPARAM)lpszString);
|
| - return (ret == IDOK);
|
| -}
|
|
|