IconsST v1.2 - A collection of useful icons contained into a DLL
SoftechSoftware homepage
SoftechSoftware Email
Environment: VC6 SP5, NT4, Win2000, Win9x/ME
Abstract
IconsST is a resource-only DLL containing a number of useful, ready-to-use icons of various sizes and colors. This DLL can be loaded and accessed using the commong Win32 API functions or via the CResourceServerST class.
CResourceServerST used to load a generic resource-only DLL and to access nearly all the resource types that can be contained. Current version of CResourceServerST is 1.1
The demo application shows only a small number of the icons contained in the DLL. For the complete list of the icons please refer to this image.
How to integrate CResourceServerST in your application
In your project include the following files:
- ResourceServerST.h
- ResourceServerST.cpp
CResourceServerST m_Icons;
Now lets create the instance to load a DLL. This can be done in the application init-section or, for dialog-based applications, in your OnInitDialog:
// Load IconsST.dll
DWORD dwRetValue;
dwRetValue = m_Icons.Load(_T("c:\\IconsST.dll"));
ASSERT(dwRetValue == RESSRVST_OK);
The DLL will be automatically unloaded when the instance goes out of scope. To manually unload the DLL (for example to load another one) the UnLoad() method can be used:
// Unload IconsST.dll
DWORD dwRetValue;
dwRetValue = m_Icons.UnLoad();
ASSERT(dwRetValue == RESSRVST_OK);
Class methods
CResourceServerST
Constructs a CResourceServerST object. Optionally a DLL can be loaded.
// Parameters:
// [IN] lpszDllName
// Points to a zero-terminated string containing the
// complete path and name of the DLL to load.
// [IN] dwFlags
// Specifies the action to take when loading the DLL.
// For a complete list of the available flags please
// refer to the online help for the Win32 API function
// LoadLibraryEx.
//
// Return value:
//
// No value can be returned by a constructor. Call the
// CResourceServerST::GetLastError() function to get the return
// value. Possible values are:
//
// RESSRVST_OK
// Class initialized and DLL loaded successfully.
// RESSRVST_NOINIT
// Load failed.
// Class not initialized.
// RESSRVST_ALREADYINIT
// Class is already handling a DLL.
// RESSRVST_DLLNOTFOUND
// The specified DLL cannot be found.
//
CResourceServerST(LPCTSTR lpszDllName = NULL, DWORD dwFlags = 0)
LoadInitializes the CResourceServerST class loading the specified DLL.
// Parameters:
// [IN] lpszDllName
// Points to a zero-terminated string containing the
// complete path and name of the DLL to load.
// [IN] dwFlags
// Specifies the action to take when loading the DLL.
// For a complete list of the available flags please
// refer to the online help for the Win32 API function
// LoadLibraryEx.
//
// Return value:
// RESSRVST_OK
// Class initialized and DLL loaded successfully.
// RESSRVST_NOINIT
// Load failed.
// Class not initialized.
// RESSRVST_ALREADYINIT
// Class is already handling a DLL.
// RESSRVST_DLLNOTFOUND
// The specified DLL cannot be found.
//
DWORD Load(LPCTSTR lpszDllName, DWORD dwFlags = 0)
UnLoadUnloads the previously loaded DLL.
// Return value:
// RESSRVST_OK
// DLL unloaded or no DLL previously loaded.
// RESSRVST_FREELIBRARYKO
// ::FreeLibrary has failed (The class remains
// initialized).
//
DWORD UnLoad()
LoadImageLoads an icon, cursor or bitmap.
// Parameters:
// [IN] lpszName
// Name or identifier of the image to load.
// [IN] uType
// Type of the image. Can be one of the following types:
// IMAGE_BITMAP
// IMAGE_CURSOR
// IMAGE_ICON
// [IN] cxDesired
// Desired width.
// [IN] cyDesired
// Desired height.
// [IN] fuLoad
// Load flags. For a complete list of the available
// flags please refer to the online help for the
// Win32 API function LoadImage.
//
// Return value:
// If the function succeeds, the return value is the handle
// of the newly loaded image.
// If the function fails, the return value is NULL.
//
HANDLE LoadImage( LPCTSTR lpszName,
UINT uType,
int cxDesired,
int cyDesired,
UINT fuLoad)
LoadImageLoads an icon, cursor or bitmap.
// Parameters:
// [IN] uID
// Specifies the integer identifier of the image to load
// [IN] uType
// Type of the image. Can be one of the following types:
// IMAGE_BITMAP
// IMAGE_CURSOR
// IMAGE_ICON
// [IN] cxDesired
// Desired width.
// [IN] cyDesired
// Desired height.
// [IN] fuLoad
// Load flags. For a complete list of the available
// flags please refer to the online help for the
// Win32 API function LoadImage.
//
// Return value:
// If the function succeeds, the return value is
// the handle of the newly loaded image.
// If the function fails, the return value is NULL.
//
HANDLE LoadImage( UINT uID,
UINT uType,
int cxDesired,
int cyDesired,
UINT fuLoad)
LoadIconLoads an icon.
// Parameters:
// [IN] lpszName
// Name or identifier of the icon to load.
//
// Return value:
// If the function succeeds, the return value is the HICON
// handle of the newly loaded icon.
// If the function fails, the return value is NULL.
//
HICON LoadIcon(LPCTSTR lpszName)
LoadIconLoads an icon.
// Parameters:
// [IN] uID
// Specifies the integer identifier of the icon to load.
//
// Return value:
// If the function succeeds, the return value is the HICON handle of the
// newly loaded icon.
// If the function fails, the return value is NULL.
//
HICON LoadIcon(UINT uID)
LoadStringLoads a string from a stringtable in the DLL.
// Parameters:
// [IN] uID
// Specifies the integer identifier of the string
// to be loaded.
// [OUT] lpBuffer
// Points to the buffer to receive the string.
// [IN] nBufferMax
// Specifies the size of the buffer in bytes (ANSI
// version) or characters (Unicode version). The
// string is truncated and null terminated if it is
// longer than the number of characters specified.
//
// Return value:
// If the function succeeds, the return value is the
// number of bytes (ANSI version) or characters (Unicode
// version) copied into the buffer, not including the
// null-terminating character, or zero if the string
// resource does not exist
//
DWORD LoadString(UINT nID, LPTSTR lpBuffer, int nBufferMax)
LoadStringLoads a string from a stringtable in the DLL.
// Parameters:
// [IN] uID
// Specifies the integer identifier of the string
// to load.
// [OUT] spBuffer
// Points to a CString object to receive the string.
//
// Return value:
// RESSRVST_OK
// Function executed successfully.
// RESSRVST_NOINIT
// No DLL was previously loaded.
// RESSRVST_INVALIDPTR
// Invalid pointer to CString passed.
// RESSRVST_RESNOTFOUND
// The specified resource identifier was not found.
//
DWORD LoadString(UINT nID, CString* spBuffer)
FindResourceDetermines the location of a resource with the specified type and name.
// Parameters:
// [IN] lpName
// Pointer to resource name.
// [IN] lpType
// Pointer to resource type.
//
// Return value:
// If the function succeeds, the return value is a handle
// to the specified resources info block. To obtain a
// handle to the resource, pass this handle to the
// LoadResource function.
// If the function fails, the return value is NULL.
//
HRSRC FindResource(LPCTSTR lpName, LPCTSTR lpType)
LoadResourceLoads into global memory the resource with the specified type and name.
// Parameters:
// [IN] lpszName
// Pointer to resource name.
// [IN] lpszType
// Pointer to resource type.
//
// Return value:
// If the function succeeds, the return value is a handle
// to the global memory block containing the data
// associated with the resource.
// If the function fails, the return value is NULL.
//
// The return type of LoadResource is HGLOBAL for backward
// compatibility, not because the function returns a handle
// to a global memory block. Do not pass this handle to the
// GlobalLock or GlobalFree function.
// To obtain a pointer to the resource data, call the
// LockResource function.
// For a more informations please refer to the online help
// for the Win32 API function LoadResource.
//
HGLOBAL LoadResource(LPCTSTR lpszName, LPCTSTR lpszType)
LoadResourceLoads into global memory the resource with the specified type and name.
// Parameters:
// [IN] hResInfo
// Handle to resource's info block
//
// Return value:
// If the function succeeds, the return value is a handle to the
// global memory block containing the data associated with the resource.
// If the function fails, the return value is NULL.
//
// The return type of LoadResource is HGLOBAL for backward compatibility,
// not because the function returns a handle to a global memory block.
// Do not pass this handle to the GlobalLock or GlobalFree function.
// To obtain a pointer to the resource data, call the LockResource function.
// For a more informations please refer to the online help for the
// Win32 API function LoadResource.
//
HGLOBAL LoadResource(HRSRC hResInfo)
LoadDialogLoads into global memory the specified dialog template.
// Parameters:
// [IN] nID
// Contains the ID number of a dialog-box template
// resource.
//
// Return value:
// If the function succeeds, the return value is a handle
// to the global memory block containing the dialog-box
// template specified. If the function fails, the return
// value is NULL.
//
// The return type of LoadResource is HGLOBAL for
// backward compatibility, not because the function returns
// a handle to a global memory block. Do not pass this
// handle to the GlobalLock or GlobalFree function.
// To obtain a pointer to the resource data, call the
// LockResource function.
// For a more informations please refer to the online help
// for the Win32 API function LoadResource.
//
HGLOBAL LoadDialog(UINT nID)
GetLastErrorReturns the last error generated by the class.
// Return value:
// The last error generated by the class. RESSRVST_OK '
// if no error.
//
DWORD GetLastError()
CResourceServerST History
- v1.1 (26/November/2001)
First public release - v1.0 (26/August/1999)
Private release
Want to include CResourceServerST in a DLL ?
CResourceServerST is ready to be used from inside a DLL. You need to export from your DLL CResourceServerST. Include in your DLL's project the following files:
- ResourceServerST.h
- ResourceServerST.cpp
- _CMLHTDLL_NOLIB_
- _CMLHTDLL_BUILDDLL_
ResourceServerST.h comment the following line:
#define _RESOURCESERVERST_NODLL_then update the various
#pragma comment(lib, "???") according to your DLL produced .lib files.

Comments
WOW - wish I could make icons like that., guess I am not the artistic type :-/
Posted by Legacy on 06/11/2003 12:00amOriginally posted by: Jens Winslow
WOW - wish I could make icons like that, guess I am not the artistic type :-(
Thanks to you and the other authors / creators of the icons, and kudos to you for making it available.
Reply
Nice work.
Posted by Legacy on 12/25/2001 12:00amOriginally posted by: Frank Cheng
You did a nice work.
ReplyPerfect work
Posted by Legacy on 12/05/2001 12:00amOriginally posted by: Petr Havlicek
It's very nice example of dynamical loading of resources Dave, so don't fell disturbed by some s****d people, who want to just make noise. Is anybody of them made some 'public' code before and distributed it? I think that you made very good work and using of M$ icons - it's about example for developers, not about commercial application.. The guys from M$ will shake hands with you for this example:))
Thanks
ReplyPetr
Ignore People Who Think They are God!
Posted by Legacy on 11/30/2001 12:00amOriginally posted by: Bill SerGio
You have the right to re-distribute the icons--read Microsoft's license agreement.
What is amusing is the SELF-righteous people who THINK they know something and are all too quick to act like the "Thought Police" who are going to protect us from ourselves. The mentality of these people, i.e., the "thought Police," make me sick and we all need to put them in their place FAST!
Stand up for your rights!
Great article!
ReplyUhh, dude.. This is illegal..
Posted by Legacy on 11/28/2001 12:00amOriginally posted by: Kris Matthews
Anybody notice that these are a bunch of stock Windows XP icons? This is called plagiarizing [http://www.m-w.com/cgi-bin/dictionary?book=Dictionary&va=plagiarizing] I think the author of this article may need the link.
Uh, yeah, it's against the law. Why did CodeGuru even accept this link? It's *ok* to accept the code; that's not the issue.. It's the DLL that this [expletive deleted] is trying to pass off as his own.
AIM: negacao
ReplyEMail: matthewskris at yahoo dot com