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

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


[Q] CSplitterWnd - Win95 Vs WinNT

SUBRAMANIAN -- SUBRAMANIAN.BALAKRISHNEN@tencor.com
Friday, November 22, 1996


 Environment: Win 95, Windows NT3.51, VC 4.2b


Hi,

Question:
	I am writing an application to run on Win'95 and NT 3.51.
	Initially the program was developed under NT 3.51. It was running fine
under
NT 3.51.	When I tried to run the program under win'95, it failed. I
debugged and
solved the problem. The problem was with CSplitterWnd::CreateStatic()
method. Why
does CSplitterWnd::CreateStatic() behaves differently in win'95 and win
NT 3.51 ?. Is it
a bug or a documented difference between win95 / NT 3.51?
	

Background:
	The CMDIChildWnd derived object, say "CMyChildWnd", contains a
member variable of type "CMySplitterWnd" ( derived from "CSplitterWnd")
say
"m_wndSplitter".
	I create the splitter by using "m_wndSplitter.CreateStatic()" in
 "CMyChildWnd::OnCreateClient()" .
	In "CMyChildWnd::OnSize()" I position the "m_wndSplitter" such that it
divides the  "CMyChildWnd" into two equal portions. This is done by
using the
"m_wndSplitter.SetRowInfo()".
	Under win'95, before  "m_wndSplitter.CreateStatic()" returns,
 "CMyChildWnd::OnSize()"  is being called. Now inside
"CMyChildWnd::OnSize()" ,
"m_wndSplitter.SetRowInfo()" is being called. But at this juncture
"m_wndSplitter.m_pRowInfo" in NULL, which results in a run-time error.


Thanks

Subu Balakrishnan

( subub@tencor.com )

 



Alexander Grigoriev -- alegr@aha.ru
Monday, November 25, 1996

OnSize may be called before OnCreateClient, thus the splitter may not be
created yet at this moment.
Always check m_wndSplitter.m_hWnd in CMDIChildWnd::OnSize.

----------
> From: BALAKRISHNEN, SUBRAMANIAN 
> To: MFC List - Send 
> Subject: [Q] CSplitterWnd -  Win95 Vs WinNT
> Date: 23 ОПСВТС 1996 З. 3:32
> 
> 
>  Environment: Win 95, Windows NT3.51, VC 4.2b
> 
> 
> Hi,
> 
> Question:
> 	I am writing an application to run on Win'95 and NT 3.51.
> 	Initially the program was developed under NT 3.51. It was running fine
> under
> NT 3.51.	When I tried to run the program under win'95, it failed. I
> debugged and
> solved the problem. The problem was with CSplitterWnd::CreateStatic()
> method. Why
> does CSplitterWnd::CreateStatic() behaves differently in win'95 and win
> NT 3.51 ?. Is it
> a bug or a documented difference between win95 / NT 3.51?
> 	
> 
> Background:
> 	The CMDIChildWnd derived object, say "CMDIChildWnd", contains a
> member variable of type "CMySplitterWnd" ( derived from "CSplitterWnd")
> say
> "m_wndSplitter".
> 	I create the splitter by using "m_wndSplitter.CreateStatic()" in
>  "CMyChildWnd::OnCreateClient()" .
> 	In "CMyChildWnd::OnSize()" I position the "m_wndSplitter" such that it
> divides the  "CMyChildWnd" into two equal portions. This is done by
> using the
> "m_wndSplitter.SetRowInfo()".
> 	Under win'95, before  "m_wndSplitter.CreateStatic()" returns,
>  "CMyChildWnd::OnSize()"  is being called. Now inside
> "CMyChildWnd::OnSize()" ,
> "m_wndSplitter.SetRowInfo()" is being called. But at this juncture
> "m_wndSplitter.m_pRowInfo" in NULL, which results in a run-time error.
> 
> 
> Thanks
> 
> Subu Balakrishnan
> 
> ( subub@tencor.com )
> 
>  




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