The Quake III Arena sources as originally released under the GPL license on August 20, 2005.
This commit is contained in:
commit
dbe4ddb103
1409 changed files with 806066 additions and 0 deletions
671
q3radiant/MRU.CPP
Normal file
671
q3radiant/MRU.CPP
Normal file
|
@ -0,0 +1,671 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 1999-2005 Id Software, Inc.
|
||||
|
||||
This file is part of Quake III Arena source code.
|
||||
|
||||
Quake III Arena source code is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
Quake III Arena source code is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
//*************************************************************
|
||||
// File name: mru.c
|
||||
//
|
||||
// Description:
|
||||
//
|
||||
// Routines for MRU support
|
||||
//
|
||||
// Development Team:
|
||||
//
|
||||
// Gilles Vollant (100144.2636@compuserve.com)
|
||||
//
|
||||
//*************************************************************
|
||||
|
||||
#include "stdafx.h"
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "mru.h"
|
||||
// CreateMruMenu : MRUMENU constructor
|
||||
// wNbLruShowInit : nb of item showed in menu
|
||||
// wNbLruMenuInit : nb of item stored in memory
|
||||
// wMaxSizeLruItemInit : size max. of filename
|
||||
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// CreateMruMenu()
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// Allocate and Initialize an MRU and return a pointer on it
|
||||
//
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// WORD wNbLruShowInit - Maximum number of item displayed on menu
|
||||
// WORD wNbLruMenuInit - Maximum number of item stored in memory
|
||||
// WORD wMaxSizeLruItemInit - Maximum size of an item (ie size of pathname)
|
||||
// WORD wIdMruInit - ID of the first item in the menu (default:IDMRU)
|
||||
//
|
||||
//
|
||||
// Return: (LPMRUMENU)
|
||||
//
|
||||
// Pointer on a MRUMENU structure, used by other function
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// wNbLruShowInit <= wNbLruMenuInit
|
||||
//
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
|
||||
LPMRUMENU CreateMruMenu (WORD wNbLruShowInit,
|
||||
WORD wNbLruMenuInit,WORD wMaxSizeLruItemInit,WORD wIdMruInit)
|
||||
{
|
||||
LPMRUMENU lpMruMenu;
|
||||
lpMruMenu = (LPMRUMENU)GlobalAllocPtr(GHND,sizeof(MRUMENU));
|
||||
|
||||
lpMruMenu->wNbItemFill = 0;
|
||||
lpMruMenu->wNbLruMenu = wNbLruMenuInit;
|
||||
lpMruMenu->wNbLruShow = wNbLruShowInit;
|
||||
lpMruMenu->wIdMru = wIdMruInit;
|
||||
lpMruMenu->wMaxSizeLruItem = wMaxSizeLruItemInit;
|
||||
lpMruMenu->lpMRU = (LPSTR)GlobalAllocPtr(GHND,
|
||||
lpMruMenu->wNbLruMenu*(UINT)lpMruMenu->wMaxSizeLruItem);
|
||||
if (lpMruMenu->lpMRU == NULL)
|
||||
{
|
||||
GlobalFreePtr(lpMruMenu);
|
||||
lpMruMenu = NULL;
|
||||
}
|
||||
return lpMruMenu;
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// CreateMruMenuDefault()
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// Allocate and Initialize an MRU and return a pointer on it
|
||||
// Use default parameter
|
||||
//
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
//
|
||||
// Return: (LPMRUMENU)
|
||||
//
|
||||
// Pointer on a MRUMENU structure, used by other function
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
//
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
|
||||
LPMRUMENU CreateMruMenuDefault()
|
||||
{
|
||||
return CreateMruMenu (NBMRUMENUSHOW,NBMRUMENU,MAXSIZEMRUITEM,IDMRU);
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// DeleteMruMenu()
|
||||
//
|
||||
// Purpose:
|
||||
// Destructor :
|
||||
// Clean and free a MRUMENU structure
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU, allocated
|
||||
// by CreateMruMenu() or CreateMruMenuDefault()
|
||||
//
|
||||
//
|
||||
// Return: void
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
//
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
void DeleteMruMenu(LPMRUMENU lpMruMenu)
|
||||
{
|
||||
GlobalFreePtr(lpMruMenu->lpMRU);
|
||||
GlobalFreePtr(lpMruMenu);
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// SetNbLruShow()
|
||||
//
|
||||
// Purpose:
|
||||
// Change the maximum number of item displayed on menu
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// WORD wNbLruShowInit - Maximum number of item displayed on menu
|
||||
//
|
||||
//
|
||||
// Return: void
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
//
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
void SetNbLruShow (LPMRUMENU lpMruMenu,WORD wNbLruShowInit)
|
||||
{
|
||||
lpMruMenu->wNbLruShow = min(wNbLruShowInit,lpMruMenu->wNbLruMenu);
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// SetMenuItem()
|
||||
//
|
||||
// Purpose:
|
||||
// Set the filename of an item
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// WORD wItem - Number of Item to set, zero based
|
||||
// LPSTR lpItem - String, contain the filename of the item
|
||||
//
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// used when load .INI or reg database
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
BOOL SetMenuItem (LPMRUMENU lpMruMenu,WORD wItem,LPSTR lpItem)
|
||||
{
|
||||
if (wItem >= NBMRUMENU)
|
||||
return FALSE;
|
||||
_fstrncpy((lpMruMenu->lpMRU) +
|
||||
((lpMruMenu->wMaxSizeLruItem) * (UINT)wItem),
|
||||
lpItem,lpMruMenu->wMaxSizeLruItem-1);
|
||||
lpMruMenu->wNbItemFill = max(lpMruMenu->wNbItemFill,wItem+1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// GetMenuItem()
|
||||
//
|
||||
// Purpose:
|
||||
// Get the filename of an item
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// WORD wItem - Number of Item to set, zero based
|
||||
// BOOL fIDMBased - TRUE : wItem is based on ID menu item
|
||||
// FALSE : wItem is zero-based
|
||||
// LPSTR lpItem - String where the filename of the item will be
|
||||
// stored by GetMenuItem()
|
||||
// UINT uiSize - Size of the lpItem buffer
|
||||
//
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// Used for saving in .INI or reg database, or when user select
|
||||
// an MRU in File menu
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
BOOL GetMenuItem (LPMRUMENU lpMruMenu,WORD wItem,
|
||||
BOOL fIDMBased,LPSTR lpItem,UINT uiSize)
|
||||
{
|
||||
if (fIDMBased)
|
||||
wItem -= (lpMruMenu->wIdMru + 1);
|
||||
if (wItem >= lpMruMenu->wNbItemFill)
|
||||
return FALSE;
|
||||
_fstrncpy(lpItem,(lpMruMenu->lpMRU) +
|
||||
((lpMruMenu->wMaxSizeLruItem) * (UINT)(wItem)),uiSize);
|
||||
*(lpItem+uiSize-1) = '\0';
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// AddNewItem()
|
||||
//
|
||||
// Purpose:
|
||||
// Add an item at the begin of the list
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// LPSTR lpItem - String contain the filename to add
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// Used when used open a file (using File Open common
|
||||
// dialog, Drag and drop or MRU)
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
void AddNewItem (LPMRUMENU lpMruMenu,LPSTR lpItem)
|
||||
{
|
||||
WORD i,j;
|
||||
for (i=0;i<lpMruMenu->wNbItemFill;i++)
|
||||
if (lstrcmpi(lpItem,(lpMruMenu->lpMRU) +
|
||||
((lpMruMenu->wMaxSizeLruItem) * (UINT)i)) == 0)
|
||||
{
|
||||
// Shift the other items
|
||||
for (j=i;j>0;j--)
|
||||
lstrcpy((lpMruMenu->lpMRU) + (lpMruMenu->wMaxSizeLruItem * (UINT)j),
|
||||
(lpMruMenu->lpMRU) + (lpMruMenu->wMaxSizeLruItem * (UINT)(j-1)));
|
||||
_fstrncpy(lpMruMenu->lpMRU,lpItem,lpMruMenu->wMaxSizeLruItem-1);
|
||||
return ;
|
||||
}
|
||||
lpMruMenu->wNbItemFill = min(lpMruMenu->wNbItemFill+1,lpMruMenu->wNbLruMenu);
|
||||
for (i=lpMruMenu->wNbItemFill-1;i>0;i--)
|
||||
lstrcpy(lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)i),
|
||||
lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)(i-1)));
|
||||
_fstrncpy(lpMruMenu->lpMRU,lpItem,lpMruMenu->wMaxSizeLruItem-1);
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// DelMenuItem()
|
||||
//
|
||||
// Purpose:
|
||||
// Delete an item
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// WORD wItem - Number of Item to set, zero based
|
||||
// BOOL fIDMBased - TRUE : wItem is based on ID menu item
|
||||
// FALSE : wItem is zero-based
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// Used when used open a file, using MRU, and when an error
|
||||
// occured (by example, when file was deleted)
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
BOOL DelMenuItem(LPMRUMENU lpMruMenu,WORD wItem,BOOL fIDMBased)
|
||||
{
|
||||
WORD i;
|
||||
if (fIDMBased)
|
||||
wItem -= (lpMruMenu->wIdMru + 1);
|
||||
if (lpMruMenu->wNbItemFill <= wItem)
|
||||
return FALSE;
|
||||
lpMruMenu->wNbItemFill--;
|
||||
for (i=wItem;i<lpMruMenu->wNbItemFill;i++)
|
||||
lstrcpy(lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)i),
|
||||
lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem * (UINT)(i+1)));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// PlaceMenuMRUItem()
|
||||
//
|
||||
// Purpose:
|
||||
// Add MRU at the end of a menu
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// HMENU hMenu - Handle of menu where MRU must be added
|
||||
// UINT uiItem - Item of menu entry where MRU must be added
|
||||
//
|
||||
// Return: void
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// Used MRU is modified, for refresh the File menu
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
void PlaceMenuMRUItem(LPMRUMENU lpMruMenu,HMENU hMenu,UINT uiItem)
|
||||
{
|
||||
int i;
|
||||
WORD wNbShow;
|
||||
if (hMenu == NULL)
|
||||
return;
|
||||
// remove old MRU in menu
|
||||
for (i=0;i<=(int)(lpMruMenu->wNbLruMenu);i++)
|
||||
RemoveMenu(hMenu,i+lpMruMenu->wIdMru,MF_BYCOMMAND);
|
||||
|
||||
if (lpMruMenu->wNbItemFill == 0)
|
||||
return;
|
||||
|
||||
// If they are item, insert a separator before the files
|
||||
InsertMenu(hMenu,uiItem,MF_SEPARATOR,lpMruMenu->wIdMru,NULL);
|
||||
|
||||
wNbShow = min(lpMruMenu->wNbItemFill,lpMruMenu->wNbLruShow);
|
||||
for (i=(int)wNbShow-1;i>=0;i--)
|
||||
{
|
||||
LPSTR lpTxt;
|
||||
if (lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20))
|
||||
{
|
||||
wsprintf(lpTxt,"&%lu %s",
|
||||
(DWORD)(i+1),lpMruMenu->lpMRU + (lpMruMenu->wMaxSizeLruItem*(UINT)i));
|
||||
InsertMenu(hMenu,(((WORD)i)!=(wNbShow-1)) ? (lpMruMenu->wIdMru+i+2) : lpMruMenu->wIdMru,
|
||||
MF_STRING,lpMruMenu->wIdMru+i+1,lpTxt);
|
||||
GlobalFreePtr(lpTxt);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// SaveMruInIni()
|
||||
//
|
||||
// Purpose:
|
||||
// Save MRU in a private .INI
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// LPSTR lpszSection - Points to a null-terminated string containing
|
||||
// the name of the section
|
||||
// LPSTR lpszFile - Points to a null-terminated string that names
|
||||
// the initialization file.
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// See WritePrivateProfileString API for more info on lpszSection and lpszFile
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
BOOL SaveMruInIni(LPMRUMENU lpMruMenu,LPSTR lpszSection,LPSTR lpszFile)
|
||||
{
|
||||
LPSTR lpTxt;
|
||||
WORD i;
|
||||
|
||||
lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
|
||||
if (lpTxt == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (i=0;i<lpMruMenu->wNbLruMenu;i++)
|
||||
{
|
||||
char szEntry[16];
|
||||
wsprintf(szEntry,"File%lu",(DWORD)i+1);
|
||||
if (!GetMenuItem(lpMruMenu,i,FALSE,lpTxt,lpMruMenu->wMaxSizeLruItem + 10))
|
||||
*lpTxt = '\0';
|
||||
WritePrivateProfileString(lpszSection,szEntry,lpTxt,lpszFile);
|
||||
}
|
||||
GlobalFreePtr(lpTxt);
|
||||
WritePrivateProfileString(NULL,NULL,NULL,lpszFile); // flush cache
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// LoadMruInIni()
|
||||
//
|
||||
// Purpose:
|
||||
// Load MRU from a private .INI
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// LPSTR lpszSection - Points to a null-terminated string containing
|
||||
// the name of the section
|
||||
// LPSTR lpszFile - Points to a null-terminated string that names
|
||||
// the initialization file.
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// See GetPrivateProfileString API for more info on lpszSection and lpszFile
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
BOOL LoadMruInIni(LPMRUMENU lpMruMenu,LPSTR lpszSection,LPSTR lpszFile)
|
||||
{
|
||||
LPSTR lpTxt;
|
||||
WORD i;
|
||||
lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
|
||||
if (lpTxt == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (i=0;i<lpMruMenu->wNbLruMenu;i++)
|
||||
{
|
||||
char szEntry[16];
|
||||
|
||||
wsprintf(szEntry,"File%lu",(DWORD)i+1);
|
||||
GetPrivateProfileString(lpszSection,szEntry,"",lpTxt,
|
||||
lpMruMenu->wMaxSizeLruItem + 10,lpszFile);
|
||||
if (*lpTxt == '\0')
|
||||
break;
|
||||
SetMenuItem(lpMruMenu,i,lpTxt);
|
||||
}
|
||||
GlobalFreePtr(lpTxt);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
BOOL IsWin395OrHigher(void)
|
||||
{
|
||||
WORD wVer;
|
||||
|
||||
wVer = LOWORD(GetVersion());
|
||||
wVer = (((WORD)LOBYTE(wVer)) << 8) | (WORD)HIBYTE(wVer);
|
||||
|
||||
return (wVer >= 0x035F); // 5F = 95 dec
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// SaveMruInReg()
|
||||
//
|
||||
// Purpose:
|
||||
// Save MRU in the registry
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// LPSTR lpszKey - Points to a null-terminated string
|
||||
// specifying the name of a key that
|
||||
// this function opens or creates.
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// Win32 function designed for Windows NT and Windows 95
|
||||
// See RegCreateKeyEx API for more info on lpszKey
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
BOOL SaveMruInReg(LPMRUMENU lpMruMenu,LPSTR lpszKey)
|
||||
{
|
||||
LPSTR lpTxt;
|
||||
WORD i;
|
||||
HKEY hCurKey;
|
||||
DWORD dwDisp;
|
||||
|
||||
lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
|
||||
if (lpTxt == NULL)
|
||||
return FALSE;
|
||||
|
||||
RegCreateKeyEx(HKEY_CURRENT_USER,lpszKey,0,NULL,
|
||||
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hCurKey,&dwDisp);
|
||||
|
||||
for (i=0;i<lpMruMenu->wNbLruMenu;i++)
|
||||
{
|
||||
char szEntry[16];
|
||||
wsprintf(szEntry,"File%lu",(DWORD)i+1);
|
||||
if (!GetMenuItem(lpMruMenu,i,FALSE,lpTxt,lpMruMenu->wMaxSizeLruItem + 10))
|
||||
*lpTxt = '\0';
|
||||
RegSetValueEx(hCurKey,szEntry,0,REG_SZ,(unsigned char*)lpTxt,lstrlen(lpTxt));
|
||||
}
|
||||
RegCloseKey(hCurKey);
|
||||
GlobalFreePtr(lpTxt);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// LoadMruInReg()
|
||||
//
|
||||
// Purpose:
|
||||
// Load MRU from the registry
|
||||
//
|
||||
// Parameters:
|
||||
// LPMRUMENU lpMruMenu - pointer on MRUMENU
|
||||
// LPSTR lpszKey - Points to a null-terminated string
|
||||
// specifying the name of a key that
|
||||
// this function opens or creates.
|
||||
//
|
||||
// Return: (BOOL)
|
||||
// TRUE - Function run successfully
|
||||
// FALSE - Function don't run successfully
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// Win32 function designed for Windows NT and Windows 95
|
||||
// See RegOpenKeyEx API for more info on lpszKey
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
BOOL LoadMruInReg(LPMRUMENU lpMruMenu,LPSTR lpszKey)
|
||||
{
|
||||
LPSTR lpTxt;
|
||||
WORD i;
|
||||
HKEY hCurKey;
|
||||
DWORD dwType;
|
||||
lpTxt = (LPSTR)GlobalAllocPtr(GHND,lpMruMenu->wMaxSizeLruItem + 20);
|
||||
if (lpTxt == NULL)
|
||||
return FALSE;
|
||||
|
||||
RegOpenKeyEx(HKEY_CURRENT_USER,lpszKey,0,KEY_READ,&hCurKey);
|
||||
|
||||
|
||||
for (i=0;i<lpMruMenu->wNbLruMenu;i++)
|
||||
{
|
||||
char szEntry[16];
|
||||
DWORD dwSizeBuf;
|
||||
wsprintf(szEntry,"File%lu",(DWORD)i+1);
|
||||
*lpTxt = '\0';
|
||||
dwSizeBuf = lpMruMenu->wMaxSizeLruItem + 10;
|
||||
RegQueryValueEx(hCurKey,szEntry,NULL,&dwType,(LPBYTE)lpTxt,&dwSizeBuf);
|
||||
*(lpTxt+dwSizeBuf)='\0';
|
||||
if (*lpTxt == '\0')
|
||||
break;
|
||||
SetMenuItem(lpMruMenu,i,lpTxt);
|
||||
}
|
||||
RegCloseKey(hCurKey);
|
||||
GlobalFreePtr(lpTxt);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************
|
||||
//
|
||||
// GetWin32Kind()
|
||||
//
|
||||
// Purpose:
|
||||
// Get the Win32 platform
|
||||
//
|
||||
// Parameters:
|
||||
//
|
||||
// Return: (WIN32KIND)
|
||||
// WINNT - Run under Windows NT
|
||||
// WIN32S - Run under Windows 3.1x + Win32s
|
||||
// WIN95ORGREATHER - Run under Windows 95
|
||||
//
|
||||
//
|
||||
// Comments:
|
||||
// Win32 function designed for Windows NT and Windows 95
|
||||
// See RegOpenKeyEx API for more info on lpszKey
|
||||
//
|
||||
// History: Date Author Comment
|
||||
// 09/24/94 G. Vollant Created
|
||||
//
|
||||
//*************************************************************
|
||||
WIN32KIND GetWin32Kind()
|
||||
{
|
||||
BOOL IsWin395OrHigher(void);
|
||||
|
||||
WORD wVer;
|
||||
|
||||
if ((GetVersion() & 0x80000000) == 0)
|
||||
return WINNT;
|
||||
wVer = LOWORD(GetVersion());
|
||||
wVer = (((WORD)LOBYTE(wVer)) << 8) | (WORD)HIBYTE(wVer);
|
||||
|
||||
if (wVer >= 0x035F)
|
||||
return WIN95ORGREATHER;
|
||||
else
|
||||
return WIN32S;
|
||||
}
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue