Loading a FormView based on the Screen Resolution


When you generate a formview based application or generally when you are using formview derived class, you will find this piece of code.

 : CFormView(CTempView::IDD)

Now depending upon the resolution you want to load the resource i.e. for 1024x768 you want to load CTempView::IDD and for 800x600 you want to load CTempView::IDD1. If you try to write the code for selecting the resource directly in the constructor i.e. something like this
    /*logic to find the resolution, bResol will be true if it is 1024x768*
        id = CTempView::IDD;
        id = CTempView::IDD1;
  // Call the formview costructor here.

!-- end the block of source code -->
The Compiler will crib and it will not compile. The solution is to have a global object which gets constructed before the formview and assign a global variable with the appropriate resource id, so that it can be used in the FormView constructor. The code looks something like this.
static int g_ID;
static struct _stDummy
  /* logic to find the resolution *
  int x = GetSystemMetrics(SM_CXSCREEN);
  if(x == 1024)
   g_ID = CTempView::IDD;
  else /* for 800x600 and any other resolution*
   g_ID = CTempView::IDD1;
}g_Dummy; /* dummy object *

CTempView::CTempView() :CFormView(g_ID)
!-- end the block of source code -->
Now the g_Dummy object gets constructed first and your logic for selecting the resource id is done here and the id is stored in g_ID which is later being used in the formview constructor. Now the compiler works happily and so does the code.


  • amazing

    Posted by Karsten Schmidt on 11/19/2012 05:18am

    thats exactly what I have searched, and it still works on vs 2010 14years later, great job!

  • That is what I was looking

    Posted by Macky on 01/15/2005 10:47am


  • I looking for This...Cool(No contents)

    Posted by Legacy on 04/23/2002 12:00am

    Originally posted by: Grassh


  • How to have the controls laid out more neatly?

    Posted by Legacy on 07/02/2001 12:00am

    Originally posted by: Muralia Dhar

    Can anyone please tell me how to make a view class (derivd from CFormView perhaps) that looks more organized, like an HTML form? normally the dialog box template that the cformview uses is just put there on the left side. how to make it "centered" and "spread out"? basically i want to have my controls laid out more neatly. Please help!!!

  • Please check the comments

    Posted by Legacy on 12/08/2000 12:00am

    Originally posted by: J.L. TRYOEN

    the comment : use a function call in the initializer instead of a global. - Joe Shapiro (1998/12/10)
    is not more valid

  • Re: Bitmaps in menu are not created at startup when a document is not first loaded in MDI Frame

    Posted by Legacy on 04/26/1999 12:00am

    Originally posted by: Brent Corkum

    You must no be adding the icons to your default menu. You have to add the icons to BOTH the mainframe menu and the default menu (see the example). You'll notice that if you add this code to the example that comes with the class that you do not get a document and you get the bitmaps in the default menu.

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

Top White Papers and Webcasts

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

  • Enterprises are increasingly looking to platform as a service (PaaS) to lower their costs and speed their time to market for new applications. Developing, deploying, and managing applications in the cloud eliminates the time and expense of managing a physical infrastructure to support them. PaaS offerings must deliver additional long-term benefits, such as a lower total cost of ownership (TCO), rapid scalability, and ease of integration, all while providing robust security and availability. This report …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date