IconsST v1.2 - A collection of useful icons contained into a DLL

Sample Image

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
Where needed, create an instance of CResourceServerST:
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)
Load
Initializes 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)
UnLoad
Unloads 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()
LoadImage
Loads 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)
LoadImage
Loads 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)
LoadIcon
Loads 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)
LoadIcon
Loads 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)
LoadString
Loads 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)
LoadString
Loads 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)
FindResource
Determines 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)
LoadResource
Loads 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)
LoadResource
Loads 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)
LoadDialog
Loads 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)
GetLastError
Returns 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
Add to your DLL's project settings the following defines:
  • _CMLHTDLL_NOLIB_
  • _CMLHTDLL_BUILDDLL_
From ResourceServerST.h comment the following line:
#define _RESOURCESERVERST_NODLL_
then update the various #pragma comment(lib, "???") according to your DLL produced .lib files.

Downloads

Download demo project - 185 Kb

Article History



Comments

  • WOW - wish I could make icons like that., guess I am not the artistic type :-/

    Posted by Legacy on 06/11/2003 12:00am

    Originally 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:00am

    Originally posted by: Frank Cheng

    You did a nice work.

    Reply
  • Perfect work

    Posted by Legacy on 12/05/2001 12:00am

    Originally 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
    Petr

    Reply
  • Ignore People Who Think They are God!

    Posted by Legacy on 11/30/2001 12:00am

    Originally 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!

    Reply
  • Uhh, dude.. This is illegal..

    Posted by Legacy on 11/28/2001 12:00am

    Originally 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
    EMail: matthewskris at yahoo dot com

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: October 29, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT Are you interested in building a cognitive application using the power of IBM Watson? Need a platform that provides speed and ease for rapidly deploying this application? Join Chris Madison, Watson Solution Architect, as he walks through the process of building a Watson powered application on IBM Bluemix. Chris will talk about the new Watson Services just released on IBM bluemix, but more importantly he will do a step by step cognitive …

  • It's not unusual for a company to use a variety of formal and informal file-sharing methods. Many methods are fraught with significant operational, financial, and legal risks in addition to other potentially negative business consequences. Strategic managed file transfer (MFT) software and services help connect the business "dots" between the various ad hoc and more systematic ways that files are moved. Read this white paper to learn how the right MFT solution, can bring order, structure, and, importantly, …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds