Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » CExtPaintManagerOffie2007_Impl: crash when loading Collapse All
Subject Author Date
Vlad Kozatchenko Feb 18, 2008 - 4:29 PM

Hello,

after a positioned floating bars in some way and exited the application
it stopped loading next time due to the following crash.

see the pic.
http://photofile.com.ua/photo/symbiotone/3482923/75198763.jpg

pBar was NULL.

can you please help?
(a bug fix release or something?)
(i fear the customer might also position the bar that will make the app unloadable).

the problem was "solved" when i cleared the registry, but i cannot expect this from customers.

thanks!

Vladimir

Technical Support Feb 27, 2008 - 4:12 AM

The following line of code from the CExtPaintManagerOffice2007_Impl::PaintGripper() method demonstrated on the screenshot returns a pointer to a CExtControlBar control bar contained by the floating mini frame window:

CExtControlBar * pBar = ((CExtMiniDockFrameWnd*)_pgd.m_pHelperSrc)->GetControlBarExt();
The pBar variable can be some control bar or NULL if it is not a Prof-UIS control bar. All control bars in Prof-UIS are derived from CExtControlBar. Several years ago we supported MFC control bars. But we discontinued this support because they were less feature-rich and currently we have control bars of any well known type: toolbars, resizable bars, panel bars. If you are using Prof-UIS bars only, then you should not encounter this crash. We tried to do the suggested experiment but we never faced any crashes. You can step into the GetControlBarExt() method and find out which kind of bar (pTempWnd) caused this problem:
CExtControlBar * CExtMiniDockFrameWnd::GetControlBarExt()
{
CControlBar * pTempWnd = GetControlBar();
    if( pTempWnd == NULL )
        return NULL;
    if( !pTempWnd->IsKindOf( RUNTIME_CLASS(CExtControlBar) ) )
        return NULL;
    return reinterpret_cast < CExtControlBar * > ( pTempWnd );
}
The pTempWnd bar must never be NULL because the mini frame window is always created before switching the control bar into the floating state. The control bar always exists before creating a floating mini frame window. If a mini frame is created successfully (as usually), then the next step is to put the control bar into a mini frame window using SetParent() API. The mini frame window never becomes painted during these initialization actions and this means the CExtPaintManagerOffice2007_Impl::PaintGripper() method never becomes invoked for a partially initialized mini frame window without a control bar window inside. But if you are using some low level thread hooks which are invoked during the creation of mini frame window and hook’s code causes delivering of painting messages to windows somehow, then potentially the mini frame window can become painted before it will be finally initialized. The commented code snippet on your screen shot can be safely uncommented, but indeed it should be never used.

In conclusion, it would be extremely helpful for us to reproduce this problem on any of our sample application in case of anything described above is not the real source of the problem.

Vlad Kozatchenko Feb 26, 2008 - 2:40 PM

Hello,

i have replied to this thread
http://www.prof-uis.com/Forum_View.aspx?CID=40&M=59373
the post about color picker here as done by a mistake. sorry :)
(please reply there as well).

This thread was originally about a crash with CExtPaintManagerOffie2007_Impl (the code shall be uncommented?)
======
Dear Support,

the steps were:
1) run the app;
2) position the 2 upper DialogBars to that their captions is out of screen and one is slightly overlapped each another
http://photofile.com.ua/photo/symbiotone/3482923/75376071.jpg
3) close the app (so that ProfUIS saves it profiles to the registry)
4) run the app again and you have the crash
shown here.
http://photofile.com.ua/photo/symbiotone/3482923/75198763.jpg

it is quite disturbing... especially in connection with http://www.prof-uis.com/Forum_View.aspx?CID=40&M=59291&P=2147483647
please help.

==================

Vladimir

Technical Support Feb 25, 2008 - 3:55 AM

We tested the color picker button with the RibbonBar sample and we have never faced any crashes. We guess the crashes you reported may be specific to your project only and should be related to the source code which handles color selection changing. Please provide us with more details about this part of your project.

Vlad Kozatchenko Feb 23, 2008 - 7:38 AM

Dear Support,

the steps were:
1) run the app;
2) position the 2 upper DialogBars to that their captions is out of screen and one is slightly overlapped each another
http://photofile.com.ua/photo/symbiotone/3482923/75376071.jpg
3) close the app (so that ProfUIS saves it profiles to the registry)
4) run the app again and you have the crash
shown here.
http://photofile.com.ua/photo/symbiotone/3482923/75198763.jpg

it is quite disturbing... especially in connection with http://www.prof-uis.com/Forum_View.aspx?CID=40&M=59291&P=2147483647
please help.

thank you!

Vladimir

Vlad Kozatchenko Feb 23, 2008 - 7:38 AM

Hello Dear Support,

the scenario:
1) run the app;
2) pop-op a color selection node on the ribbon and then click "select color..." on the bottom.
see the faked
http://photofile.com.ua/photo/symbiotone/3482923/75376789.jpg
3) select a color on the dialog
4) click OK.
5) crash - quite often
http://photofile.com.ua/photo/symbiotone/3482923/75376818.jpg
"this" point has been destroyed already. see it this m_pNode.

please help.
there several crashes that needs your attention (e.g. http://www.prof-uis.com/Forum_View.aspx?CID=40&M=59291)
i am quite warring for stability of the application i am delivering the users. (can you please do a bugfix release or some patches).

THANKS!!

Vladimir

Technical Support Feb 20, 2008 - 6:07 AM

Thank you for the reporting the problem. To find out what’s wrong, we need to reproduce it in some way. What are the exact steps to reproduce it using our sample applications?