Subject |
Author |
Date |
|
Wilhelm Falkner
|
Apr 19, 2010 - 8:14 AM
|
Do You plan to support MFC Feature Pack? E.g. derive CExtDockBar also from CBasePane, support of CMDIFrameWndEx, ... At the moment, when I use the Feature Pack, Your CExtControlBar, CExtMenuControlBar, ... are not displayed in the right way. TIA Willi
|
|
Technical Support
|
Apr 19, 2010 - 10:29 AM
|
In fact, the "feature" pack is a copy of software bought by Microsoft from one of Prof-UIS competitors. It just duplicates some of Prof-UIS features. We do not plan to integrate Prof-UIS with it.
|
|
Wilhelm Falkner
|
Apr 19, 2010 - 11:24 AM
|
Ok, no problem, but in the Feature Pack there a some nice features (like MID tabbed group for Doc/View) that are still missing in Prof-Uis. A customer of me asked for this feature - what should I do? Do I get a solution from you? Or do I have to switch to Feature Pack? Because I have a lot of stuff done with Prof-Uis, I would like to stay at Prof-Uis. But I have also to satify my customer. Do You think, that this feature (with Doc/View) will be integrated in Prof-Uis? TIA Willi
|
|
Eric guez
|
Apr 19, 2010 - 2:35 AM
|
Hi again,
Since my app is using a xml skin, the docking helper is not present anymore. Is it normal ?
How can display it ?
Thanks !
|
|
Eric guez
|
Apr 29, 2010 - 1:38 AM
|
|
|
Technical Support
|
Apr 29, 2010 - 6:15 AM
|
It looks like we described in this forum thread how to improve the docking algorithm like you need, isn’t it?
|
|
Technical Support
|
Apr 20, 2010 - 12:28 PM
|
You should invoke the EnableDocking() method of your CExtControlBar windows with the CBRS_BOTTOM|CBRS_LEFT parameter to make the resizable bar docked at the left/bottom sides of the main frame window. The CExtControlBar::_CanDockLTRB() and CExtControlBar::_CanDockToTabbedContainers() virtual methods allow you to detect when the user tries to dock some bar near some other one or into the same tabbed group with it. These methods return flag indicating whether these actions are enabled.
|
|
Eric guez
|
Apr 19, 2010 - 2:36 AM
|
|
|
Technical Support
|
Apr 19, 2010 - 6:09 AM
|
The TabbedBars sample application allows you to select a docking algorithm and markers (guide diamonds) independently of the current UI theme. This can be done in the code:
CExtControlBar::g_eResizablePanelDockingType = CExtControlBar::__RESIZABLE_DOCKING_TYPE_STUDIO_2008_VISTA;
|
|
Eric guez
|
Apr 19, 2010 - 11:04 AM
|
|
|
Eric guez
|
Apr 20, 2010 - 6:02 AM
|
another Question regarding "guide diamonds".
How can I prevent tabbed docking (Just top bottom left right) ?
|
|
Eric guez
|
Apr 22, 2010 - 4:10 AM
|
A small reminder for this question.
|
|
Eric guez
|
Apr 18, 2010 - 4:13 AM
|
Hi
How can I insert controls (like sliders etc.) in a popup menu.
for example :
Thanks !
|
|
Technical Support
|
Apr 20, 2010 - 12:26 PM
|
The customizable popup menus support built text/combo fields. You can see an example in the StyleEditor and ActiveScripts sample applications. The FilteredGrids sample application uses popup menus with text controls for editing the column filtering rules. It’s also possible to code a popup menu containing one control instead of menu items. Prof-UIS provides several such popup menus: list box, undo-redo, calendar, ribbon galleries. But we don’t support any abstract controls embedding into menu items because the popup menu window is very specific control which never sets focus onto itself. Most controls do not work until they become focused.
|
|
Eric guez
|
Apr 19, 2010 - 11:03 AM
|
|
|
Offer Har
|
Apr 16, 2010 - 6:54 AM
|
Any estimation when they are going to be fixed? we have a delivery this needs to be fixed for very soon...
|
|
Technical Support
|
Apr 16, 2010 - 8:30 AM
|
We need to clarify some details. Let us assume the initial active field is a day. You activated the in-place date time editor and edited several fields. The last edited field was seconds. Then you pressed Enter and closed the in-place date time editor window. Now you can press the cell’s built-in up-down buttons and they should change the seconds field because the seconds is the last edited field. Is this correct?
|
|
Offer Har
|
Apr 16, 2010 - 11:26 PM
|
|
|
Bertil Morefält
|
Apr 16, 2010 - 2:41 AM
|
Hi! When I compile ProfUIS_Controls_900, I get a link error LNK1104: cannot open file ProfUIS288nd.lib Why? Best regards, Bertil Morefält
|
|
Technical Support
|
Apr 16, 2010 - 4:51 AM
|
|
|
Offer Har
|
Apr 14, 2010 - 7:51 AM
|
Dear Support, If you add to a CExtGridCellDateTime cell the up-down buttons:
pCellTime->ModifyStyle(__EGCS_BUTTON_UPDOWN); you expect that the focused field in the control (hour, month, minutes etc.) will go up & down when clicking on the arrows, however, regardless of the focused field, it’s always the day that keeps on going up and down... Note that using the up-down arrows in the keyboard works properly, only the up-down arrow behaves this way. Please fix, Ron.
|
|
Technical Support
|
Apr 15, 2010 - 7:07 AM
|
We are not sure whether it is a bug. We would rather call it a feature conflict. The in-place activated date time control allows you to traverse date and/or time fields and use the up-down for editing the selected field. But the grid cell also has its own built-in up-down control which is designed for changing the single and solid cell value rather for changing different parts of the cell value. That’s why the __EGCS_BUTTON_UPDOWN style makes the date/time value iterating through days only.
|
|
Offer Har
|
Apr 15, 2010 - 8:14 AM
|
Please take a look at the implementation of your own CExtDateTimeWnd - in this class the spin buttons do work as I described- so why not in the cells?
|
|
Technical Support
|
Apr 16, 2010 - 4:53 AM
|
Yes the date-time dialog control uses the VK_LEFT and VK_RIGHT arrow keys for navigating through the date time fields. It also uses the VK_UP and VK_DOWN arrow keys for changing the selected date-time field. The dialog controls can be focused using the VK_TAB key pressing with/without the VK_SHIFT keys. This date-time editing dialog control works exactly the same when its created as in-pace cell editor. The date-time grid cell looks similar to the dialog control. But all the arrow keys are used by the grid control for navigating the focused/selected grid cells. We cannot use the arrow keys in the date-time grid cell without activating its in-place control.
|
|
Offer Har
|
Apr 16, 2010 - 6:51 AM
|
Dear Support, I’m sorry, but what you wrote is completely not true... If the date-time cell has focus, the arrows move between cells and move the values up and down exactly as you described and said that does not work for cells.... so you can use the arrows with cells... then the only thing left is to attach the spin control actions to the active field and not only the day - this does not look impossible to me - looks trivial. Please check you cell controls sample and you’ll see the use of the arrow keys. Ron.
|
|
Offer Har
|
Apr 15, 2010 - 7:17 AM
|
Dear Support. 1. If you will look at the default MS time controls this is exactly how they work - the spin buttons change the value of the focused field - we just want the same functionality... 2. If it is not meant to be - then why does it change the day...? We think that this is a very basic behavior of a date-time control. Ron.
|
|
Claudiu Tanasescu
|
Apr 14, 2010 - 2:37 AM
|
I created a grid and I have filled with CExtGridCellNumber type cells.
I have some questions about...
1) How to change the type of numerical data of this type of cell (ex. int, double) before placing a value in the cell?
2) How to obtain data directly to the type, for example if we have a CExtGridCellNumber with integer data, is possible obtain directly the integer value of the cell? Or you can only get as text and then convert it?
3) If the cell is of type CExtGridCellNumber, for example with double data, when someone type characters, how alert the user that only actual data type are accepted, is there a function that checks for incoming data type?
4) Is there a function that checks if a numerical value is within certain limits?
5) The grid have iterators of cells? To use it to extract data from the grid to another container ...
|
|
Technical Support
|
Apr 16, 2010 - 4:54 AM
|
The CExtGridCellNumber grid cell is based on the CExtGridCellVariant grid cell. The CExtGridCellNumber grid cell is derived from the CExtGridCellEx basic grid cell class and from the VARIANT data structure containing data of any type the OLE variant can support. The CExtGridCellNumber grid cell expects the VARIANT::vt property has some numeric data type (VT_I4 , VT_UI4 , VT_R4 , VT_I8 ). The CExtGridCellVariant::_VariantAssign() methods allow you to initialize the variant grid cell with any type of data.
You can verify input in the in-place active editor control of any grid cell both in the grid cell class and in the grid control class. The CExtGridCell::OnInplaceControlTextInputVerify() and CExtGridWnd::OnGridCellInplaceControlTextInputVerify() virtual methods are invoked both during text typing and before the in-pace editor window closing. You can completely control the text input and implement the numeric value limits.
If you need to extract data of particular cell type, then you should downcast the CExtGridCell * pointer returned by the CExtGridWnd::GridCellGet() method to particular cell type and invoke its methods. But the CExtGridCell::GetVariant() and CExtGridCell::TextGet() methods work with all the grid cells and you can get cell data as text string or as VARIANT data structure. The CExtGridWnd::GridCellGet() allows you to get any grid cell’s pointer. The CExtGridBaseWnd::SelectionGetFirst() , CExtGridBaseWnd::SelectionGetLast() , CExtGridBaseWnd::SelectionGetNext() and CExtGridBaseWnd::SelectionGetForCellNextPrev() methods allow you to search the selected grid cells. The CExtGridBaseWnd::SelectionRangeGet() method returns the CExtGR2D object describing the selected region in the grid control. The CExtGR2D class supports various iterations, region combining operations and region hit testing.
|
|
Eric guez
|
Apr 13, 2010 - 3:09 AM
|
Hi !
How Can I add padding to between menubar and buttons ?
thanks !
|
|
Eric guez
|
Apr 13, 2010 - 10:28 AM
|
buttons are CExtMenuControlBar entries (CExtBarButton?)
|
|
Technical Support
|
Apr 15, 2010 - 2:15 PM
|
You should override the CExtToolControlBar::OnCreateBarCommandBtn() virtual method in your CExtMenuControlBar -derived class. Your method should be similar to original, but it should instantiate and return your own CExtBarButton -derived object. This will make the menu bar using your button objects. Your CExtBarButton -derived class should implement the CExtBarButton::CalculateLayout() virtual method which computes and returns the size of the button. Your method can invoke the parent class method and return the increased button size.
|
|
Technical Support
|
Apr 13, 2010 - 10:01 AM
|
Please explain us what are buttons in your question?
|
|
Robert Webb
|
Apr 13, 2010 - 2:34 AM
|
Hi, I emailed you recently with some sample code demonstrating that clicking on an MDI tab forces a repaint of all views, even if only one needs redrawing, or even if you click on the tab that’s already current, or even if you click on the X to close a tab (it first redraws everything). I have now noticed a similar problem. When the document title has changed, which in turn changes the MDI tab label, again ALL the views are redrawn although none need it. The code I’m using to update the MDI tabs when the doc title changes is as follows:
void CMyDocument::SetTitle(LPCTSTR lpszTitle)
{
if (CDocument::GetTitle() != lpszTitle)
{
CDocument::SetTitle(lpszTitle);
CMDITabs &mdiTabs = ptheWinApp->GetMainFrame()->m_MDITabs;
if (mdiTabs.ItemGetVisibleCount() > 0)
mdiTabs.UpdateTabWnd();
}
} Without the three lines starting at "CMDITabs &mdiTabs..." the redraw does not occur, but the MDI tab label also doesn’t update. CMDITabs is derived from CExtTabMdiWnd. We need to avoid these unnecessary redraws. Maybe it’s the same problem as the one I emailed you? Thanks, Rob.
|
|
Technical Support
|
Apr 13, 2010 - 10:30 AM
|
We replied to your e-mail. The problem is that the tab window performs main frame’s layout recalculation. We need to analyze when it’s possible to avoid this.
|
|
Robert Webb
|
Apr 13, 2010 - 7:17 PM
|
Thanks, I’ve replied by email too. My main thought is that I can’t think when there would EVER be a need to recalc the layout when doing one of the following things: - Clicking on the current MDI tab - Clicking on a different MDI tab - Clicking on a tab’s X to close it - Programmatically changing the document title and calling UpdateTabWnd() to reflect the changes in the MDI tab None of these things, as far as I can tell, will ever affect the layout outside the MDI tabs window itself. Thanks, Rob.
|
|
Offer Har
|
Apr 12, 2010 - 3:20 AM
|
Dear Support, Following the problem I reported yesterday, I found other problem: I have two floating bars - I resize one of them, cause the title-bar problem I reported yesterday, and then I click on the second bar - this normaly causes the second bar title to get the focus, and the first one to lose it. But, if the bug reported yesterday happens, the first bar does not lose focus, and I get to have two bars with the focus color: As you see above, I first dragged the left bar, and then click on the right bar, and I got two title-bar in focus. Please fix, Ron.
|
|
Carsten Pedersen
|
Apr 12, 2010 - 12:23 AM
|
Hi, We’ve created an application in VS 2003 (MS7.1) using ProfUIS 2.88. We have just tried to run the application on windows 7, and it starts up as it should, but there are differences to the normal WindowsXP system that we currently use. Our application is built as a dialog, with child dialogs inside multiple tab containers. With Windows 7 we have GUI updating issues, as some of the child dialogs dont redraw as they do on Windows XP. The program is very large, so for now it’s not possible to send a stripped down version of the project. Could you clarify if certain redraw techniques are needed in Windows 7 that weren’t needed in Windows XP? Thanks in advance Carsten Panch Pedersen
|
|
Technical Support
|
Apr 13, 2010 - 10:09 AM
|
The DWM subsystem (Desktop Window Manager), which is present both on Windows 7 and Windows Vista does not bring any repainting issue and even removed flickering you could see on Windows XP. The DWM/window glass based desktop is based on the background desktop surface which is processed by the running DWM.EXE process for adding effects like glass and shadows. The repainting issues of your dialogs can depend on one of the following:
1) Your dialogs do not have the WS_CLIPSIBLINGS|WS_CLIPCHILDREN styles. Please check these styles are present in all of your dialogs, including the main dialog. These styles should also be present in tab container windows.
2) You are using some hardware accelerated painting in some controls created inside some of your dialogs. If you need the hardware accelerated painting (3D or Video output), then please implement it in the standalone window which does only the hardware accelerated output, does not perform anything else and does not contain any child windows. For example, the AviFrames sample application plays video inside the scrollable container window. You can scale the video frame and the scroll bars will appear. The scrollable container window contains scroll bars and child window which is responsible for the video output. If you scroll the video frame, then the child video window is moved. That’s how the video scrolling is implemented in this sample application. The video player window does not perform anything but video frames painting. We tried to implement similar sample application and perform the video frame painting directly into the scrollable container window and we saw very funny trash and flicker effects on the screen.
|
|
Offer Har
|
Apr 11, 2010 - 10:22 AM
|
Dear Support, When we resize the width of a floating control-bar, the right-side of it, where the ’X’ is located acts weird, as you can see in the images below. Please note that the faster (wilder...) you resize the window, the more you see this problem. It seems that the library is missing some last update to the window’s caption bar: The title is over the frame. The title does not cover the whole window The ’X’ is gone! You see only two pixels of the ’X’... Please fix. Thanks, Ron.
|
|
Robert Webb
|
Apr 7, 2010 - 8:51 PM
|
Hi, I like the new 2010 themes. I notice something though. In the earlier themes, the ribbon bar had the application button, which fitted a 32x32 icon. In the 2010 themes, this larger 32x32 icon is still used although now the application button is only half the height, so the larger icon extends over the top and is truncated at the bottom. Shouldn’t it use the 16x16 icon (our icon has both sizes)? Thanks, Rob.
|
|
Technical Support
|
Apr 8, 2010 - 12:17 PM
|
This issue is fixed in the latest Prof-UIS 2.89 source code. You can re-download it. Thank you.
|
|
Technical Support
|
Apr 8, 2010 - 12:17 PM
|
You can see the code lines like these in the CMainFrame::_InitRibbonBar() and CMainFrame::NcFrameImpl_SyncThemeSettings() methods in the RibbonBar sample application: bool bSmallFileButtonIcon = g_PaintManager->Ribbon_IsSystemMenuIconPresent() ? true : false;
LPCTSTR strFileButtonIconResID = bSmallFileButtonIcon ? (MAKEINTRESOURCE(IDB_BITMAP_UI_LOGO_ICON)) : (MAKEINTRESOURCE(IDB_BITMAP_SMALL_ICON));
VERIFY( m_wndRibbonBar.Ribbon_FileButtonGet() -> m_iconForLargeMode.m_bmpNormal.LoadBMP_Resource( strFileButtonIconResID ) );
The CMainFrame::_InitRibbonBar() method initializes the ribbon bar. The CMainFrame::NcFrameImpl_SyncThemeSettings() method is invoked when the paint manager changes. I.e. the ribbon bar does not re-initialize its file button icon and even doesn’t know whether the small or large icon should be used. You can see how the big/small icon changes in the RibbonBar sample application. So it is done in the application rather than in the ribbon itself.
|
|
Robert Webb
|
Apr 8, 2010 - 9:42 PM
|
Thanks, all fixed :-) Rob.
|
|
Robert Webb
|
Apr 8, 2010 - 12:19 AM
|
Also, with the new 2010 black theme, an old problem is back. I reported once before that when using the old black theme, text labels used in the ribbon’s right-button area (top right) are drawn in black, which don’t show up well. Same problem now appears for the new black theme. The right-button labels should be drawn using the same colour as the text on a non-current ribbon tab. Rob.
|
|
Robert Webb
|
Apr 8, 2010 - 12:10 AM
|
By the way, I’m not talking about the far top-left corner, where the small version of the icon is indeed used. This gives a Windows menu. I mean the wider button below it, in line with the ribbon tabs, which opens the same menu as the larger top-left button in earlier themes. The wider button seems to reuse the icon used for the far top left button, but at 32x32 rather than 16x16. Thanks, Rob.
|
|
Eric guez
|
Apr 7, 2010 - 12:20 PM
|
Hi !
I want to make a custom menubar with these components :
_____________________________________________________________________ |MENU|___________ WINDOW DRAG HANDLE _________ |TOOLBAR | SYSTEM MENU|
As you can see, there are 4 parts - App menu (left aligned) - Resizable Drag Handle to move the window - app toolbar (right aligned) - system buttons ( minimize, maximize, close) (top, right aligned as usual)
(in my app I removed the titlebar)
What is the best way to achieve this with profuis ? I know thats a very open question, but any help should be good :)
Thanks
|
|
Eric guez
|
Apr 14, 2010 - 10:40 AM
|
Thanks,
The layout looks ok now !
I still have a problem with my buttons. I insered buttons in the menubar (the system buttons maximize, close ..). But I dont know how to catch click events on them.
Seriously I spend my day on it. Please Help !
|
|
Technical Support
|
Apr 8, 2010 - 10:00 AM
|
This layout can be implemented by overriding the CExtToolControlBar::_RecalcPositionsImpl() virtual method in your CExtMenuControlBar -derived class. The CExtMenuControlBar class implements the menu bar and it’s the extended version of the CExtToolControlBar class that implements toolbar. Your overridden version of the CExtToolControlBar::_RecalcPositionsImpl() virtual method should invoke the parent class method to let it to reposition its CExtBarButton toolbar buttons by default. The default layout will place the TOOLBAR part near the MENU part. Then your method should offset the buttons of the TOOLBAR part closer to the SYSTEM MENU part. To enable the window dragging via clicking on the WINDOW DRAG HANDLE part you should handle the WM_NCHITTEST message in your menu bar class and return the HTCAPTION code.
|
|
Eric guez
|
Apr 14, 2010 - 10:40 AM
|
Thanks,
The layout looks ok now !
I still have a problem with my buttons. I insered buttons in the menubar (the system buttons maximize, close ..). But I dont know how to catch click events on them.
Seriously I spend my day on it. Please Help !
|
|
Technical Support
|
Apr 15, 2010 - 5:33 AM
|
The [_][o][x] buttons are actually represented by one CExtBarMdiRightButton toolbar button, which sends WM_SYSCOMMAND to the MDI client area window with the SC_MINIMIZE , SC_RESTORE or SC_MAXIMIZE values in the WPARAM parameter. The [?] button and the SC_CONTEXTHELP command are also supported. You can intercept these messages in the MDI client area window. You can also handle the WM_WINDOWPOSCHANGED message in your MDI child frame windows and detect the current active/inactive/minimized/maximized/restored state of each MDI child frame window. Of course, you can also implement the CExtBarMdiRightButton -derived class and override the CExtBarMdiRightButton::OnClick() virtual method to intercept the button click event before the state of the active MDI child frame window is changed. To make the menu bar using your button object you should override the CExtMenuControlBar::_InstallMdiDocButtons() internal virtual method, copy source code from the original method and make it instantiating your button type.
|
|
Eric guez
|
Apr 7, 2010 - 8:51 AM
|
Hi,
I’m trying to mimic Excel’s tab behavior and haven’t found how to rename tabs in the same fashion (double click on tab).
Is there an easy way to achieve this ?
|
|
Eric guez
|
Apr 15, 2010 - 5:41 AM
|
|
|
Technical Support
|
Apr 8, 2010 - 9:59 AM
|
The CExtTabPageContainerWnd control uses the CExtTabWnd tab control for switching the active page window. Unfortunately the CExtTabWnd control does not support item renaming. You should create your own CExtTWPC < CExtTabWnd > derived class which handles the WM_LBUTTONDBLCLK message, hit tests the tab item using the CExtTabWnd::ItemHitTest() method and performs the item renaming. To make the CExtTabPageContainerWnd control using your tab control with rename-able tab items you should override the CExtTabPageContainerWnd::OnTabWndGetTabImpl() virtual method and instantiate your tab window in it.
|
|
Krister Goodh
|
Apr 6, 2010 - 7:43 AM
|
I have a dialog of type CExtNCW<CExtResizableDialog> containing some controlls and two buttons (one default button with IDOK ). The default button is not working (enter press have no effect) when the cursor is on a radio button (radio button selection can be modified with arrow keys). If any other controll is active, the default button is working. This behaviour is the same in all dialogs in the program. Is there a way around this?
|
|
Krister Goodh
|
Apr 12, 2010 - 12:12 AM
|
Hello! That solved this bug. Thanks. I’m still waiting for input regarding the bug described in: "Forums » Prof-UIS Tech Support » CExtPropertyGridCtrl assert when removing item that is edited " The bugfix provided by you did not solve the problem entierly. Please note the line added by me containing pDP->m_pOuterDataProvider and where the result of that goes.. /J
|
|
Technical Support
|
Apr 10, 2010 - 10:26 AM
|
We are sorry for the delay with this reply. Thank you for reporting this issue. To fix it, please update the source code for the following method: BOOL CExtButton::PreTranslateMessage(MSG* pMsg)
{
if( (! CExtPopupMenuWnd::IsMenuTracking() )
&& OnAdvancedPopupMenuTipWndGet() == NULL
)
{
InitToolTip();
m_wndToolTip.RelayEvent( pMsg );
}
if( ( pMsg->message == WM_KEYDOWN || pMsg->message == WM_KEYUP )
&& ( pMsg->wParam == VK_RETURN || pMsg->wParam == VK_SPACE )
)
{
bool bEnabled = OnQueryWindowEnabledState();
if( bEnabled
&& IsWindowVisible()
)
{
if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN )
{
HWND hWndFocus = ::GetFocus();
if( hWndFocus != NULL && hWndFocus == m_hWnd )
{
if( /*m_nButtonType == BS_RADIOBUTTON ||*/ m_nButtonType == BS_AUTORADIOBUTTON )
return FALSE;
_OnClick( true, false );
return TRUE;
}
__EXT_MFC_LONG_PTR dwWndStyle = ::__EXT_MFC_GetWindowLong( m_hWnd, GWL_STYLE );
#ifdef BS_TYPEMASK
ASSERT( BS_TYPEMASK == 0x0000000FL );
#endif
__EXT_MFC_LONG_PTR dwWndType = ( dwWndStyle & 0x0000000FL );
if( GetFocus() == this
&& dwWndType != BS_DEFPUSHBUTTON
)
{
HWND hWndParent = ::GetParent( m_hWnd );
HWND hWnd = ::GetWindow( hWndParent, GW_CHILD );
while( hWnd != NULL )
{
TCHAR szCompare[512] = _T("");
::GetClassName(
hWnd,
szCompare,
sizeof( szCompare )/sizeof( szCompare[0] )
);
if( _tcsicmp( szCompare, _T("BUTTON") ) == 0 )
{
bool bDefault = false;
CWnd * pWnd = CWnd::FromHandlePermanent( hWnd );
if( pWnd->GetSafeHwnd() != NULL
&& pWnd->IsKindOf( RUNTIME_CLASS( CExtButton ) )
)
{
CExtButton * pBtn = STATIC_DOWNCAST( CExtButton, pWnd );
ASSERT_VALID( pBtn );
bDefault = pBtn->GetDefault( false ) ? true : false;
}
else
{
bDefault = ( ( ::__EXT_MFC_GetWindowLong( hWnd, GWL_STYLE ) & 0x0000000FL ) == BS_DEFPUSHBUTTON ) ? true : false;
}
if( bDefault )
{
int nDlgCtrlID = ::GetDlgCtrlID( hWnd );
::SendMessage(
hWndParent,
WM_COMMAND,
MAKEWPARAM( nDlgCtrlID, BN_CLICKED ),
(LPARAM)hWnd
);
return TRUE;
}
}
hWnd = ::GetWindow( hWnd, GW_HWNDNEXT );
}
}
_OnClick( true, false );
return TRUE;
}
if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_SPACE
&& (!m_bPushTracking)
)
{
bool bAnimationLocked = AnimationClient_CacheGeneratorIsLocked();
if( ! bAnimationLocked )
{
AnimationClient_CacheGeneratorLock();
// if( AnimationClient_StateGet(true).IsEmpty() )
AnimationClient_CacheNextStateMinInfo(
false,
__EAPT_BY_PRESSED_STATE_TURNED_ON
);
}
m_bPushed = m_bPushTracking = m_bKeyTracking = true;
if( ! bAnimationLocked )
{
AnimationClient_CacheNextStateMinInfo(
true,
__EAPT_BY_PRESSED_STATE_TURNED_ON
);
AnimationClient_CacheGeneratorUnlock();
}
Invalidate();
return TRUE;
}
if( pMsg->message == WM_KEYUP && pMsg->wParam == VK_SPACE )
{
bool bAnimationLocked = AnimationClient_CacheGeneratorIsLocked();
if( ! bAnimationLocked )
{
AnimationClient_CacheGeneratorLock();
// if( AnimationClient_StateGet(true).IsEmpty() )
AnimationClient_CacheNextStateMinInfo(
false,
__EAPT_BY_PRESSED_STATE_TURNED_OFF
);
}
m_bPushed = m_bPushTracking = m_bKeyTracking = m_bMouseOver = false;
if( ! bAnimationLocked )
{
AnimationClient_CacheNextStateMinInfo(
true,
__EAPT_BY_PRESSED_STATE_TURNED_OFF
);
AnimationClient_CacheGeneratorUnlock();
}
_OnClick( true, false );
return TRUE;
}
}
return TRUE;
}
if( m_bQuickActivationEnabled
&& ( pMsg->message == WM_KEYUP
|| pMsg->message == WM_SYSKEYUP
)
)
{
if( _QuickActivationCheck( DWORD(pMsg->wParam) ) )
{
if( _QuickActivationHandle() )
return TRUE;
}
}
return CButton::PreTranslateMessage(pMsg);
}
|
|
Eric guez
|
Apr 6, 2010 - 6:48 AM
|
Hi !
Im using xml skins, and I want to add skinned scrollbars to my app.
I tryed this :
- added "public CExtPmBridge" to class declaration - added "DECLARE_CExtPmBridge_MEMBERS( CMyClass );" - added "IMPLEMENT_CExtPmBridge_MEMBERS( CMyClass );" - added PmBridge_Install(); and PmBridge_Uninstall();
But it didnt worked.
|
|
Technical Support
|
Apr 7, 2010 - 2:19 PM
|
The CExtPmBridge class is a notification interface which is implemented by most of Prof-UIS controls. That’s why the UI theme switching makes all the controls repaint themselves.
|
|
Eric guez
|
Apr 7, 2010 - 8:16 AM
|
Ok thanks, very easy to use !
about CExtPmBridge, what it is supposed to do ?
|
|
Technical Support
|
Apr 6, 2010 - 11:46 AM
|
If you have some CExtTreeCtrl window and you want to make its scroll bar themed, you should use a CExtNCSB < CExtTreeCtrl > window. The CExtNCSB template class skins scrollbars of other windows.
|
|
Claudiu Tanasescu
|
Apr 5, 2010 - 4:51 AM
|
Hi Support,
How to use with your prof-uis library, a modeless dialog, to make this dockable, resizable and tabbed , like resizable control bars, on a mdi project .
I want to create a mdi project and i need to use a modeless dialog that contain a data grid. This modeless dialog need to be resizeble and dockable.
I understand there is a way to do it with dynamic resizable control bar, but i do not know how. You can send me a simple example of how to make a modeless dialog dockable with this method?
I appreciate a quick response, please ....
Thks, Claudiu Tanasescu
|
|
Technical Support
|
Apr 5, 2010 - 11:23 AM
|
Please create a new dialog template resource. This dialog should be marked as the child dialog type and visible. Then create a C++ class for this dialog, declare an appropriate dialog class property in your main frame and create this dialog as a child of a resizable control bar. That’s all.
|
|
Jeff Mayo
|
Apr 2, 2010 - 1:08 PM
|
When I call CExtGridWnd::BseModifyStyleEx with the __EGBS_BSE_EX_PROPORTIONAL_COLUMN_WIDTHS the column don’t resize until the control is resized. Is there a way to force the grid to resize the column using the new settings?
|
|
Jeff Mayo
|
Apr 5, 2010 - 1:00 PM
|
The first suggestion fixed my problem.
|
|
Technical Support
|
Apr 5, 2010 - 11:53 AM
|
The proportional column resizing works correctly only if the horizontal scrolling is completely disabled. This means you should specify the __ESIS_STH_NONE style (not the __ESIS_STH_ITEM or __ESIS_STH_PIXEL styles) using the SiwModifyStyle() API. Please also check you applied the __EGBS_BSE_EX_PROPORTIONAL_COLUMN_WIDTHS style using the BseModifyStyleEx() API and not any other API.
|
|
Technical Support
|
Apr 5, 2010 - 5:15 AM
|
We suspect you may have forgotten to invoke the grid’s OnSwUpdateScrollBars() method at the end of the grid initialization code.
|
|
Jeff Mayo
|
Apr 5, 2010 - 6:43 AM
|
Yes, I needed to add the call to OnSwUpdateScrollBars() to make the change take effect.
|
|
Eric guez
|
Apr 2, 2010 - 6:43 AM
|
Hi again!
I want to add bitmaps to my main menu (eg: MenuControlBar background, and BarButton background). Is there a sample for that ?
If not, wat is the best way ? (custom CExtBarButton&CExtMenuControlBar, or custom paintmanager ?)
Thanks
|
|
Technical Support
|
Apr 5, 2010 - 5:16 AM
|
The menu bar background is based on the parent dock bar window background and there is no skin item for re-defining the menu bar’s background. Please override the CExtControlBar::DoEraseBk() virtual method in your CExtMenuControlBar -derived class and paint a custom background there.
|
|
Eric guez
|
Apr 2, 2010 - 9:17 AM
|
Ok, I tried the xml skin system, and it sounds promising.
How can I set my menubar background ? Its seems to paint the general BG; can I set another bitmap ?
I have another problem with the 9 parts cutting: http://yfrog.com/2gmenubarj
the 1st image is the backgroud bitmap.
In the skin file I have : <Glyph Name="Background" Image="BlackDiamond\Background\menuBarBg_test.png" Ctp="10" Clp="10" Cbp="10" Crp="10" Tp="10" Lp="10" Rp="10" Bp="10" />
the 2nd image is my floating menu : it looks ok the 3rd image is the docked menu : the borders are cropped
Help :)
|