Solved

Creating a custom resource

Posted on 1998-05-05
9
472 Views
Last Modified: 2013-11-20
I would like to create a custom resource to define a specific column format. I want the format to have some
properties like the title, data type, position of the column, etc.. I want to be able to add it as a general
resource. How do I go about doing this?
Thanks.
0
Comment
Question by:pcasxd0
  • 5
  • 2
  • 2
9 Comments
 
LVL 1

Expert Comment

by:dkremer
ID: 1307756
Hi.
You can define the resource format in a CObject derived class that supports serialization, save the data to a normal file, then import it to your resource using Visual C++ import command. Then to access the data load the resource, lock it in memory, and use CMemFile to wrap the memory block, then CArchive with that file, and serialize your data back...
I'll try to create a simple sample for you and post it.

0
 

Author Comment

by:pcasxd0
ID: 1307757
That would be a life-saver. I hadn't done anything like this previously, so, I couldn't even understand much of what you said. :-) So, I hope that with some sample code, I could do better. Thanks.
0
 
LVL 1

Accepted Solution

by:
dkremer earned 150 total points
ID: 1307758
Ok... finished the little sample... send your e-mail and I'll mail it to ya.. :)
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 1

Expert Comment

by:dkremer
ID: 1307759
If you prefer... copy the uu-encoded sample and decode it :)
I'm feeling helpful today :)
begin 644 rcdata.zip
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
M4$L!`A0`%``"``@`!$RF),&_,X?D!```"`T```H``````````0`@`+:!X0,`
M`%)E861-92YT>'102P$"%``*```````$3*8D````````````````!```````
M`````!``_T'M"```<F5S+U!+`0(4`!0``@`(``1,IB3DY`T25`$``#8$```-
M````````````(`"V@0\)``!R97,O5&5S=#(N:6-O4$L!`A0`%``"``@`!$RF
M)/EU)&6J````C0$```T``````````0`@`+:!C@H``')E<R]497-T,BYR8S)0
M2P$"%``4``(`"`!W5Z8D7VW;XE$!```T`P``"@`````````!`"``MH%C"P``
M<F5S;W5R8V4N:%!+`0(4`!0``@`(``1,IB3C?E/>AP```,L````*````````
M``$`(`"V@=P,``!3=&1!9G@N8W!P4$L!`A0`%``"``@`J$VF)%M\+,T%`@``
M!`0```@``````````0`@`+:!BPT``%-T9$%F>"YH4$L!`A0`%``"``@`;5>F
M)!'MXN%"````1`````@````````````@`+:!M@\``%1E<W0N='-T4$L!`A0`
M%``"``@`FE:F)*U^//\>`@``A08```D``````````0`@`+:!'A```%1E<W0R
M+F-L=U!+`0(4`!0``@`(``1,IB2=XKD=8@,```$(```)``````````$`(`"V
M@6,2``!497-T,BYC<'!02P$"%``4``(`"``X6*8D1R*\)60$```C$0``"0``
M```````!`"``MH'L%0``5&5S=#(N9'-P4$L!`A0`%``"``@`!$RF)'+?3+W-
M````%0(```D``````````0`@`+:!=QH``%1E<W0R+F1S=U!+`0(4`!0``@`(
M``1,IB1,@(5!:P(``"D%```'``````````$`(`"V@6L;``!497-T,BYH4$L!
M`A0`%``"``@`3EBF))2U@J_U!0```+X```D``````````0`@`+:!^QT``%1E
M<W0R+F]P=%!+`0(4`!0``@`(`#%8IB0X2%/C_`$``.4#```)``````````$`
M(`"V@1<D``!497-T,BYP;&=02P$"%``4``(`"`!W5Z8D\OXA2C8&```G%P``
M"``````````!`"``MH$Z)@``5&5S=#(N<F-02P$"%``4``(`"``E6*8D53'U
M.\4+```C'P``#``````````!`"``MH&6+```5&5S=#)$;&<N8W!P4$L!`A0`
M%``"``@`-52F)+^%%A&M`@``@P4```H``````````0`@`+:!A3@``%1E<W0R
;1&QG+FA02P4&`````!0`%`!-!```6CL`````
`
end

0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1307760
Could you just put the source code here for others to read ??  I'd be interested to read it.  (even just the crucial routings that generate and load the resource would be nice.


0
 
LVL 1

Expert Comment

by:dkremer
ID: 1307761
He's the importand stuff... uudecode the previous comment for the whole project.

/*
** ***********************
** * CMyClass Definition *
** ***********************
*/

class CMyClass : public CObject
{
      DECLARE_SERIAL(CMyClass)

public:
      CMyClass();
      CMyClass(CString, CString, int);
      virtual ~CMyClass();

      void Serialize(CArchive &);

      CString GetFirstName() { return m_sFirstName; }
      CString GetLastName() { return m_sLastName; }
      int GetAge() { return m_nAge; }

protected:
      CString      m_sFirstName,            // First Name
            m_sLastName;            // Last Name
      int      m_nAge;                  // Age
};

/*
** *****************************
** * CMyClass - Implementation *
** *****************************
*/

/*
** MFC Serialization support
*/

IMPLEMENT_SERIAL(CMyClass, CObject, 1)

/*
** Constructors
*/

CMyClass::CMyClass() : m_nAge(0), CObject()
{
      // Strings have thier own constructors and need not be initialized
}

CMyClass::CMyClass(CString sFirstName, CString sLastName, int nAge) :
      m_sFirstName(sFirstName),
      m_sLastName(sLastName),
      m_nAge(nAge),
      CObject()
{
}

/*
** Destructor
*/

CMyClass::~CMyClass()
{
}

/*
** Serialization
*/

void CMyClass::Serialize(CArchive &ar)
{
      CObject::Serialize(ar); // Call our base class

      if(ar.IsLoading())
      {
            ar >> m_sFirstName >> m_sLastName >> m_nAge;
      }
      else
      {
            ar << m_sFirstName << m_sLastName << m_nAge;
      }
}

/*
** ************************
** * CMyList - Definition *
** ************************
*/

typedef CTypedPtrList<CObList, CMyClass *> CMyBaseList;

class CMyList : public CMyBaseList
{
public:
      CMyList();
      virtual ~CMyList();

protected:
      virtual void Kill();
};

/*
** ****************************
** * CMyList - Implementation *
** ****************************
*/

/*
** Constructor
*/

CMyList::CMyList() : CMyBaseList()
{
}

/*
** Destructor
*/

CMyList::~CMyList()
{
      Kill(); // Kill elements in the list
}

/*
** Kill List - kinda list RemoveAll, except it deletes the objects as well
*/

void CMyList::Kill()
{
      while(!IsEmpty())
            delete RemoveHead();
}

/*
** Ok, the main program is a dialog which has an OK, Cancel,
** Save Data and Load Data buttons on it, and an edit box
** to provide output. There are two functions called Report
** which takes a CString and shows it in the edit box, and a
** ReportError function which takes no parameters and that
** reports the error code returned by GetLastError().
** Here's the handlers for the buttons.
**
** Sorry about how it looks, but It doesn't fit in this small
** text box...
*/

/*
** OnSaveData will create a file names Test.tst in your current directory.
** You then import it to your resource by right clicking on your project resources
** in the resources pane.
*/

void CTest2Dlg::OnSaveData()
{
      CMyList list;
      BOOL bSuccess = TRUE;
      CMemFile *pMemFile = new CMemFile;
      CArchive *pArchive = NULL;
      long nLength = 0;

      list.AddTail(new CMyClass("John", "Doe", 120));
      list.AddTail(new CMyClass("Bill", "Gates", 666));
      list.AddTail(new CMyClass("Frank", "Black", 123));

      pArchive = new CArchive(pMemFile, CArchive::store); // Create a new CArchive based on the memory file
      list.Serialize(*pArchive); // Save the data
      pArchive->Flush(); // Flush it
      nLength = pMemFile->GetLength(); // Save the length
      pArchive->Close(); // Close the archive, but not the memory file
      pMemFile->SeekToBegin(); // Goto the beginning of the memory file
      
      // Copy the data in memory to the disk file.
      // The only reason this was first serialized to memory instead of disk is
      // to know the size of the file.
      TRY
      {
            CFile file("Test.tst", CFile::modeCreate | CFile::modeWrite);
            LPVOID lpData = new BYTE[nLength];
            long nVerifyLength = 0;

            file.Write(&nLength, sizeof(long)); // Write the length first
            nVerifyLength = pMemFile->Read(lpData, nLength); // Get a pointer to the data in the memory file
            ASSERT(nVerifyLength == nLength); // Should be equal
            file.Write(lpData, nLength); // Write the data itself
            file.Close(); // Close the file
            delete lpData; // Free the memory
      }
      CATCH_ALL(e)
      {
            Report("Unable to save sample data");
            e->Delete();
            bSuccess = FALSE;
      }
      END_CATCH_ALL

      pMemFile->Close(); // Close the memory file
      delete pMemFile; // Delete from heap
      
      if(bSuccess)
            Report("Sample data saved");
}

/*
** OnLoadData will load the the file saved to the resource and write the data to the
** edit box
*/

void CTest2Dlg::OnLoadData()
{
      CMyList list;
      BOOL bSuccess = FALSE;
      LPCTSTR lpszResName = MAKEINTRESOURCE(IDR_SAMPLERES);
      HINSTANCE m_hInst = AfxFindResourceHandle(lpszResName,RT_RCDATA);
      HRSRC hRes = ::FindResource(m_hInst, lpszResName, RT_RCDATA); // Locate the resource

      if(hRes) // Resource found ?
      {
            // Load the resouce
            HGLOBAL hGlb = ::LoadResource(NULL, hRes);

            if(hGlb) // Load successful ?
            {
                  BYTE *lpData = (BYTE *) ::LockResource(hGlb);

                  if(lpData) // Data available ?
                  {
                        long nLength = *((long *) lpData); // Get the data length
                        CMemFile *pMemFile = NULL;
                        CArchive *pArchive = NULL;

                        lpData += sizeof(long); // Move to the beginning of the data
                        TRY
                        {
                              pMemFile = new CMemFile(lpData, nLength);
                              pArchive = new CArchive(pMemFile, CArchive::load);

                              list.Serialize(*pArchive);

                              pArchive->Close();
                              pMemFile->Close();

                              bSuccess = TRUE;
                        }
                        CATCH_ALL(e)
                        {
                              Report("Unable to load data from resource");
                              e->Delete();
                        }
                        END_CATCH_ALL

                        // Delete objects from heap
                        delete pArchive;
                        delete pMemFile;
                  }
            }
      }

      if(bSuccess)
      {
            CString sLine;
                  
            // Fill list
            for(POSITION pl = list.GetHeadPosition() ; pl != NULL ;)
            {
                  CMyClass *pClass = list.GetNext(pl);
                  CString sAge;

                  // Build a report line
                  sLine += pClass->GetFirstName();
                  sLine += ", ";
                  sLine += pClass->GetLastName();
                  sLine += ", ";
                  sAge.Format("%ld", pClass->GetAge());
                  sLine += sAge;
                  sLine += char(13);
                  sLine += char(10);
            }

            // Dump it
            Report(sLine);
      }
      else
      {
            ReportError();
      }
}

0
 
LVL 1

Expert Comment

by:dkremer
ID: 1307762
Great, I see it removed all the tab characters... once again, sorry folks :)
0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1307763
Convert your tabs to spaces before posting .. It's a pain when you copy and paste direct from DevStudio, as DevStudio replaces your spaces with tabs .. so you may need to put an extra step in to do the change (in Word perhaps or use a detab utilite).
0
 

Author Comment

by:pcasxd0
ID: 1307764
Thank you very much. Getting a sample, executing it and looking at the code helped a lot. Thanks.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Unix / Linux grid computing 5 163
sum28 challenge 31 115
has77  challenge 9 90
Dell Alienware Graphics Amplifier Driver for non-Alienware systems 18 350
This is to be the first in a series of articles demonstrating the development of a complete windows based application using the MFC classes.  I’ll try to keep each article focused on one (or a couple) of the tasks that one may meet.   Introductio…
If you use Adobe Reader X it is possible you can't open OLE PDF documents in the standard. The reason is the 'save box mode' in adobe reader X. Many people think the protected Mode of adobe reader x is only to stop the write access. But this fe…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question