15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


CDialogBar problems with VC2.2

Gillian - WEIL IT Swin -- GMARSH@weil.co.uk
Thursday, January 11, 1996


Hello everyone,

My application has many child windows, all using my own frame window   
class derived from MDIChildWnd, which has an override of PreCreateWindow.   
 Several of these child windows have a CDialogBar (different in each   
case), and my PreCreateWindow has a switch which sets the appropriate   
dialog resource based on the RUNTIME_CLASS prior to creating the dialog   
bar.

This has been working fine for many months using VC++1.52.  I have now   
tried building the project with VC++2.2 and my dialog bars fail to   
create.

Stepping through the code in debug in both versions, I find that   
initially my PreCreateWindow correctly assigns the dialog resource in   
both cases.  The difference occurs in the MFC file winmdi.cpp on the line   
(line 495 in 1.52, 503 in 2.2):

 HWND hWnd = (HWND)::SendMessage(pParentWnd->m_hWndMDIClient,
  WM_MDICREATE, 0, (LONG)(LPSTR)&mcs);

In 1.52, it passes over this line and completes correctly, whereas in 2.2   
it jumps back into my PreCreateWindow and reassigns the dialog resource   
to 0 - the default value for all child windows of RUNTIME_CLASS's that do   
not have dialog bars.

Does anyone out there know what's going on?

Thanks in advance.
Gill
gmarsh@weil.co.uk





David Elliott -- dce@netcom.com
Friday, January 12, 1996


I got this from Gill, so I won't be sending out any responses to this
issue:

In actual fact the problem was due to winmdi in VC2.2 calling   
PreCreateWindow twice, whereas in VC1.52 it calls it only once.  I have   
modified my PreCreateWindow override so that it always calls the base   
class, but performs my specific code once only.  I still don't understand   
why my specific code should behave differently second time around (a test   
of the RUNTIME_CLASS) but no matter.

David Elliott - dce@netcom.com - http://www.btw.com/dce




| Вернуться в корень Архива |