XP style controls in non-unicode app

I am writing an application in VS2005. Due to the need to eventually
reuse roughly 50k lines of existing non-unicode code, I cannot compile
with the unicode flag. This flag appears to be controlling which style
of MFC controls are used in my dialogs. In other words, if I build it
as a unicode application I get the newer rounder controls, from winXP
I believe. If I build it without unicode support I get the older,
square style of buttons, etc. from the VS6 days. Do the new styles
require unicode support, or is there a way around it?

thanks

0
jgoforth (2)
4/24/2007 2:48:17 PM
vc.mfc 33608 articles. 0 followers. Follow

11 Replies
665 Views

Similar Articles

[PageSpeed] 23

j.goforth wrote:
> I am writing an application in VS2005. Due to the need to eventually
> reuse roughly 50k lines of existing non-unicode code, I cannot compile
> with the unicode flag. This flag appears to be controlling which style
> of MFC controls are used in my dialogs. In other words, if I build it
> as a unicode application I get the newer rounder controls, from winXP
> I believe. If I build it without unicode support I get the older,
> square style of buttons, etc. from the VS6 days. Do the new styles
> require unicode support, or is there a way around it?

This is an old problem. There is some bug in version 6 of the Common 
control library which affects some ANSI-compiled MFC programs (ones that 
use CEditView in a particular way I think). Rather than fix the problem, 
MS decided in their infinite wisdom to not generate theme support via a 
manifest in ANSI applications.

However if you generate the manifest yourself, it would almost certainly 
work. In fact you could do this in VC6 already. I just generate an 
external manifest and distribute it with my ANSI-compiled application.

When you make your manifest, you should include both a "common controls 
6" section and a "Vista aware" section. Then you will get themes in XP 
and Vista (including Aero on Vista), and your application will not be 
subject to virtualization and other such crutches (of course you must 
write your application so it works without these crutches).

-- 
David Wilkinson
Visual C++ MVP
0
no-reply8010 (1791)
4/24/2007 3:25:50 PM
"David Wilkinson" <no-reply@effisols.com> wrote in message 
news:eHo3XTohHHA.4132@TK2MSFTNGP05.phx.gbl...
> When you make your manifest, you should include both a "common controls 6" 
> section and a "Vista aware" section. Then you will get themes in XP and 
> Vista (including Aero on Vista), and your application will not be subject 
> to virtualization and other such crutches (of course you must write your 
> application so it works without these crutches).
>

David, I was not aware of a "Vista aware" section... could you post your 
manifest that has both of the sections you mentioned?

Thanks,
David 


0
dc2983 (3206)
4/24/2007 4:36:49 PM
"j.goforth" <jgoforth@gmail.com> wrote in message 
news:1177426097.824601.268040@b40g2000prd.googlegroups.com...

>I am writing an application in VS2005. Due to the need to eventually
> reuse roughly 50k lines of existing non-unicode code, I cannot compile
> with the unicode flag. This flag appears to be controlling which style
> of MFC controls are used in my dialogs. In other words, if I build it
> as a unicode application I get the newer rounder controls, from winXP
> I believe. If I build it without unicode support I get the older,
> square style of buttons, etc. from the VS6 days. Do the new styles
> require unicode support, or is there a way around it?


The actual "common controls 6" DLL, which is what produces the new style 
controls, is launched by asking for it in your application's manifest, (and 
it may be that a Unicode puts that in by default for you).   The appropriate 
XML text for the manifest is

<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>

If you put that in does it work?

Some further comments:

1. As far as I know, the unicode definitions just make TCHAR become wchar_t 
instead of char, and make the windows API functions (eg 
::GetTextExtentPoint32) default to the unicode set (eg 
::GetTextExtentPoint32W) instead of the ascii set (eg 
::GetTextExtentPoint32A) and so on.    I still call 
::GetTextExtentPoint32A() explicitly from a unicode app (for subtle reasons) 
and so it isn't as if the "other set" are unavailable.   The concept of a 
"Unicode app" is nothing deep therefore: it is just a question of which sets 
of functions and types you use by default.

2.  The Themes/Visual styles APIs (eg OpenThemeData) require wide strings (I 
believe there's no ascii vesrion), but as long as you convert them before 
calling, I see no reason why it isn't possible to use them.

3.  It may be worth preparing to turn your 50k lines into unicode by 
replacing char by TCHAR and all the associated stuff.  I did mine (more 
lines that that!) over a period of a year or so while I was doing other 
things.   Then on D-day I defined UNICODE and UNICODE_ and it worked (with 
only one or two minor tweaks required).

Dave
-- 
David Webber
Author MOZART the music processor for Windows -
http://www.mozart.co.uk
For discussion/support see
http://www.mozart.co.uk/mzusers/mailinglist.htm



0
dave1 (356)
4/24/2007 4:51:07 PM
David Ching wrote:

> David, I was not aware of a "Vista aware" section... could you post your 
> manifest that has both of the sections you mentioned?

David:

As I understand it, it's just this trustinfo section:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" 
uiAccess="false"></requestedExecutionLevel>
        </requestedPrivileges>
     </security>
</trustInfo>

With this section "forbidden acts" either fail silently or receive 
warnings. Without it they are virtualized.

-- 
David Wilkinson
Visual C++ MVP
0
no-reply8010 (1791)
4/24/2007 5:43:40 PM
"David Wilkinson" <no-reply@effisols.com> wrote in message 
news:e9qgYgphHHA.1708@TK2MSFTNGP03.phx.gbl...
> David:
>
> As I understand it, it's just this trustinfo section:
>
> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
>    <security>
>      <requestedPrivileges>
>        <requestedExecutionLevel level="asInvoker" 
> uiAccess="false"></requestedExecutionLevel>
>        </requestedPrivileges>
>     </security>
> </trustInfo>
>
> With this section "forbidden acts" either fail silently or receive 
> warnings. Without it they are virtualized.
>

Thanks, I had thought the only reason to use this section was if the app 
needed to run as Admin.  I didn't know it controlled the virtualization 
stuff (I think you mean things like writes to the app folder are diverted to 
c:\documents and settings\<user>\local\Virtual Store\<path>.  Since my apps 
still do these naughty things, I don't think I should add this section quite 
yet.

-- David

0
dc2983 (3206)
4/24/2007 7:09:04 PM
"David Wilkinson" <no-reply@effisols.com> wrote in message 
news:uPnO0HzhHHA.588@TK2MSFTNGP06.phx.gbl...
> Hi David:
>
> Just my opinion, but I think it is a mistake to deliberately distribute an 
> application that will require Vista virtualization. Virtualization is for 
> legacy applications.
>

These are my own internal apps - you know, cobbler's children!  :-)

-- David 


0
dc2983 (3206)
4/25/2007 12:22:46 PM
David Ching wrote:

> Thanks, I had thought the only reason to use this section was if the app 
> needed to run as Admin.  I didn't know it controlled the virtualization 
> stuff (I think you mean things like writes to the app folder are 
> diverted to c:\documents and settings\<user>\local\Virtual 
> Store\<path>.  Since my apps still do these naughty things, I don't 
> think I should add this section quite yet.

Hi David:

Just my opinion, but I think it is a mistake to deliberately distribute 
an application that will require Vista virtualization. Virtualization is 
for legacy applications.

-- 
David Wilkinson
Visual C++ MVP
0
no-reply8010 (1791)
4/25/2007 1:04:57 PM
David Ching wrote:

> "David Wilkinson" <no-reply@effisols.com> wrote in message 
> news:uPnO0HzhHHA.588@TK2MSFTNGP06.phx.gbl...
>> Hi David:
>>
>> Just my opinion, but I think it is a mistake to deliberately distribute an 
>> application that will require Vista virtualization. Virtualization is for 
>> legacy applications.
>>
> 
> These are my own internal apps - you know, cobbler's children!  :-)

Oh yes, I have some of those. And come to think of it, I haven't run 
them on Vista, because I am sticking to XP on my development machine.

-- 
David Wilkinson
Visual C++ MVP
0
no-reply8010 (1791)
4/25/2007 1:35:18 PM
On Apr 24, 10:48 am, "j.goforth" <jgofo...@gmail.com> wrote:
> I am writing an application in VS2005. Due to the need to eventually
> reuse roughly 50k lines of existing non-unicode code, I cannot compile
> with the unicode flag. This flag appears to be controlling which style
> of MFC controls are used in my dialogs. In other words, if I build it
> as a unicode application I get the newer rounder controls, from winXP
> I believe. If I build it without unicode support I get the older,
> square style of buttons, etc. from the VS6 days. Do the new styles
> require unicode support, or is there a way around it?
>
> thanks


I found this on a web site a while back.  You can also add the
following line to stdafx.h without having a manifest in your resource
view.

#pragma comment(linker,"/manifestdependency:\"type='win32'
name='Microsoft.Windows.Common-Controls' version='6.0.0.0'
processorArchitecture='x86' publicKeyToken='6595b64144ccf1df'
language='*'\"")

Good luck,

Dan Marzahl

0
marzahld (2)
4/27/2007 3:33:15 PM
On Apr 24, 10:48 am, "j.goforth" <jgofo...@gmail.com> wrote:
> I am writing an application in VS2005. Due to the need to eventually
> reuse roughly 50k lines of existing non-unicode code, I cannot compile
> with the unicode flag. This flag appears to be controlling which style
> of MFC controls are used in my dialogs. In other words, if I build it
> as a unicode application I get the newer rounder controls, from winXP
> I believe. If I build it without unicode support I get the older,
> square style of buttons, etc. from the VS6 days. Do the new styles
> require unicode support, or is there a way around it?
>
> thanks


I found this on a web site a while back.  You can also add the
following line to stdafx.h without having a manifest in your resource
view.

#pragma comment(linker,"/manifestdependency:\"type='win32'
name='Microsoft.Windows.Common-Controls' version='6.0.0.0'
processorArchitecture='x86' publicKeyToken='6595b64144ccf1df'
language='*'\"")

Good luck,

Dan Marzahl

0
marzahld (2)
4/27/2007 3:36:48 PM
"j.goforth" <jgoforth@gmail.com> wrote in message 
news:1177426097.824601.268040@b40g2000prd.googlegroups.com...
|I am writing an application in VS2005.

your stdafx.h would have the following:
comment out the #ifdef _UNICODE and #endif
It may not work for all the controls as others have pointed out,
but worked for the items I had.
#ifdef _UNICODE

#if defined _M_IX86

#pragma comment(linker,"/manifestdependency:\"type='win32' 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' 
processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' 
language='*'\"")

#elif defined _M_IA64

#pragma comment(linker,"/manifestdependency:\"type='win32' 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' 
processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' 
language='*'\"")

#elif defined _M_X64

#pragma comment(linker,"/manifestdependency:\"type='win32' 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' 
processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' 
language='*'\"")

#else

#pragma comment(linker,"/manifestdependency:\"type='win32' 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' 
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

#endif

#endif


0
5/3/2007 6:13:56 PM
Reply:

Similar Artilces:

Installation of Office XP SP3 issue...
I am using the Outlook 2002 client. Since I have installed Office XP "Service Pack 3", I have noticed that each time a mail message arrives in my mailbox, a window pop's up stating that ... A program is trying to access email addresss you have stored in Outlook. Do you want to allow this? etc... This is really annoying. How do I turn this off?? Thanks, Brad See http://www.slipstick.com/outlook/ol2002sp3.htm#problems -- Sue Mosher, Outlook MVP Author of Microsoft Outlook Programming - Jumpstart for Administrators, Power Users, and Developers http://www.outl...

Non-negotiable Checks Payables
In GP 9.0, there was still an ability to print non-negotiable checks unlike in GP 10.0. In 10.0, either they print the check or they generate the EFT file. Some clients prefer having the capability to print non-negotiable checks. ---------------- This post is a suggestion for Microsoft, and Microsoft responds to the suggestions with the most votes. To vote for this suggestion, click the "I Agree" button in the message pane. If you do not see the button, follow this link to open the suggestion in the Microsoft Web-based Newsreader and then click "I Agree" in the mess...

Viewing Word 2007 docs in Office XP
Info I have found shows previous versions to be 2000, 2002 and 2003.........having a problem viewing docs in Office XP. Does anyone know if the 'compatability' download will make the fix for XP? Thanks Office XP = Office 2002 -- Hope this helps, Doug Robbins - Word MVP Please reply only to the newsgroups unless you wish to obtain my services on a paid professional basis. "awol2vegas" <awol2vegas@discussions.microsoft.com> wrote in message news:E81819E0-355D-49AC-B387-C0386AEC4C40@microsoft.com... > Info I have found shows previous versions...

maximizing a SDI app at startup
Hi, How do i maximize the SDI app. on startup ? Do i have to something in PreCreateWindow(); ? On Aug 10, 8:24 pm, RAN <nijenh...@wish.nl> wrote: > Hi, > > How do i maximize the SDI app. on startup ? > Do i have to something in PreCreateWindow(); ? I should have search the newsgroup on maximizing windows at startup before asking a question... :) I found a question where someone said that the following is the solution: InitInstance(): m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); m_pMainWnd->UpdateWindow(); but it didn't work he said, well it does ! (VC++6.0??) ...

CPropertySheet ./. OLE-Control on some Pages in a regular DLL
We have problems with MFC 7.0 (.NET 2003) CPropertySheet and some Pages which includes a OLE-Control on Ressource-Level. the Code / Ressource als located in a regular DLL and called from a MFC-Application via DLL-Function. The DoModal-Call returns immediate. The Dialog-Ressource with the OLE-Control (in a CPropertyPage derived class) added with AddPage seems to be not fully initiated while creation-process in the DoModal-Function-Call. Any idea? I would guess that the OLE control might not be initializing correctly. Set a break point in the DoDataExchange method of the dialog and make...

I need a temp to input numbers and get the amount of times it appe
I need a template that I can input a serious of numbers on from various dates and i wold like to know which numbers appera the most ...

Chart not updating (Recently moved to Excel XP)
Since we upgraded to Microsoft Excel we have had a problem with miscelanious graphs not updating. I have gone to options and checked automatic update correctly, and still the problem contiues. For this email I am focusing on one of my more important graphs. Background: 1) We recently converted the office from Excel 97 to Excel XP, worked great before the upgrade. 2) The graph is pulling from hidden sheets that have data imported to it from an Access 97 database. 3) The graph that is not updating includes bars and lines. Any help you might be able to provide would be GREATLY ...

Enable non-backorderable items in receiving/po generation
Most of our vendors DO NOT backorder items. We create a PO via Purchase Order Generator and then receive that order as a shipment. Most orders involve 40 to 80 items and almost every order is missing at least one item. We then have to reorder that item usually within 2 days, which most of the time is before we have received an invoice to match. One we post the receipt, then the items that were not received remain in On Order status and therefore are not reordered, even though they must be because the vendor doesn't backorder. So then we have to go to Edit Purchase Orders to cancel t...

Actual value a non-zero number but display is Zero
Hi, In A1 i have the value 1, In B1 let's say 2 and C1 value 3 and in D1 I have a formula = A1+B1+C1. I want to print the range A1 to D1 and see the value 6 in D1 but in A1 to C1 I want the excel display to be zero. I have probably read in thi group that some folks use rightclick on cell and use Format and use some variation of Custom to achieve this (not very sure). Please guide me. Please Regards, Hari India Hi Hari, You are definitely on the right track with number formats! Try this: - Select cells A1 to C1 and right-click, then select Format Cells - Go to the Number tab and s...

xp professional with frontpage
I am trying to import and export excel doc from outlook but it tells me that i need to insert CD Microsoft Xp Professional with frontpage. Is this a different CD than what my computer came with? I inserted my windows xp 2002 CD but it did not work do I need to buy this? I dowloaded frontpage but stillnot working. Rebe "Rebe May" <anonymous@discussions.microsoft.com> wrote in message news:4d3201c3d60f$be641770$7d02280a@phx.gbl... > I am trying to import and export excel doc from outlook > but it tells me that i need to insert CD Microsoft Xp > Professional with ...

accepted appointments in calendar outlook 2007 windows xp
Hi When i send an invitation for an appointment to many persons i have the following problem i see when i push the control button that many people not have accepted , but i know that they have accepted what could be wrong Greetings Jurgen Are you getting the acceptances back? Is outlook processing them? Do any of the attendees show they accepted? -- Diane Poremsky [MVP - Outlook] Outlook Tips: http://www.outlook-tips.net/ Outlook & Exchange Solutions Center: http://www.slipstick.com/ Outlook Tips by email: mailto:dailytips-subscribe-request@lists.outlooktip...

CListView icons in *reverse* order with XP commctrl 6??? #2
hi there i have a CListView derived window in my app, which i have set to Icon Mode, and i sort my items alphabetically now it all works fine, except when i include the manifest for using the XP commctrl6 lib, this listview displays the icons in *revrese* alphabetical order, and, now this is the crazy bit, they are displayed from the bottom up!!!! ie, if without the manifest they are displayed as: iconA iconB iconC iconD iconE iconF iconG then they are displayed with the manifest as: iconG iconD iconE iconF iconA iconB iconC *and*, they are placed from the *bottom* of the view window u...

Windows XP won't load 05-19-10
My computer updated automatically and prompted for restart. Once restarted, the computer froze at the blue Windows is starting screen. Tried to restart and got same thing. Tried to reinstall Windows XP and had great difficulty in getting it to go all the way through. Said it couldn't find several files, but finally completed. Still goes to blue starting screen and stops. Considered upgrading to Windows 7, but have been told that all files will be lost. Cannot get to start in Safe Mode, so no option to get in and get necessary files. Any suggestions? "rbsd...

Unicode DLL (MFC extension)
Hi, I have written a DLL (Ansi) for extending a CStatic Control, and it works fine. I've added support for Unicode, and I can compile the application, but when I invoke this method, from the .exe (that works fine with ANSI), the application crashs. Can someone explain why the DLL works with ANSI and not with UNICODE ? (MFC are in shared - multithreaded DLL) void CClock::SetFont(CString sFaceName, BOOL bBold, BOOL bItalic, BOOL bUnderline, int iSize) { // CClock::SetFont USES_CONVERSION; int iStyle; iStyle = FontStyleRegular; if (bBold) iStyle |= FontStyleBold...

Control Array in PowerPoint VB
How can you determine which control was activated (through an attached "action") to invoke a macro in Visual Basic (i.e. which was the last object clicked on). I have several similar named buttons on a slide with attached actions for mouse clicks. Currently i have a separate macro for each. Each button executes the SAME code with one exception....that each sets a common variable to a different value eg. Dim buttonpress as integer Sub button1 buttonpress = 1 (or 2 or 3 etc) ...common code here... End sub of course this works....but doesn't seem lik...

Windows XP Inbox Delay
Ever since we went to Windows XP Professional we have a problem with new mail notifications in Outlook. It happens with both Office 2000 and Office XP. I takes a long time for new mail to show up in the inbox. As soon as you leave the inbox (i.e. go to contacts) the new mail will show up. Any ideas? >-----Original Message----- >Ever since we went to Windows XP Professional we have a >problem with new mail notifications in Outlook. It happens >with both Office 2000 and Office XP. I takes a long time >for new mail to show up in the inbox. As soon as you leave >the ...

Last non-blank cell
I have a spreadsheet which consists of a list of invoices which grows as the year progresses. The invoice date is in column A. What I want to do is a calculation based on the date in the last non-blank cell in column A. How can I refer to this cell in a formula? -- Peter Ying tong iddle-i po! If you are looking for a number, just look for any number larger than possible in your list. =MATCH(99999999,A:A) -- Don Guillett SalesAid Software donaldb@281.com "Peter Twydell" <peter@nospam.demon.co.uk> wrote in message news:vV9stXEc4fNBFwja@ntlworld.com... > I have a spread...

Which versions of Publisher work with XP?
I tried to install my old version of Publisher (the one that came with my Gateway, with Windows 95) and it wasn't compatible with XP. I don't use it very much, just to make cassette and CD labels, so I don't want to pay top price for a new one. I would rather buy an older, used version from eBay. Which are the versions of Publisher that would work with XP? Also, I never bought used software before. Is there some kind of built in thing that prevents a second buyer from installing it? -- Dave Schwartz Commack, NY if you don't want to spend any money - take a closer look ...

Trying to Install CRM 1.2 Hotfix for XP SP2 Interoperability
If anyone can help on this one it would be greatly appreciated. I'm trying to install the CRM hotfix KB870635 onto a computer running XP Pro SP2 Just after double-clicking on the patch an error message appears saying 'The Data is Invalid'. The same problem appears on multiple computers. Could it just be a corrupt download or is there something else that I need to do on the client computer? You may be trying to install the wrong language version ENU = US English ENG = International ENGlish "HSP" <HSP@discussions.microsoft.com> wrote in message news:33967A7A-7...

need to convert e-mail info from excel spreadsheet ot windows XP
my motherhas sent an e-mail to me that cannot be opened by my computer, which is run by Windows XP. What do I need to be able to view the information that was attatched to the email? Ask your mom what she sent you. If it's an excel file and you don't own excel... You may want to try the free viewer from MS. The free viewer (no changes allowed) from Microsoft: http://office.microsoft.com/en-gb/officeupdate/CD011347961033.aspx and the older version if you can't run the one above: http://download.microsoft.com/download/excel2000/Xlviewer/2000/WIN98/EN-US/xlViewer.exe (One lin...

Populating the controls in a dialog box
What is the Microsoft official pronouncement on the populating the controls of a dialog box prior to the user seeing it? In the class that calls the dialog box before the DoModal or pass an object with the data in it to the Constructor. I have done it the first way but the problem is accessing controls like a ComboBox to set the current selection. You can initialize/subclass your controls in OnInitDialog of your dialog. -- Ajay Kalra [MVP - VC++] ajaykalra@yahoo.com "William Gower" <w_gower@hotmail.com> wrote in message news:u0l$AiqhDHA.2504@TK2MSFTNGP09.phx.gbl... >...

Outlook XP #10
Outlook on our new xp operating system, blocks all attachments. THIS IS NOT GOING TO WORK! as we use email to view photos for work!!! How do we make it open attachments? Do you really mean Outlook XP, as in Outlook 2002 from the Office XP suite? Or do you mean Outlook Express 6, which came installed (via Internet Explorer 6) with Windows XP? They're two completely different programs despite the unfortunately similar name. If you really mean Outlook, look here: http://www.slipstick.com/outlook/esecup/getexe.htm If you meant Outlook Express, try this: http://www.omegageek.com/OESecu...

Outlook 2002 (Office XP Suite) Outlook hangs, task manger "Outlook Not Respondin
Outlook hangs when launched, can't access anything on the toolbar or any messages or folders. If you check the Task manager the Outlook Not repsonding message is the only message showned. I completely uninstalled the Office suite, removed the Office folders, deleted Outlook profiles. I Re-installed the Office suite and SP1,SP2, setup profile and launched Outlook and sent and received two messages and the same symptoms occurred, launced Outlook shows the mailbox and personal flders , but can't access anything and the Not responding message came back. ...

Setting focus to List Control
Hi all, I have a List Control that I fill in OnSetActive. I then want to highlight the first row. I tried to do it as follows: BOOL PassTab::OnSetActive() { // ... fill the List Control c_selectedList.SetItemState( 0, LVIS_SELECTED, LVIS_SELECTED); c_selectedList.SetFocus(); return TRUE; } The first item gets a grey rectangle around it, not the blue one that it has when it's selected *and* focused, so from this I deduce that the command c_selectedList.SetFocus(); is not working here. When I use the same two lines elsewhere (say, when I press a button) the first ...

Dynamically Created CFormView subclass, Member Controls all have Hwnd = 0x000 ??
hi, i'm seriously stuck here, i have a tab control, that has a couple of "formview" dialog subclasses for each tab pane. now in each tab pane, depending on a variety of factors, i dynamically create a bunch of other sub-cformview subclasses and add them to the tab dialog my general technique is to add an element sub-cformview like so in OnInitialUpdate: CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( some_sub_element ); CObject* pObject = pRuntimeClass->CreateObject(); if( pObject->IsKindOf( RUNTIME_CLASS( some_sub_element ) ) ) { CRect rect(ulx, uly + license_list.siz...