Subject |
Author |
Date |
|
Scott Moore
|
Jun 13, 2008 - 9:20 AM
|
We have several CExtResizeableDialog classes that contain a CExtTabPageContainerWnd which contains 1 or more CExtResizeableDialog. The problem is the tab order doesn’t work correctly. You can tab around inside the inner dialog, but it will never jump out to the OK/Cancel buttons. We changed a few things and now we can tab around the inner dialog and when it reaches the bottom control, it does jump out to the OK/Cancel button. But once it reachs OK/Cancel, it just keeps moving from OK to Cancel and back. It doesn’t go back into the inner dialog. And Shift-tab immediately jumps to the Cancel button, no matter which inner dialog control had the focus. How can we fix the tab order to work like it should?
|
|
Scott Moore
|
Jun 14, 2008 - 8:59 AM
|
I did as you said but it didn’t work until I added the DS_CONTROL style to the inner dialog with the controls. I added the WS_EX_CONTROLPARENT to the tab control and the outer dialog. But it’s only completely working in 1 of my 3 dialogs.
The other 2 dialogs, Shift-Tab works fine and cycles thru all the controls on the inner dialog and back out to the OK/Cancel buttons, then back to the inner dialog controls.
The problem is the Tab key does not go back into the inner dialog. Once it reaches the OK/Cancel buttons, it only cycles thru them. What would cause such behavior?
|
|
Technical Support
|
Jun 14, 2008 - 3:37 AM
|
Please add the WS_EX_CONTROLPARENT extended window style to the tab page container window and its child dialog page windows. This style will make tab order working between the dialog window which is the parent of the tab page container window and the dialog page windows inside the tab page container.
|
|
Scott Moore
|
Jun 14, 2008 - 8:59 AM
|
I did as you said but it didn’t work until I added the DS_CONTROL style to the inner dialog with the controls. I added the WS_EX_CONTROLPARENT to the tab control and the outer dialog. But it’s only completely working in 1 of my 3 dialogs.
The other 2 dialogs, Shift-Tab works fine and cycles thru all the controls on the inner dialog and back out to the OK/Cancel buttons, then back to the inner dialog controls.
The problem is the Tab key does not go back into the inner dialog. Once it reaches the OK/Cancel buttons, it only cycles thru them. What would cause such behavior?
|
|
Technical Support
|
Jun 16, 2008 - 6:47 AM
|
Thank you for reporting this problem. It’s hidden in the DefDlgProcA() /DefDlgProcW() functions rather than in Prof-UIS. We spent 5-6 hours after reading this message and we coded our own VK_TAB key processing code for the CExtResizableDialog class and it will be added in v.2.84. Here is the updated version of the ProfUIS_Controls sample which demonstrates the complex focus changing based on the new VK_TAB key processing code:
ProfUIS_Controls-284-tab-order-demo.zip
You can requested the updated source via email.
|
|
Scott Moore
|
Jun 13, 2008 - 9:12 AM
|
I have an application and I’m trying to make the standard Cut/Copy/Paste/Select All commands operate across all the various dynamic bars, CExtControlBars and tab view containers. The problem is nothing is consistent. We have a tab control in the CMainFrame, which mostly works correctly with the clipboard operations. Inside the tab control is a CHtmlView, but we also have CExtEdit in CExtControlBar and some floating Dynamic Bar windows and they never seem to work correctly. I started trying to write a global handler like so:
void CMainFrame::OnSelectAll()
{
CWnd * target = CWnd::GetFocus();
if (target)
{
CRenderView * view = dynamic_cast <CRenderView *> (target);
if (view)
{
view->SelectAll();
return;
}
CEdit * edit = dynamic_cast <CEdit *> (target);
if (edit)
{
edit->SetSel(0, -1);
}
}
}
Which actually almost works if you use the Ctrl-A shortcut. If you select it from the menu, most times the target becomes the menu item itself unless the focus was in CExtEdit. The focus is always lost for CHtmlView. However, if you hit Ctrl-A while the CExtControlBar->CExtEdit has the focus, all it does it beep, but selecting "Select All" from the menu works for the CExtEdit. Please tell me there’s an easier way to make this work like a normal windows application?
|
|
Technical Support
|
Jun 14, 2008 - 3:39 AM
|
This code should work correctly only if there is only one instance of the CRenderView object and only one instance of CEdit is created at runtime. Most of applications have more than one CEdit objects instantiating at the same time. Please try to define and use your own CEdit -derived class. Besides, if the edit common control is not configured for displaying selection always and it’s not focused, then you will not see the selection in it.
|
|
Scott Moore
|
Jun 13, 2008 - 11:01 AM
|
Also, I can’t figure out why the CExtEdit control on my CExtControlBar ends up eating the Ctrl-A menu shortcut and causing a beep. Why doesn’t the menu handler get invoked? In the CExtResizeableDialog (the child of CExtControlBar), we did override this method:
BOOL UrlToolbar::PreTranslateMessage(MSG * pMSG)
{
if (WM_KEYFIRST <= pMSG->message && pMSG->message <= WM_KEYLAST
&& ( pMSG->wParam == VK_TAB || pMSG->wParam == VK_UP
|| pMSG->wParam == VK_DOWN ))
{
return CExtResizableDialog::PreTranslateMessage(pMSG);
}
else
{
return CWnd::PreTranslateMessage(pMSG);
}
}
|
|
Technical Support
|
Jun 14, 2008 - 3:41 AM
|
The CExtEditBase::OnCmdMsg() virtual method handles and updates several standard ID_EDIT_*** commands including ID_EDIT_SELECT_ALL . You can implement your CExtEdit -derived class, override the CExtEditBase::OnCmdMsg() virtual method and simply invoke the CWnd::OnCmdMsg() method in it or return FALSE if you don’t needed the command handling/updating of the CExtEditBase class.
|
|
Scott Moore
|
Jun 14, 2008 - 8:30 AM
|
But why doesn’t the CExtEdit handle the Ctrl-A, which maps to ID_EDIT_SELECT_ALL? Instead of selecting the text in the edit control, it just beeps. Conversely, if I choose "Select All" from the menu, it works correctly. Why doesn’t it handle the keyboard accelerator correctly?
|
|
Technical Support
|
Jun 14, 2008 - 3:27 PM
|
The CExtEditBase::OnCmdMsg() virtual method handles and updates all the ID_EDIT_*** commands correctly. Here is the modified version of the SDI sample:
SDI-SampleAppUpdated.zip
It contains an ID_EDIT_SELECT_ALL command in the Edit popup menu in the menu bar and this command is handled correctly by the edit control inside a control bar due to the following code in the CMainFrame::OnCmdMsg() virtual method: if( ::GetFocus() == m_wndInBarEdit.GetSafeHwnd()
&& m_wndInBarEdit.OnCmdMsg( nID, nCode, pExtra, pHandlerInfo )
)
return TRUE;
|
|
Carsten Pedersen
|
Jun 13, 2008 - 2:38 AM
|
Hi, When I built my dialog app using the Wizard the first build generated the following warnings: c:\Program Files\Prof-UIS\Include\ExtTabWnd.h(1860) : warning C4312: ’type cast’ : conversion from ’DWORD’ to ’HICON’ of greater size
c:\Program Files\Prof-UIS\Include\ExtTabWnd.h(1831) : while compiling class-template member function ’CExtCmdIcon *CExtTMWI<_BT>::OnTabWndQueryItemIcon(const CExtTabWnd::TAB_ITEM_INFO *) const’
with
[
_BT=CExtTabWnd
]
c:\Program Files\Prof-UIS\Include\ExtTabWnd.h(2242) : see reference to class template instantiation ’CExtTMWI<_BT>’ being compiled
with
[
_BT=CExtTabWnd
] This warning exist on lines 1860 and 1867.
Is there a way to rewrite the code so that I can avoid this annoying warning? Carsten Panch
|
|
Technical Support
|
Jun 14, 2008 - 3:05 AM
|
Here is the updated source code for the OnTabWndQueryItemIcon() virtual method of the CExtTMWI template class: virtual CExtCmdIcon * OnTabWndQueryItemIcon(
const CExtTabWnd::TAB_ITEM_INFO * pTii
) const
{
ASSERT_VALID( pTii );
HWND hWndMdiChild = (HWND)pTii->LParamGet();
if( hWndMdiChild == NULL
|| (! ::IsWindow( hWndMdiChild ) )
)
return NULL;
HICON hIcon = (HICON)
::SendMessage(
hWndMdiChild,
WM_GETICON,
WPARAM(ICON_SMALL),
0
);
if( hIcon == NULL )
{
hIcon = (HICON)
::SendMessage(
hWndMdiChild,
WM_GETICON,
WPARAM(ICON_BIG),
0
);
if( hIcon == NULL )
{
#if _MFC_VER >= 0x700
// disable warning C4312: type cast’ : conversion from ’DWORD’ to ’HICON’ of greater size
#pragma warning( push )
#pragma warning( disable : 4312 )
#endif // _MFC_VER >= 0x700
hIcon = (HICON)
::__EXT_MFC_GetClassLong(
hWndMdiChild,
__EXT_MFC_GCL_HICONSM
);
if( hIcon == NULL )
{
hIcon = (HICON)
::__EXT_MFC_GetClassLong(
hWndMdiChild,
__EXT_MFC_GCL_HICON
);
if( hIcon == NULL )
return NULL;
} // if( hIcon == NULL )
#if _MFC_VER >= 0x700
// rollback warning C4312: type cast’ : conversion from ’DWORD’ to ’HICON’ of greater size
#pragma warning( pop )
#endif // _MFC_VER >= 0x700
} // if( hIcon == NULL )
} // if( hIcon == NULL )
ASSERT( hIcon != NULL );
m_iconMdiChildCache.Empty();
CExtCmdIcon _iconBig;
_iconBig.AssignFromHICON( hIcon, true );
VERIFY(
m_iconMdiChildCache.
CreateScaledCopy(
_iconBig,
CSize( 16, 16 )
)
);
if( ! m_iconMdiChildCache.IsEmpty() )
return (&m_iconMdiChildCache);
return NULL;
}
|
|
tera t
|
Jun 13, 2008 - 2:24 AM
|
Hello. I want to connect a tab of the sub to CExtTabMdiOneNoteWnd.
Thank you very much for your help.
|
|
tera t
|
Jun 15, 2008 - 11:27 PM
|
Hello. The state of OneNotetab does not matter.
Control is always in a condition to have stuck.
Even a button is good.
Cannot I use this domain freely as a custom area?
Thanks,
|
|
Technical Support
|
Jun 14, 2008 - 3:09 AM
|
It is not completely clear what you are looking for. We guess you are currently using a One Note tab page container. Using the colored tabs, you can switch between tab page windows and you want to insert a new Flat tab control in the same line with colored One Note tabs. Does this Flat tab specific for some page windows? Should these Flat tabs appear/disappear depending on the tab page selection in the OneNote tabs?
|
|
tera t
|
Jun 17, 2008 - 2:40 AM
|
Hello. I made it.
I wonder if there is some problem.
Because I sent a source, I want you to check it.
|
|
Technical Support
|
Jul 10, 2008 - 1:26 PM
|
Could you please re-send us the source code? Please re-name ZIP / LZH / RAR / 7Z like file extension into something like ZI_ / LZ_ / RA_ / 7_.
|
|
David Skok
|
Jun 12, 2008 - 3:01 PM
|
I override OnSiwPaintBackground in all of the grids in my app to paint a gradient fill. In v2.82 grid cells with the __EGCS_READ_ONLY style had a transparent background showing the gradient through like the other cells. in v2.83 they have a fixed color of white. In addition the methods I used to show coloring other than transparent in such cells no longer works. How can I revert to previous behaviour? Dave
|
|
Technical Support
|
Jun 16, 2008 - 10:16 AM
|
The CExtGridCell::BackColorSet() , CExtGridCell::BackColorGet() , CExtGridCell::TextColorSet() and CExtGridCell::TextColorGet() methods in v.2.83 are exactly the same as in v.2.82. All these methods take a e_cell_state_t eCellState parameter. The CExtGridCell::e_cell_state_t enumeration was extended in v.2.83 with several new constants: enum e_cell_state_t
{
__ECS_ALL = 0, // color in any state
__ECS_NORMAL = 1, // normal, not hovered, not selected, not highlighted
__ECS_SELECTED = 2, // selected
__ECS_HOVERED = 3, // hovered
// next added in 2.83
__ECS_READ_ONLY = 4, // normal, but read-only
__ECS_HIGHLIGHT_PRESSING = 5, // pressed
__ECS_HIGHLIGHT_BY_FOCUS = 6, // in the same row or column with focused
__ECS_HIGHLIGHT_BY_SELECTION = 7, // in the same row or column with selected
__ECS_HIGHLIGHT_BY_HOVER = 8, // in the same row or column with hovered
// total count of supported colors
__ECS_COUNT = 9,
}; Which background color types you are using in your grid cells? And which cell classes you are using?
|
|
Technical Support
|
Jun 14, 2008 - 3:19 AM
|
The CExtScrollItemWnd::OnSiwPaintBackground() virtual method in v.2.83 works in the same way as in v.2.82. The CExtScrollItemWnd::OnSiwGetReadOnlyBackgroundColor() and CExtScrollItemWnd::OnSiwGetReadOnlyTextColor() virtual methods return the background/text colors of read-only grid cells. You can implement the CExtScrollItemWnd::OnSiwGetReadOnlyBackgroundColor() virtual method and return the COLORREF(-1L) value from it to make all the read-only grid cells having the default background.
|
|
David Skok
|
Jun 16, 2008 - 7:34 AM
|
Thank you, that fixes read only cells that I want to have the default background like they did in v2.82 but there still is a problem. I have some read only cells that I set the background color using BackColorSet for the cell. This works fine in v2.82 but no longer works in v2.83. How can I fix this? Keep in mind that I do not set all read only cells in a single grid to the same background color. There are different background colors for read only cells in the same grid. Thanks, Dave
|
|
Ulrich Heinicke
|
Jun 12, 2008 - 8:01 AM
|
Hi,
i have a problem with the new function GridCellJoinSet. I insert the following lines in to my program: GridCellJoinSet(CSize(3, 1), 0L, 0L, 0, -1);
GridCellJoinSet(CSize(4, 1), 1L, 0L, 0, 0);
GridCellJoinSet(CSize(3, 1), 1L, 1L, 0, 0);
but i get:
So that’s wrong? Ulrich
|
|
Technical Support
|
Jun 13, 2008 - 4:48 AM
|
Please note all the underlying grid cells should also be initialized even though these cells are hidden. This is because of the hist-testing algorithm. You can use the CExtGridCellEx class for such cells, which is both compact and supports merging.
If CExtGridCellEx is not suitable for you, you can use any CExtGridCellEx -based class instead. In other words, you should use a class that supports cell merging. There is a CExtGCJ template class that adds this feature to any grid cell class and this template class is used as a base class for CExtGridCellEx (a parent of most of Prof-UIS grid cell classes). So, most of grid cells can be merged. The grid cell classes like CExtGridCellStringDM cannot be merged so you should use the CExtGCJ < CExtGridCellStringDM > template based type instead of CExtGridCellStringDM .
|
|
tera t
|
Jun 12, 2008 - 2:19 AM
|
Hello. Can you change an indication point of DynTabControrlBar?
Is it difficult?
|
|
Technical Support
|
Jun 12, 2008 - 2:17 PM
|
Could you please explain what is "indication point"? If you want to customize the caption text of a resizable bar, you should implement the CExtControlBar::OnGetBarCaptionText() virtual method.
|
|
tera t
|
Jun 12, 2008 - 7:18 PM
|
Hello. I want to change a position of DynTab.
Were you understood?
|
|
Technical Support
|
Jun 14, 2008 - 3:06 AM
|
Please invoke the following code at your app startup: CExtControlBar::g_bTabsAtTop = true;
|
|
tera t
|
Jun 11, 2008 - 6:32 PM
|
Hello. 1, I push the button in Paragraph. 2, I change the tab of the ribbon bar.
3, The application falls.
|
|
Technical Support
|
Jun 12, 2008 - 2:21 PM
|
|
|
tera t
|
Jun 10, 2008 - 8:37 PM
|
Hello. In the following ratios, I want to build a docking bar. I do not work with DockControlBarLTRB definitely either.
In present CExtControlBar, is it unrealizable?
m_pMadoriBar->DockControlBar(AFX_IDW_DOCKBAR_RIGHT, 1, pFrame );
m_pMadoriBar->DockControlBarIntoTabbedContainer(
SMART(m_pKouzouBar) , 0 , NULL , false
);
m_pInfoZaiBar->DockControlBarLTRB(
60 ,
SMART(m_pMadoriBar) ,
AFX_IDW_DOCKBAR_BOTTOM ,
true
);
|
|
Technical Support
|
Jun 11, 2008 - 1:49 PM
|
You have docked the first two bars into a tabbed container: m_pMadoriBar->DockControlBar(AFX_IDW_DOCKBAR_RIGHT, 1, pFrame );
m_pMadoriBar->DockControlBarIntoTabbedContainer(
SMART(m_pKouzouBar) , 0 , NULL , false
); They will occupy the entire column of bars. But you should invoke the frame’s RecalcLayout() method before docking the third bar: RecalcLayout(); This invocation will place all the already docked bars to their desired positions.
Now you can dock the third bar: m_pInfoZaiBar->DockControlBarLTRB(
60,
SMART(m_pMadoriBar),
AFX_IDW_DOCKBAR_BOTTOM,
true
);
|
|
tera t
|
Jun 11, 2008 - 11:25 PM
|
|
|
tera t
|
Jun 10, 2008 - 7:09 PM
|
Hello. In Prof-uis2.83, CExtPPVW_Base disappears.
I am troubled. Is the revival of the class impossible?
What is the substitute class of CExtPPVW_Base? Thanks,
|
|
Technical Support
|
Jun 11, 2008 - 1:45 PM
|
The CExtPPVW_Base template class in v.2.83 beta was internal. We had to remove it due to some problems with compilation of the CExtPPVW template class and its specialized versions in v.2.83 (Visual C++ 7.0 / 2002). This version of C++ compiler is the worst C++ compiler implementation we ever saw. The template class support in it is even worst that in Visual C++ 6.0.
You should use the CExtPPVW template class exactly like it was in v.2.82 if you apply this template class to grid controls. If you apply it to other windows, you should derive your class from both CExtPPVW < . . . > template based type and the CExtPPVW_Printable class.
|
|
R M
|
Jun 9, 2008 - 7:16 AM
|
Dear Support, SelectionBoldSet Prof-UIS v.2.82 doesn’t work in CExtTabPageContainerWnd or any of its derived classes. The text of the selected Tab doesn’t turn to bold. It worked fine in Prof-UIS v.2.81 version. CExtTabPageContainerWnd
CExtTabPageContainerOneNoteWnd
CExtTabPageContainerFlatWnd
...
Other methodes such as AutoHideScrollSet, HoverFocusSet, ShowBtnCloseSet,... work fine.
In some cases the selected Tab-Text gets even grayed out!
Compare the "TabPages" sample. (Unicode Release version: TabPages-u.exe v.2.82 vs v.2.81)
Thanks in advance for a quick response
RM
|
|
Technical Support
|
Jun 9, 2008 - 8:52 AM
|
This bug is already fixed in v.2.83 which should be released tomorrow.
|
|
Kevin Eshbach
|
Jun 6, 2008 - 2:48 PM
|
In the Commands property page of the Customize dialog box that allows a user to customize their toolbars their is a list box for the various categories. When a category name is very long it gets cut off in the list box. Could you update the list box to display a vertical scroll bar when any item in the list box will be clipped so that a user has a way of viewing the entire text? Kevin Eshbach
|
|
Technical Support
|
Jun 9, 2008 - 6:00 AM
|
Do you mean a horizontal scroll bar? The vertical scroll bar is present in both list boxes:
|
|
Kevin Eshbach
|
Jun 10, 2008 - 9:31 AM
|
Yes, I meant a horizontal scroll bar, not the vertical scroll bar. The builtin spell checker unfortunately could not read my mind. Kevin Eshbach
|
|
David Skok
|
Jun 6, 2008 - 9:37 AM
|
I use a report grid in my app where no grouping is enabled. How can I change the order in which items are displayed? I am not talking about sorting by ascending/descending, I’m talking custom ordering. For simplicity in explaining what I want to do... lets say items originally inserted as follows: 1 2 3 later I want order changed to: 1 3 2 How can I do it.
|
|
Technical Support
|
Jun 6, 2008 - 1:30 PM
|
The CExtReportGridWnd class is derived from CExtTreeGridWnd . You can work with the report grid control as though it is a tree grid control. CExtReportGridItem* pointers in fact are HTREEITEM handles. The CExtTreeGridWnd::ItemCopyMove() method can be used for moving report/tree grid rows. It can be used for cloning rows in the CExtTreeGridWnd control. But it cannot be used for cloning rows in the CExtReportGridWnd control. The CExtTreeGridWnd::ItemCopyMoveTest() method can be used for detecting whether the tree row can be moved into a new position (you don’t need this method in a plain report grid).
Generally the CExtReportGridWnd class uses CExtReportGridItem* pointers as unique row identifiers and does not define the order of items. The registered report items are simply added to the bottom.
|
|
David Skok
|
Jun 25, 2008 - 6:57 AM
|
On a similar note, is it possible to use ItemInsert to insert items into ReportGrid in desired order as they are created?
|
|
Technical Support
|
Jun 26, 2008 - 5:30 AM
|
A report grid is a really tree grid. But in a tree grid and in a tree common control you typically see a very different layout of tree brunches. In a report grid tree brunches always have the same nested level. Besides, only the bottom level tree rows in a report grid are displayed as data rows with columns in grid cells because other rows are automatically assumed to be group rows. All the grid classes operate with the same grid cell classes. If you don’t need the report grid as it is, then you can switch to a tree grid.
|
|
howard liu
|
Jun 6, 2008 - 9:09 AM
|
<dir>
Hi,
"Sorry for the Forwared same mails repeatedly".I want the Tabheader of the property sheet to be colored.The Tabheaders are created by using the AddPage() method of MFC.So is there any equivalent method in ProfUi to skin the tabheader of the PropertySheet.
Rgds,
Naiby </dir>
|
|
howard liu
|
Jun 10, 2008 - 7:18 AM
|
Hi, Thanks for the reply. Is there any Examples or demo application which illustrate on creating one container dialog which should have the CExtTabPageContainerWnd window and several buttons like OK and Cancel at the bottom and using property sheet. Please send samples or code required to achieve this. Thanks Regards Naiby
|
|
Technical Support
|
Jun 14, 2008 - 3:44 AM
|
Here is the sample project that shows how to use CExtTabPageContainerWnd instead of CExtResizablePropertySheet .
|
|
Technical Support
|
Jun 6, 2008 - 1:27 PM
|
The CExtResizablePropertySheet and CExtResizablePropertyPage classes can be used for creating themed/skinned wizard windows. The standard property sheet in tabbed mode uses a tab common control when Prof-UIS provides its own tab window which is not based on the common control. If you need a tabbed property sheet, please create one container dialog which should have the CExtTabPageContainerWnd window and several buttons like OK and Cancel at the bottom. Then please create several child dialogs and insert them into tab page container window as pages.
|
|
Gevork Odabashyan
|
Jun 6, 2008 - 6:43 AM
|
I override _NcMenuButtonIsEnabled method to disable menu button for dynamic bar. All Ok. Menu button not appears.
But If I right click on bar tab header, this menu appeares as popup menu.
How can I disable this popup menu.
|
|
Technical Support
|
Jun 6, 2008 - 12:58 PM
|
You can modify or disable any of built-in Prof-UIS popup menus displayed over control bars or frame window areas. You can learn more about this from this article.
|
|
howard liu
|
Jun 6, 2008 - 5:52 AM
|
|
|
Technical Support
|
Jun 6, 2008 - 1:18 PM
|
The CExtResizablePropertySheet and CExtResizablePropertyPage classes can be used for creating themed/skinned wizard windows. The standard property sheet in tabbed mode uses a tab common control when Prof-UIS provides its own tab window which is not based on the common control. If you need a tabbed property sheet, please create one container dialog which should have the CExtTabPageContainerWnd window and several buttons like OK and Cancel at the bottom. Then please create several child dialogs and insert them into tab page container window as pages.
|
|
howard liu
|
Jun 6, 2008 - 5:52 AM
|
|
|
Damien Castelltort
|
Jun 6, 2008 - 3:26 AM
|
Hi, We are developping a game level editor tool and are currently experiencing performance issues with profuis 2.82. We need to keep a good framerate in the tool, but if a profuis control has the focus or if the mouse is over it, the framerate drops drastically as you can see in the scrrenshots below. They show the framerate with the mouse over a CComboBox and over a CExtComboBox. The problem is the same with CEdit/CExtEdit and possibily other type of controls. I Also took a VTune screenshot to point out the profuis methods that could be responsible of the problem.
Thank you for taking a look at the problem. Aurélien Loizeau
|
|
Damien Castelltort
|
Jun 9, 2008 - 3:33 AM
|
Hi, Thanks for the answer. We already checked our code and even suspended all our own updating methods. The problem is still present. But we will try with 2.83. Aurélien Loizeau
|
|
Technical Support
|
Jun 6, 2008 - 1:25 PM
|
We are releasing v.2.83 now and it contains several issue fixes related to the performance and MFC command updating mechanism. The problems with combo boxes and editors should be gone. But you should also check your project and remove any heavy source code from the command updating methods.
|
|
Offer Har
|
Jun 5, 2008 - 12:38 PM
|
When I add a vertical scroll-bar to a grid, it breaks the look of the grid on the top side: This is the same problem zoomed-in:
|
|
Technical Support
|
Jun 19, 2008 - 5:38 AM
|
Actually the grid and scroll bar are different windows and scroll bar window has its own background which we cannot change from the grid.
|
|
Offer Har
|
Jun 19, 2008 - 5:50 AM
|
I’m know they are not the same window. The problem is that it seems that the scroll-bar needs some kind of frame, or maybe be deflated by one pixel so it will not look out of place. I hope you agree with me that it looks off...
|
|
Offer Har
|
Jun 17, 2008 - 9:59 AM
|
Any thoughts on how to solve this problem?
|
|
Offer Har
|
Jun 5, 2008 - 12:29 PM
|
I have a tree-grid that I paint with these attributes:
SiwModifyStyle(
(__ESIS_STH_NONE|__ESIS_STV_ITEM) // Item scroll window styles
| __EGBS_SFB_FULL_ROWS // Selection/focus type - full row
| __EGBS_SF_SELECT_OUTER_ROWS // Cell selection when clicking row header
| __EGBS_DYNAMIC_RESIZING // Resize rows/columns on-the-fly
| __EGBS_GRIDLINES // Draw grid lines
| __EGBS_RESIZING_CELLS_OUTER, // enable row/column resizing
0, false);
SiwModifyStyleEx(
__EGBS_EX_CELL_TOOLTIPS_INNER
| __EGBS_EX_CELL_EXPANDING_INNER
| __EGWS_EX_PM_COLORS
| __EGBS_EX_CORNER_AREAS_3D
| __EGBS_EX_CORNER_AREAS_CURVE
| __EGBS_EX_HVI_EVENT_CELLS,
0, false);
BseModifyStyleEx( __EGBS_BSE_EX_PROPORTIONAL_COLUMN_WIDTHS); And OnTreeGridQueryDrawOutline returns false , so there are no outlines. However, the top-left corner of the cells is not painted properly, as you can see in this zoomed snapshot:
|
|
Technical Support
|
Jun 19, 2008 - 5:42 AM
|
Thank you for reporting the problem. You can fix it in this way. In the CExtGridBaseWnd::OnGbwPaintCell method, update the following code block at the very end of the method: if( bGridLinesHorz || bGridLinesVert )
{
COLORREF clrFace = OnGbwQueryGridLinesColor();
if( bGridLinesHorz )
{
dc.FillSolidRect( rcCell.left - 1, rcCell.top - 1, rcCell.right - rcCell.left, 1, clrFace );
dc.FillSolidRect( rcCell.left - 1, rcCell.bottom - 1, rcCell.right - rcCell.left, 1, clrFace );
} // if( bGridLinesHorz )
if( bGridLinesVert )
{
dc.FillSolidRect( rcCell.left - 1, rcCell.top, 1, rcCell.bottom - rcCell.top, clrFace );
dc.FillSolidRect( rcCell.right - 1, rcCell.top, 1, rcCell.bottom - rcCell.top, clrFace );
} // if( bGridLinesVert )
} // if( bGridLinesHorz || bGridLinesVert )
|