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.
Subject |
Author |
Date |
|
Chris Jackson
|
Apr 5, 2006 - 10:30 AM
|
I’ve got an application with >10 dockable control bars, and am saving their state with ProfileBarStateSave() and ProfileBarStateLoad(). My problem is that these two functions seem to serialise out the states to the registry in a fixed order, so if I remove a bar then all of the bars whose state has been saved after the removed bar get the wrong state loaded.
Is there a way to get the loading code to use the bar’s ID to assign state to the new bars? At present, all I can do is recreate the default state whenever I add or remove control bars, which is annoying my users.
|
|
Chris Jackson
|
Apr 6, 2006 - 9:31 AM
|
OK, thanks, I shall look forward to the fixed version.
|
|
Technical Support
|
Apr 5, 2006 - 11:42 AM
|
At the moment, the number of saved control bars (the CExtControlBar windows) must be equal to the number of control bars created in your application. Each created control bar is supplied with the information about where it should be docked and etc. If you modified your application and, for example, removed some control bar, then when the library reads the data about this control bar from the registry and it cannot find the real control bar, a collision occurs. Things get worse when this control bar was docked with some other bars and they depend on each other.
We plan to resolve this issue in two ways: 1) using XML serialization; 2) improving the algorithm for restoring the state of saved control bars;
Right now we can offer you a solution that is based on dynamic control bars (CExtDynamicControlBar windows controlled by the CExtDynamicBarSite object). It is demonstrated in the SDI_DynamicBars and MDI_DynamicBars applications. You can create any number of dynamic control bars, create new ones or destroy existing control bars at runtime and save their states: the above mentioned collision is impossible
|
|
Andrew Nanopoulos
|
Apr 4, 2006 - 12:49 PM
|
How can I insert a button into the middle of a toolbar at runtime?
|
|
Technical Support
|
Apr 5, 2006 - 10:59 AM
|
To insert a button object, please use the CExtToolControlBar::InsertButton() or CExtToolControlBar::InsertSpecButton() method. The next step is to recompute the toolbar’s layout (and the layout of neighboring bars if needed). If your toolbar is dockable toolbar inside the main frame window, invoke pToolBar->GetParentFrame()->RecalcLayout() . If your toolbar is not enabled for docking (e.g., when it is placed on the dialog), then use this the following code: pToolBar->GetParent()->RepositionBars( 0, 0x0FFFF, 0 );
pToolBar->SetWindowPos(
NULL, 0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE
|SWP_NOZORDER|SWP_NOOWNERZORDER
|SWP_FRAMECHANGED
);
|
|
Thomas Maurer
|
Apr 4, 2006 - 4:47 AM
|
Hello
I have an application that - under certain circumstances - should not be activated when a new file is opened. I now captured the WM_ACTIVATE message and checked who is triggering it. I found out that it is a CExtDynTabWnd that calls SetFocus during OnTabWndSelectionChanged. The selection is changed upon DockControlBarIntoTabbedContainer.
How can I prevent that this CExtDynTabWnd is not calling SetFocus? One (complicated) solution would be to derive my own OnTabWndSelectionChanged. If that is the solution I don’t know how to setup my bar that it is creating from my derived class and not from CExtDynTabWnd.
I hope that there is an easier solution
Thanks in advance
Thomas
|
|
Technical Support
|
Apr 4, 2006 - 10:47 AM
|
We may add a notification message that is sent to the main frame window about whether the tabbed container is enabled for changing the focus. Please let us know if this may be helpful.
|
|
Thomas Maurer
|
Apr 4, 2006 - 11:46 AM
|
Hello
That would be most helpful. Naturally (like every developer) I have a tight schedule. Until when do you think that could be ready?
Thanks a lot in any case
Thomas
|
|
Technical Support
|
Apr 6, 2006 - 6:47 AM
|
We added a CExtControlBar::g_nMsgQueryFocusChangingEnabled registered windows message that is sent to the main frame window (so you can handle it): afx_msg LRESULT OnMsgQueryFocusChangingEnabled( WPARAM wParam, LPARAM lParam );
ON_REGISTERED_MESSAGE( CExtControlBar::g_nMsgQueryFocusChangingEnabled, OnMsgQueryFocusChangingEnabled )
LRESULT CMainFrame::OnMsgQueryFocusChangingEnabled( WPARAM wParam, LPARAM lParam )
{
ASSERT_VALID( this );
lParam;
CExtControlBar::QueryFocusChangingEnabled_t * pQFCE =
reinterpret_cast < CExtControlBar::QueryFocusChangingEnabled_t * > ( wParam );
pQFCE->m_bFocusChangingEnabled = false; // DENY FOCUS CHANGING
return 0;
} Please contact us by e-mail so we can tell you how to download it by ftp.
|
|
Sergio Buonanno
|
Apr 3, 2006 - 4:15 AM
|
I cannot find documentation about the events fire by CExtPageNavigatorWnd control. I would like to know which events are fired by CExtPageNavigatorWnd and information on the events parameters too.
|
|
Technical Support
|
Apr 3, 2006 - 10:50 AM
|
We guess you mean the selection event and, if this is the case, just use a CExtPageNavigatorWnd::g_nMsgSelectionNotification notification. Please follow the steps below:
1. Add a declaration of the handler method to the CMainFrame header: LRESULT OnPageNavigatorSelectionChabged( WPARAM wParam, LPARAM lParam ); 2. Add the following macros to the message map: ON_REGISTERED_MESSAGE(
CExtPageNavigatorWnd::g_nMsgSelectionNotification,
OnPageNavigatorSelectionChabged
) 3. Add the implementation for this handler to CMainFrame : LRESULT CMainFrame::OnPageNavigatorSelectionChabged(
WPARAM wParam,
LPARAM lParam
)
{
lParam;
const CExtPageNavigatorWnd::SELECTION_NOTIFICATION * pSN =
CExtPageNavigatorWnd::SELECTION_NOTIFICATION::FromWPARAM( wParam );
if( pSN->m_bChangedFinally )
{
// selection finished
// pSN->m_nPageOld
// pSN->m_nPageNew
}
else
{
// selection start
// pSN->m_nPageOld
// pSN->m_nPageNew
}
// return -1; do not allow to change selection
return 0L;
} The selection handling is demonstrated in the PageNavigator sample.
|
|
Eddie Judson
|
Apr 3, 2006 - 4:11 AM
|
I have a dialog which is created dynamically and I have no problems with subclassing the CExtCombo box on it, the only problem is that I now want the CExtCombo to be owner drawn so I can use the multicolumn feature, but I canāt seem to get past the error. I have emailed you a sample, can you help? Regards, Eddie
|
|
Technical Support
|
Apr 3, 2006 - 7:33 AM
|
It seems the problem hides somewhere in your code. In your project we created a simple CComboBox -derived class and it doesn’t work either. The error occurs in the MeasureItem method when we receive an incorrect value for the lpMIS->itemID property. Please note the problem is gone if we replace the CBS_OWNERDRAWFIXED style with CBS_OWNERDRAWVARIABLE .
|
|
Eddie Judson
|
Apr 3, 2006 - 7:49 PM
|
Thank you I have changed the style to CBS_OWNERDRAWVARIABLE
|
|
Massimo Germi
|
Mar 31, 2006 - 9:11 AM
|
Hi, How can I retrieve HTREEITEM of an item if I know row number? I’ve created a CExtTreeGridWnd derived class and I’ve override a OnGridCellButtonPressed funcion. I wish to send WN_NOTIFY message, to parent Window, where I can handle the pressed button of a cell. bool CMyTreeGrid::OnGridCellButtonPressed( CExtGridCell & _cell, INT nButtonType, const RECT & rcCellExtra, const RECT & rcCell, LONG nVisibleColNo, LONG nVisibleRowNo, LONG nColNo, LONG nRowNo, INT nColType, INT nRowType ) { CWnd* pWnd = GetParent(); ASSERT_VALID(pWnd); if(pWnd) { NMTREEVIEW nmtreeview; nmtreeview.hdr.hwndFrom = m_hWnd; nmtreeview.hdr.code = WM_MY_MESSAGE; nmtreeview.hdr.idFrom = GetDlgCtrlID(); nmtreeview.itemNew.hItem = ????????????; I DON’T ABLE TO RETRIEVE HTREEITEM
pWnd->SendMessage(WM_NOTIFY,(WPARAM)GetDlgCtrlID(),(LPARAM)&nmtreeview); }
return CExtGridWnd::OnGridCellButtonPressed(_cell,nButtonType,rcCellExtra,rcCell, nVisibleColNo,nVisibleRowNo,nColNo,nRowNo,nColType,nRowType); }
Thanks a lot
|
|
Technical Support
|
Apr 2, 2006 - 5:43 AM
|
The following methods of the CExtTreeGridWnd class allow you to get the HTREEITEM handle from a row number and vica versa according to the current expanded/collapsed state of the tree grid row: virtual HTREEITEM ItemGetByVisibleRowIndex( LONG nRowNo ) const;
LONG ItemGetVisibleIndexOf( HTREEITEM hTreeItem ) const; The latter method returns -1 if at least one parent item of the specified item is collapsed.
|
|
jb lee
|
Mar 31, 2006 - 6:36 AM
|
TGIF.
I add some radio button on a dialog and check its style as "Push-like". After defining the variable for the control as CExtRadioButton, push-like style is gone. Did I something wrong?
|
|
Technical Support
|
Mar 31, 2006 - 8:51 AM
|
You need simply to subclass the radio button with the CExtButton class.
|
|
jb lee
|
Apr 2, 2006 - 8:18 PM
|
If I subclass the option button with the CExtButton class, original behavior of option button is not called. You know, three option button, first button’s style is group, then, only one option button is remain checked.
|
|
Technical Support
|
Apr 3, 2006 - 11:05 AM
|
We confirm that there is a bug in the CExtCheckBox and CExtRadioButton classes with this regard. Please add the following code at the beginning of the CExtRadioButton::_RenderImpl() and CExtCheckBox::_RenderImpl() virtual methods: if( (GetStyle()&BS_PUSHLIKE) != 0 )
{
CExtButton::_RenderImpl(
dc,
bTransparent,
bCombinedContent
);
return;
} This will fix the problem.
|
|
claude laflamme
|
Mar 30, 2006 - 2:17 PM
|
Hi, have you ever heard a problem with Data Execution Prevention (DEP)? This is new stuff from Microsoft for XP SP2. My application failed to start. So, I’ve created a MFC based-dialog project form scratch and it run. If a only insert those two lines: #include <Prof-UIS.h> CExtControlBar g_wndCtrlBar;
, it fails with error message: Unhandled exception in Test.exe (NTDLL.DLL): 0xC0000005: Access Violation
Tanks
|
|
Technical Support
|
Mar 31, 2006 - 7:18 AM
|
As you know DEP prevents some code from executing in the system memory that is reserved for data. However, it can also block programs that simply use nonstandard programming techniques such as self-modifying code. Unfortunately we do not know why your Prof-UIS-based application causes this DEP problem. We cannot even check this issue because we failed to reproduce this problem on all our computers with WinXP SP2 installed.
We can only suggest you to turn off the DEP control or add your application to the DEP exclusion list:
1. Right-click on My Computer, choose Properties, click the Advanced tab. 2. Click the Settings button in the Performance panel, and click the Data Execution Prevention tab. 3. Select the Turn on DEP for all programs except those I select radio button. 4. Click the Add button and just add that mapping software to the list of exceptions.
You can get a detailed description of the Data Execution Prevention (DEP) here http://support.microsoft.com/default.aspx?kbid=875352&product=windowsxpsp2kb#5
|
|
Massimo Germi
|
Mar 30, 2006 - 1:32 AM
|
HI to all, How can I prevent the user edit cell in CextTreeGridWnd? I’ve tried to use BseModifyStyleEx( 0, __EGWS_BSE_EDIT_SINGLE_LCLICK | __EGWS_BSE_EDIT_DOUBLE_LCLICK | __EGWS_BSE_EDIT_RETURN_CLICK, false); but it seems do not work.
Thanks in advance
|
|
Technical Support
|
Mar 30, 2006 - 5:26 AM
|
You need just to remove the __EGWS_BSE_EDIT_CELLS_INNER with the following code: BseModifyStyle( 0, __EGWS_BSE_EDIT_CELLS_INNER, false ); Please note you need to use the CExtGridWnd::BseModifyStyle() method instead of CExtGridWnd::BseModifyStyleEx() .
|
|
Thomas Fuchs
|
Mar 29, 2006 - 4:52 AM
|
Good morning, me again...
I have another problem with tooltips on status bars, even though I am not sure Prof-UIS causes this troubles. I am using two different status bars on top of each other in a MDI document. Here’s the code snippet for creation (CDocFrame is derived from CMDIChildWnd):
CDocFrame::Create(LPCREATESTRUCT lpCreateStruct) { if ( CMDIChildWnd::OnCreate(lpCreateStruct) == -1 ) return -1;
// create first TB on top of second TB if ( !m_wndTBTop.Create(this) || !m_wndTBTop.SetIndicators(....) ) return -1;
// success so far, setup tooltip text: m_wndTBTop.SetTipText(0, "Pane 0 on top");
// remove gripper for toolbar on top: m_wndTBTop.SetBarStyle( m_wndTBTop.GetBarStyle() & ~CBRS_GRIPPER );
// create second toolbar below first toolbar:
if ( !m_wndTBBottom.Create(this) || !m_wndTBBottom.SetIndicators(....) ) return -1;
// success, setup tooltip text: m_wndTBBottom.SetTipText(0, "Pane 0 on bottom"); // done return 0; }
Now in this example, the tooltip "Pane 0 on bottom" shows up, but the one for the toolbar on top does not.
Any ideas?
Thanks and best regards, Thomas
|
|
Chris Anderson
|
Apr 19, 2007 - 11:46 AM
|
Hi, I have an application written in SDK. For porting using Prof=UI, I have subclassed using CExtNCW<CWnd> (as I cannot use the CFrameWnd due to the complexity of the existing code). Then I have attatched the CExtStatusControlBar with 4 indicators ( ID_SEPARATOR, ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL). The Window is displayed with Status bar. But it is not reflecting the keyboard status? Any idea on how to enable capturing of keyboard status in the status bar?
Thanks
|
|
Technical Support
|
Apr 20, 2007 - 7:11 AM
|
Actually there should be no much difference in using CFrameWnd and CWnd class. Please simply replace CWnd with CFrameWnd and the problem with status bar should be gone as well as any other potential problems which occur if you are using control bars in the same window. The CFrameWnd class can also be used as a child window of other window and makes it possible to have dockable toolbars inside a control bar.
|
|
Technical Support
|
Mar 29, 2006 - 8:02 AM
|
Your code snippet has a critical error. Both top and bottom status bars were created using the same identifier (AFX_IDW_STATUS_BAR is used as default in both cases). The problem is fixed by using unique bar identifiers.
|
|
Thomas Fuchs
|
Mar 31, 2006 - 5:25 AM
|
Thanks for your reply, but I am afraid this is not the reason. It does not make a difference at all if I use the same, default or even different identifiers. For some reason the tootips show up on the first status bar on top of the other when I comment the line:
// remove gripper for status bar on top: // m_wndTBTop.SetBarStyle( m_wndTBTop.GetBarStyle() & ˜CBRS_GRIPPER ); // comment this line and tooltips work!
By the way, in my previous post I always spoke of toolbar in my code snippet. That was a booboo, I meant status bar of course. Anyway, the tooltips are working now (even though I don’t know why), however, Prof-UIS 2.53 shows another problem with the gripper, which Prof-UIS 2.30 did not. In order to prevent painting and handling a gripper on the first status bar, I used an overwritten CExtStatusControlBar class, simply named CExtStatusBar:
class CExtStatusBar:: public CExtStatusControlBar { virtual bool OnQueryGripperEnabledState() const { return false; } }
In Prof-UIS 2.30 that worked perfectly well. To recall my code snippet (now everything correctly named as status bar...)
class CDocFrame : public CMDIChildWnd { .... CExtStatusBar m_wndSBTop; // overwritten version of CExtStatusControlBar CEXtStatusControlBar m_wndSBBottom; // standard version ... }
CDocFrame::Create(LPCREATESTRUCT lpCreateStruct) { if ( CMDIChildWnd::OnCreate(lpCreateStruct) == -1 ) return -1;
// create first status bar on top of second status bar if ( !m_wndSBTop.Create(this) || !m_wndSBTop.SetIndicators(....) ) return -1;
// alternative creation without making a difference for displaying tooltips: /*------------------ if ( !m_wndSBTop.Create(this, WS_CHILD|WS_VISIBLE|CBRS_BOTTOM, IDW_STATUSBAR_TOP) || !m_wndSBTop.SetIndicators(....) ) return -1; -------------------*/
// set tooltip text m_wndSBTop.SetTipText(0, "Pane 0 on top");
// create second status bar below first status bar: if ( !m_wndSBBottom.Create(this) || !m_wndSBBottom.SetIndicators(....) ) return -1;
// set tooltip text m_wndSBBottom.SetTipText(0, "Pane 0 on bottom");
return 0; }
Now in Prof-UIS 2.53 the gripper for the first status bar does not show up (as requested and as it was in version 2.30), however, when I hover over the gripper area at the right side, the mouse turns into the resizing icon (you know what I mean, that little double-arrow) and I am able to resize the window. Which then causes a weird repainting behavior for both status bars, of course. Again, in version 2.30 this worked perfectly well.
Another funny thing I found out in this connection is what happens if I use the standard MFC CStatusBar classes instead of yours. In this case, the bottom status bar has to created first and then the status bar on top:
class CDocFrame : public CMDIChildWnd { .... CStatusBar m_wndSBTop; // standard MFC version CStatusBar m_wndSBBottom; ... }
CDocFrame::Create(LPCREATESTRUCT lpCreateStruct) { if ( CMDIChildWnd::OnCreate(lpCreateStruct) == -1 ) return -1;
// create bottom status bar first, this one shows the gripper: if ( !m_wndSBBottom.Create(this) || !m_wndSBBottom.SetIndicators(....) ) return -1;
// create second status bar on top of first status bar without a gripper:
// in order to prevent the gripper, we temporarily change the frame style, see CStatusBar::CreateEx(...) ModifyStyle(WS_THICKFRAME,0);
if ( !m_wndSBTop.Create(this) || !m_wndSBTop.SetIndicators(....) ) return -1;
// turn style on again: ModifyStyle(0,WS_THICKFRAME);
return 0; }
This version works perfectly well. No gripper for the status bar on top, no repainting problems, everything just fine.
Any suggestions?
Best regards, Thomas
|
|
Thomas Fuchs
|
Apr 2, 2006 - 4:34 AM
|
Hello,
After comparing the CExtStatusControlBar class of version 2.30 with version 2.53, I made the following modification in CExtStatusControlBar::OnNcHitTest(...) to fix the gripper issue:
UINT CExtStatusControlBar::OnNcHitTest(CPoint point) { ASSERT_VALID(this);
// modification: if ( OnQueryGripperEnabledState() ) {
// continue with original Prof-UIS 2.53 code: CRect rcGrip(0,0,0,0); CWnd* pWndParentStatus = GetParent(); ....
} // of if(...) // end of modification
// continue with original Prof-UIS 2.53 code:
UINT nHT = (UINT)CStatusBar::OnNcHitTest(point); if ( nHT != HTCLIENT && !OnQueryGripperEnabledState() ) nHT = HTCLIENT;
return nHT; }
This version works on my stacked status bars. There is no gripper painted for the status bar on top of the second one, the mouse pointer does not change when hovering over the gripper rectangle and the tooltips work as well.
Please confirm that this modification is safe.
Thank you and best regards, Thomas
|
|
Technical Support
|
Apr 2, 2006 - 5:33 AM
|
Would you send us some test project that demonstrates the issue? This would allow us to catch the whole picture.
|
|
Thomas Fuchs
|
Apr 2, 2006 - 6:59 AM
|
Thanks for your help. I just tried to email you a zipped project file with 680 kbytes to support@prof-uis.com, but it came back stating "Illegal Attachment". Please provide a proper email address.
Thanks and best regards, Thomas
|
|
Technical Support
|
Apr 2, 2006 - 7:50 AM
|
We got it and will tell you what’s wrong soon.
|
|
Thomas Fuchs
|
Mar 29, 2006 - 4:32 AM
|
Good morning,
Sorry to bother you again with that balloon tooltips stuff, but I found another problem. The ballon tooltips don’t show up on status bars, just the regular rectangle tooltip works. How can I change this?
By the way, I would say you should reconsider this tooltip behavior. It does not make much sense if the tooltips look different for certain kind of windows. For instance, for a CExtPopupMenuWnd I could use the global setting CExtPopupMenuWnd::__ETS_BALLON. At the same time, however, the tooltips on a toobar still appear as a rectangular, except I overwrite the function CExtControlBar::OnAdvancedPopupMenuTipWndDisplay(...). Last but not least, tooltips on status bars always appear as rectangular as it looks by now. So, how about just *one global* parameter which controls the behavior of all tooltips, regardless on which type of window (or control) they show up?
Regards, Thomas
|
|
Technical Support
|
Mar 29, 2006 - 8:00 AM
|
The balloon tips and MS Office 2003 style rectangular tips are implemented in the CExtPopupMenuTipWnd class. This class implements a popup window which is not based on the standard tooltip common control. Currently only popup menus, all the control bars, the tab window, the tab page container and all the button controls support CExtPopupMenuTipWnd -based tooltips. We are adding support for these tips in other classes step by step. We think we should keep several global variables as is, but we can add a global function which changes all the variables.
|
|
Thomas Fuchs
|
Mar 31, 2006 - 4:30 AM
|
Okay, understood. For what release is the Prof-UIS tooltip support on status bars to be expected?
Regards, Thomas
|
|
Technical Support
|
Apr 2, 2006 - 6:23 AM
|
We added this to our TO DO list and it will be available in the next release.
|
|
Thomas Fuchs
|
Apr 2, 2006 - 7:01 AM
|
...for your continued and speedy support!
I am looking forward to getting this new feature.
Regards, Thomas
|
|
Technical Support
|
Apr 4, 2006 - 10:06 AM
|
We added support for the advanced tooltips in the status bar. Now several tooltip styles including the balloon style are available: enum e_tip_style_t
{
__ETS_NONE = 0,
__ETS_BALLOON = 1,
__ETS_BALLOON_NO_ICON = 2,
__ETS_RECTANGLE = 3,
__ETS_RECTANGLE_NO_ICON = 4,
__ETS_INV_RECTANGLE = 5,
__ETS_INV_RECTANGLE_NO_ICON = 6,
}; The line below shows how to apply the balloon style: m_wndStatusBar.m_nAdvancedTipStyle = CExtPopupMenuTipWnd::__ETS_BALLOON; Please note that __ETS_NONE means the default tooltips will be used. We sent you the updated source code by e-mail.
|
|
Krustys Donuts
|
Mar 28, 2006 - 5:28 PM
|
Can you please explain to me why the following code doesn’t work?
int buttonIndex = m_wndMainToolBar.CommandToIndex( ID_DONUTS);
CExtBarButton* pButton = m_wndMainToolBar.GetButton( buttonIndex);
if( static_cast<int>(wParam))
pButton->ModifyStyle( 0, TBBS_DISABLED);
else
pButton->ModifyStyle( TBBS_DISABLED, 0);
m_wndMainToolBar.Invalidate();
|
|
Technical Support
|
Mar 29, 2006 - 6:56 AM
|
This code does not work because the toolbar is fully controlled by MFC’s command updating mechanism. The TBBS_DISABLED style of the toolbar button is used internally to remember the last command updating result. Please add command updating handler methods for the toolbar buttons which you need to disable/enable optionally.
|
|
Krustys Donuts
|
Mar 28, 2006 - 5:34 PM
|
oops... sorry, I think it does work. I just noticed that the button flickers, as if it’s being disabled and then reenabled. I’ll dig some more and will post up if I do find a problem.
|
|
Technical Support
|
Mar 29, 2006 - 6:57 AM
|
As we mentioned in the previous answer, the TBBS_DISABLED button style is used just for keeping the last command updating result. Please do not change this flag explicitly and use command updating methods instead.
|
|
Mike Van Duzee
|
Mar 28, 2006 - 7:56 AM
|
I have a control bar with a CExtWRB< CTreeCtrl > in it and another with a CExtWRB< CListCtrl >. When the control bar gets resized the tree and list controls don’t display scroll bars. If I take the CExtWRB off, everything works fine.
|
|
Technical Support
|
Mar 28, 2006 - 9:08 AM
|
The CExtWRB template class implements a thin border in the non-client area of the window. This class completely recomputes and repaints the non-client area. That is why the scrollbar-like areas in the non-client area are gone. So, use CExtWRB for non-scrollable windows only. If you need a thin border around the tree view control, just use a CProfStudio thin frame class available in the ProfStudio sample. This class implements exactly the same thin border but it is a standalone window.
|
|
Thomas Fuchs
|
Mar 28, 2006 - 1:07 AM
|
Hello there,
I was using version 2.30 ever since and recently changed to 2.53. If you enable the balloon menu tooltips with icon using
CExtPopupMenuWnd::g_eTtsClassicMenu = CExtPopupMenuTipWnd::__ETS_BALLOON
the icon is not painted properly (i.e. cut off). I have emailed you some screen dumps this morning.
By the way, I read somewhere here in the forum that you guys are of the opinion the balloon (or any other version) tooltips look a bit odd for menu bars and thus disabled this feature by default. I don’t agree with you here. Such a tooltip surely tells the user a lot more about a menu command he might click rather then the menu item text itself, providing the tooltip text is informative enough...
Thanks for your help and best regards, Thomas
|
|
Technical Support
|
Mar 28, 2006 - 7:44 AM
|
The balloon tips in menus are turned off by default due to following reasons: they are not present in Microsoft applications and yet a greater number of our customers wants it to be turned off (judging by the number of requests). We agree these tooltips are useful. We confirm that there is a bug with painting the information icon in the balloon tip. It can be fixed by updating the source code for the CExtPopupMenuTipWnd class constructor in the ExtPopupMenuWnd.cpp file: CExtPopupMenuTipWnd::CExtPopupMenuTipWnd()
: m_bFlipHorz( false )
, m_bFlipVert( false )
, m_sizeClassicMargins( 3, 2 )
, m_sizeRounders( 12, 10 )
, m_sizeLeader( 25, 25 )
, m_nIconMarginDX( 5 )
, m_nBalloonDistance( 12 )
, m_nClassicDistance( 13 )
, m_eTS( CExtPopupMenuTipWnd::__ETS_BALLOON )
, m_nSizeShadow( -1 )
, m_ttLA( 0 )
{
m_AnimationType = __AT_NONE;
m_bAnimFinished = true;
BYTE arrIconInformation[]=
{
0x42,0x4D,0x36,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,
0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,
0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x54,0x29,0x14,0x00,0x51,0x26,0x12,0x1B,0x56,0x2A,0x15,0x52,0x55,0x2A,
0x15,0x0F,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,
0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x54,0x29,
0x14,0x00,0x51,0x26,0x11,0x36,0x9A,0x6B,0x45,0xD1,0x75,0x47,0x29,0xCF,0x50,0x26,0x12,0x19,0x55,0x2A,0x15,0x00,0x55,0x2A,
0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,
0x15,0x00,0x55,0x2A,0x15,0x00,0x54,0x29,0x14,0x00,0x50,0x25,0x11,0x00,0x4C,0x21,0x0C,0x34,0x91,0x66,0x45,0xE4,0xE8,0xBC,
0x8E,0xFF,0x78,0x4A,0x2C,0xCD,0x4E,0x23,0x10,0x1F,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,
0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x53,0x27,0x13,0x00,0x4F,0x23,0x0F,0x17,0x58,0x2C,
0x16,0x66,0x69,0x3F,0x27,0x9C,0x7B,0x54,0x3A,0xE0,0xC8,0xA4,0x81,0xFF,0xEB,0xC3,0x99,0xFF,0x86,0x5B,0x3D,0xF1,0x50,0x24,
0x0F,0xB1,0x4F,0x24,0x10,0x65,0x54,0x29,0x14,0x18,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,
0x15,0x00,0x50,0x24,0x10,0x00,0x5D,0x32,0x1A,0x44,0x8B,0x65,0x4A,0xC8,0xAF,0x8F,0x71,0xFF,0xC7,0xA7,0x87,0xFF,0xD7,0xB8,
0x97,0xFF,0xE8,0xC8,0xA5,0xFF,0xF4,0xD0,0xAA,0xFF,0xCF,0xAC,0x8A,0xFF,0xAA,0x85,0x64,0xFF,0x7A,0x51,0x34,0xFB,0x53,0x27,
0x11,0xBA,0x53,0x28,0x13,0x3B,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x50,0x24,0x10,0x00,0x70,0x46,0x2D,0x51,0xB2,0x94,
0x79,0xF1,0xD8,0xBD,0xA2,0xFF,0xED,0xD1,0xB3,0xFF,0xE8,0xC0,0x9E,0xFF,0xDD,0xA3,0x7A,0xFF,0xEF,0xB4,0x8A,0xFF,0xED,0xB2,
0x87,0xFF,0xE9,0xBD,0x97,0xFF,0xEA,0xCA,0xA7,0xFF,0xD3,0xB2,0x91,0xFF,0x9D,0x76,0x56,0xFF,0x58,0x2C,0x15,0xD2,0x52,0x27,
0x13,0x36,0x55,0x2A,0x15,0x00,0x63,0x39,0x22,0x25,0xB9,0x9F,0x86,0xEB,0xDF,0xC7,0xB0,0xFF,0xFB,0xDF,0xC2,0xFF,0xFF,0xE6,
0xC8,0xFF,0xF3,0xD7,0xB9,0xFF,0xAD,0x64,0x3C,0xFF,0x9F,0x33,0x0D,0xFF,0xB3,0x65,0x3A,0xFF,0xF1,0xD0,0xAD,0xFF,0xFF,0xE1,
0xBE,0xFF,0xF6,0xD3,0xB2,0xFF,0xDB,0xBE,0x9E,0xFF,0x9B,0x75,0x56,0xFF,0x52,0x26,0x10,0xAB,0x54,0x2A,0x15,0x0E,0xA2,0x83,
0x6A,0x9C,0xDD,0xCA,0xB6,0xFF,0xFB,0xE3,0xCB,0xFF,0xFF,0xE7,0xCD,0xFF,0xFF,0xE4,0xCA,0xFF,0xFF,0xF1,0xD6,0xFF,0xBF,0x8A,
0x67,0xFF,0x84,0x19,0x00,0xFF,0xC3,0x88,0x63,0xFF,0xFF,0xEE,0xD1,0xFF,0xFF,0xE0,0xC0,0xFF,0xFF,0xE1,0xC1,0xFF,0xF6,0xD7,
0xB8,0xFF,0xD7,0xBA,0x9C,0xFF,0x73,0x49,0x30,0xEE,0x50,0x25,0x10,0x42,0xCC,0xB8,0xA5,0xE7,0xEF,0xDD,0xCB,0xFF,0xFF,0xEC,
0xD7,0xFF,0xFF,0xE9,0xD3,0xFF,0xFF,0xE8,0xD1,0xFF,0xFF,0xF2,0xDC,0xFF,0xBD,0x88,0x67,0xFF,0x88,0x1D,0x00,0xFF,0xC3,0x89,
0x66,0xFF,0xFF,0xEE,0xD5,0xFF,0xFF,0xE4,0xC8,0xFF,0xFF,0xE3,0xC7,0xFF,0xFF,0xE4,0xC7,0xFF,0xEF,0xD6,0xBA,0xFF,0xA1,0x7E,
0x64,0xFD,0x4E,0x22,0x0D,0x5D,0xD3,0xC6,0xB9,0xF0,0xF8,0xE7,0xD8,0xFF,0xFF,0xEF,0xDE,0xFF,0xFF,0xED,0xDB,0xFF,0xFF,0xEC,
0xD8,0xFF,0xFF,0xFA,0xE8,0xFF,0xC1,0x8F,0x71,0xFF,0x88,0x1C,0x00,0xFF,0xC3,0x8A,0x69,0xFF,0xFF,0xF2,0xDC,0xFF,0xFF,0xE7,
0xCF,0xFF,0xFF,0xE7,0xCE,0xFF,0xFF,0xE8,0xCF,0xFF,0xF8,0xE1,0xC9,0xFF,0xAD,0x8F,0x78,0xFE,0x4D,0x21,0x0C,0x5E,0xD5,0xCB,
0xC1,0xF1,0xF9,0xED,0xE1,0xFF,0xFF,0xF3,0xE6,0xFF,0xFF,0xF1,0xE3,0xFF,0xFF,0xF3,0xE4,0xFF,0xEE,0xDD,0xCB,0xFF,0xA3,0x59,
0x34,0xFF,0x81,0x13,0x00,0xFF,0xBC,0x86,0x66,0xFF,0xFF,0xF7,0xE6,0xFF,0xFF,0xEB,0xD7,0xFF,0xFF,0xEA,0xD5,0xFF,0xFF,0xED,
0xD7,0xFF,0xFA,0xE9,0xD3,0xFF,0xAF,0x93,0x7D,0xF9,0x4D,0x21,0x0C,0x50,0xDB,0xCF,0xC2,0xD5,0xF4,0xEE,0xE7,0xFF,0xFF,0xF9,
0xF0,0xFF,0xFF,0xF4,0xEA,0xFF,0xFF,0xF9,0xEF,0xFF,0xDC,0xC4,0xB3,0xFF,0xB5,0x89,0x74,0xFF,0xAE,0x84,0x70,0xFF,0xD1,0xB5,
0xA2,0xFF,0xFF,0xF6,0xE7,0xFF,0xFF,0xEF,0xDF,0xFF,0xFF,0xED,0xDC,0xFF,0xFF,0xF6,0xE5,0xFF,0xFB,0xEE,0xDC,0xFF,0x9F,0x7F,
0x69,0xD3,0x4D,0x21,0x0B,0x1C,0xE3,0xCF,0xBB,0x6A,0xE8,0xE5,0xE2,0xFF,0xFE,0xFC,0xF8,0xFF,0xFF,0xFA,0xF5,0xFF,0xFF,0xF7,
0xEF,0xFF,0xFF,0xFE,0xF8,0xFF,0xF7,0xE5,0xD8,0xFF,0xF3,0xCC,0xB3,0xFF,0xFF,0xF0,0xE3,0xFF,0xFF,0xF5,0xEA,0xFF,0xFF,0xF2,
0xE6,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0xFA,0xF1,0xFF,0xE7,0xD7,0xC7,0xFF,0x6A,0x41,0x2B,0x67,0x50,0x25,0x10,0x00,0xEC,0xD2,
0xB8,0x04,0xE7,0xDB,0xCF,0xB0,0xEF,0xEE,0xEC,0xFF,0xFE,0xFE,0xFD,0xFF,0xFF,0xFE,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0x9C,0x61,
0x43,0xFF,0x8F,0x21,0x00,0xFF,0xC7,0x99,0x80,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFC,0xF8,0xFF,0xFF,0xFF,0xFC,0xFF,0xFA,0xF2,
0xE8,0xFF,0x97,0x77,0x62,0x91,0x4D,0x20,0x0B,0x04,0x55,0x2A,0x15,0x00,0xED,0xD3,0xBA,0x00,0xED,0xD4,0xBC,0x0C,0xE7,0xDD,
0xD2,0x9B,0xF2,0xF1,0xF0,0xFF,0xFB,0xFC,0xFD,0xFF,0xFE,0xFF,0xFF,0xFF,0xC6,0xB2,0xA8,0xFF,0x8A,0x5C,0x4F,0xFF,0xDF,0xD2,
0xCB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEE,0xE5,0xDD,0xF1,0x95,0x76,0x64,0x76,0x51,0x24,0x0F,0x03,0x54,0x29,
0x14,0x00,0x55,0x2A,0x15,0x00,0xED,0xD3,0xBA,0x00,0xED,0xD4,0xBD,0x00,0xEA,0xD8,0xC6,0x00,0xCB,0xB6,0xA8,0x3D,0xE1,0xD9,
0xD1,0xA1,0xF1,0xEE,0xEB,0xE1,0xFA,0xFC,0xFD,0xEE,0xFB,0xFF,0xFF,0xEE,0xFA,0xFA,0xFA,0xEE,0xED,0xE5,0xDD,0xD1,0xAE,0x97,
0x89,0x88,0x68,0x40,0x2C,0x26,0x4C,0x20,0x0A,0x00,0x54,0x29,0x14,0x00,0x55,0x2A,0x15,0x00,0x55,0x2A,0x15,0x00,0x00
};
m_sizeRenderingIcon.cx = 16;
m_sizeRenderingIcon.cy = 16;
VERIFY(
m_icon.m_bmpNormal.LoadBMP_Buffer(
arrIconInformation,
sizeof(arrIconInformation) / sizeof(arrIconInformation[0])
)
);
}
|
|
Thomas Fuchs
|
Mar 29, 2006 - 4:19 AM
|
...that fixed it.
Best regards, Thomas
|
|
Christan HIRIGOYEN
|
Mar 28, 2006 - 12:49 AM
|
There is an assert in CExtCheckListWnd::PreSubclassWindow() in ExtCheckListWnd.cpp After that the list in the dialog box is empty. There is also the bug in the sample pageNavigator.
Thanks in advance
|
|
Technical Support
|
Mar 28, 2006 - 5:57 AM
|
Would you help us reproduce this bug in the PageNavigator sample? We need the exact sequence of actions that leads to the problem.
|
|
Christan HIRIGOYEN
|
Mar 29, 2006 - 6:02 AM
|
use PageNavigation sample in the full pachage installation. Compile in Win32 MBCS Debug the libs and the sample. select the item Navigation Pane Option in the bottom menu. After assert the dialog box appears empty.
Thanks in advance
|
|
Christan HIRIGOYEN
|
Mar 28, 2006 - 12:44 AM
|
The menu is always in English.
Thanks in advance
|
|
Technical Support
|
Mar 28, 2006 - 5:45 AM
|
The CExtPageNavigator along with the report grid component will be localized in the next major release (which is coming soon).
|
|
Christan HIRIGOYEN
|
Mar 28, 2006 - 12:26 AM
|
I have refresh problem with slider in 2.53. There is ghost when I drag the slider.
Thanks in advance
|
|
Technical Support
|
Mar 28, 2006 - 5:47 AM
|
Please let us know more details about the problem. First of all, which slider you are talking about? The CExtSliderWnd window, the CExtBarSliderButton toolbar button object or the CExtGridCellSlider grid cell object?
|
|
Christan HIRIGOYEN
|
Mar 29, 2006 - 5:54 AM
|
I experience the problem with CExtSliderWnd window.
Hope this help you. Thanks in advance
|
|
Technical Support
|
Mar 29, 2006 - 8:48 AM
|
The CExtSliderWnd class is based on the standard slider common control. We used a tricky technique based on WM_CTLCOLOR*** messages to repaint its background. Our slider generates a brush object which is based on a bitmap with a size equal to the slider’s client area. This bitmap is created as an image with a theme consistent background. This technique was used because there is no other way to repaint the background of the standard slider common control. Unfortunately the slider does not request a new background brush in all the cases when it needs it. The problem can be fixed by invoking the CExtSliderWnd::UpdateSliderWnd() method.
|
|
Christan HIRIGOYEN
|
Mar 28, 2006 - 12:23 AM
|
Why the PageNavigator is not skinned with xml Aqua and BlackDiamond. is it planned in a next release?
Thanks in advance.
|
|
Technical Support
|
Mar 28, 2006 - 5:38 AM
|
We plan to skin the page navigator, date picker and scroll bars in one of the next releases (maybe in the very next major release).
|
|
Raffaele Cappelli
|
Mar 27, 2006 - 7:13 AM
|
Hello,
I submitted a link to this document using your web-based bug report form a few days ago. It contains a few issues releated to the latest v2.53 version. I have no hurry that any of those bugs is fixed, please just acknowledge you have received my message and the document.
Thank you and best regards
|
|
Technical Support
|
Mar 27, 2006 - 7:41 AM
|
Thank you for the bug report. In fact, we received it but were unable to provide all the fixes immediately. We are sorry for this. The updated version will be available soon. Thank you again.
|
|
Raffaele Cappelli
|
Mar 27, 2006 - 8:41 AM
|
Thank you. As I wrote, there is absolutely no hurry you provide the fixes in the next days. I will not release my program before one month. I just wanted to be sure you received the bug reports.
|
|
Raffaele Cappelli
|
Mar 27, 2006 - 10:02 AM
|
I have just updated the document with a new bug I was able to reproduce and capture a screenshot. It is described at point 10 of the document.
|
|
Technical Support
|
Mar 28, 2006 - 8:37 AM
|
We downloaded the document and are working on fixing the issues. Thank you!
|
|
Bahrudin Hrnjica
|
Mar 24, 2006 - 5:46 AM
|
I didnt find GridWnd supports hide column, and selection of the hide column. I can make hide column by setting ExtendSet to 0, but the problem is that i dont want to select hidden colum when arrow key is pressed. How can i fix that, and do you plan to implement such a feature. regards
|
|
Technical Support
|
Mar 24, 2006 - 1:50 PM
|
We are still keeping the CExtGridWnd class as a generic grid window with customizable horizontal/vertical scrolling strategies. The feature you are asking for is currently supported in the CExtReportGridWnd class which is derived from CExtGridWnd class. Please provide us with all the behavior details of the grid you need.
|
|