|
Subject |
Author |
Date |
|
|
Barbara Roth
|
Nov 4, 2009 - 8:09 AM
|
Our application needs to be Section 508 compliant (otherwise we cannot sell it to government agencies) - Doesn’t appear that Prof-UIS plays well with Accessibility Applications like JAWS or WindowEyes. Is this being addressed, or has anyone had to deal with being 508 compliant and using Prof-UIS?
|
|
|
Technical Support
|
Nov 5, 2009 - 2:54 AM
|
Prof-UIS currently does not support active accessibility but supports high contrast screen modes. The active accessibility is in our to-do list for nearest releases.
|
|
|
Bill Olson
|
Nov 3, 2009 - 6:19 PM
|
I was running a complete virus scan on my system with Dr. Web’s Cureit and it flagged a Prof UIS library as a virus. I’m 99% sure it’s a false positive, but it’s probably something you need to work out with the AV maker. I know the AV makers have a process for dealing with false positives, but the publisher of the software needs to contact them. At least that was the case with a product I was working on that was generating false positives with one of the scanners out there. Here are the files flagged: OCDkPSh.obj UTLibStaticD.lib The virus it claims is there is a Modification of Neurobasher.Alpha.2000 There was another line saying that the line in the lib was 5203 RemovePage@COXDockedPropertySheet Bill
|
|
|
Bill Olson
|
Nov 5, 2009 - 1:44 AM
|
I’m sorry, I got Prof UIS confused with another similar package I experimented with and we decided not to use. The false positives were with that package. Mea culpa, Bill
|
|
|
Technical Support
|
Nov 4, 2009 - 2:59 AM
|
There are no files with names like OCDkPSh.obj (and OCDkPSh.h, and OCDkPSh.cpp) distributed with Prof-UIS. There are no files with names like UTLibStaticD.obj (and UTLibStaticD.h, and UTLibStaticD.cpp) distributed with Prof-UIS. There are *.obj at all distributed with Prof-UIS. Prof-UIS is distributed with complete source code. Any viruses appeared in any compiled modules on your computer(s) are not brought by Prof-UIS source code. Besides, the Neurobasher virus is e-mail based. Prof-UIS and its installation does not try to perform any e-mail related algorithms and actions. Additionally, we extremely rarely run any binary modules received from our customers on our computers. But if we need to do this, then, of course, such module sand apps are checked by antivirus apps and run on virtual or stand-alone machines. This, of course, does not bring 100% guarantees because we always must suspect existence of nobody known and nobody detected malware which can appear on any computers, including ours, from nobody known source. But, at least, we do not try to do anything to increase probability of such surprises.
|
|
|
chen xinyu
|
Oct 30, 2009 - 8:17 PM
|
Hello: I have create a color button in RibbonBar. I want that the color can change automatically when the cursor move above the color, but if I do not
|
|
|
Technical Support
|
Nov 2, 2009 - 7:17 AM
|
Please run the FormulaGrid sample application and select some range of grid cells in it. Now you can move the mouse pointer over the ribbon gallery items or over the color palette menus. As a result, the style of the selected grid cells will be changed. But style is restored if you didn’t pick any color or any style preset. Is that what you need?
|
|
|
Technical Support
|
Oct 31, 2009 - 1:44 PM
|
You should override the CExtCustomizeSite::OnColorItemValueGet() virtual method in your CExtRibbonBar-derived class for providing any color buttons with any dynamically changed color values. The CExtCustomizeSite::RedrawCommandItems() method allows you to repaint the color buttons when you changed its color value. You can override the CExtCustomizeSite::OnColorItemValueSet() virtual method to catch the color value selection event.
|
|
|
chen xinyu
|
Oct 31, 2009 - 7:45 PM
|
But I want the color icon on the button can be changed automatically just when the cursor move above the according color beside I select the color. Moreover if I do not select the color finally, the color icon on the button will restore.
Thank you!
|
|
|
chen xinyu
|
Oct 30, 2009 - 8:21 PM
|
Hello: I have create a color button in RibbonBar. I want that the color can change automatically when the cursor move above the color, but if I do not select the color the color in the color button can change back to the color before. Is it clear? I create it as follows. CExtRibbonNode * pNodeBackgroundColor = new CExtRibbonNodeToolButton( ID_VIEW_BACKGROUND_COLOR ); pNodeBackgroundColor->SetLParam( ID_VIEW_BACKGROUND_COLOR ); pNodeBackgroundColor->CmdKeyTipSet( new CExtCustomizeCmdKeyTip( __EXT_MFC_SAFE_TCHAR( _T(’BC’) ) ), false );
pNodeBackgroundColor->ModifyFlags( __ECTN_TBB_COLOR|__ECTN_TBB_MCB_CUSTOM|__ECTN_TBB_MCB_DEFAULT );
|
|
|
Anil Siddhpura
|
Oct 30, 2009 - 6:39 AM
|
Hi, I am facing problem in dockable bar. I have post several request on this support post as well through mail(support@prof-uis.com). I explained you the whole problem, and sent report in word and pdf file regarding the bug in Dockable bar(CextControlBar). I have also sent you the sample application, but after that there is no reply from your side. I have sent severl mails to update me on that problem, but still i am waiting for your reply. If you require more input from my side, please let me know. I really appriaciate positive responce from your side. Please atleast update me on the issue.
|
|
|
Anil Siddhpura
|
Nov 3, 2009 - 5:52 AM
|
|
|
|
|
Anil Siddhpura
|
Nov 2, 2009 - 9:26 PM
|
|
|
|
|
Technical Support
|
Nov 3, 2009 - 1:01 PM
|
We received your e-mail. The attached .rar archive does not contain the source code of the test project. We cannot guess what you coded in the modified version of the sample application.
|
|
|
Anil Siddhpura
|
Nov 4, 2009 - 6:31 AM
|
Hi, I have again sent the mail with source code. Pl update me.
|
|
|
Technical Support
|
Nov 5, 2009 - 2:52 AM
|
We are sorry but the project you sent us is an original version of the SDIDOCVIEW sample application. It does not contain anything similar to demonstrated on any screen shots from your e-mails.
|
|
|
Technical Support
|
Oct 31, 2009 - 1:44 PM
|
We didn’t receive e-mails from the same e-mail domain name which is your e-mail has. Please let us know e-mail domain name and we will check our anti span system.
|
|
|
Anil Siddhpura
|
Nov 2, 2009 - 9:34 PM
|
Hi, Alos, you have replied my some of the mails. But since i sent you the sample application, there is no reply.
|
|
|
J Jahn
|
Oct 30, 2009 - 2:36 AM
|
Hi In my application are CextDynamicControlBars. If i minimize the whole application the Controlbars bekomes wrong sizes. What runs wrongly?
|
|
|
Technical Support
|
Nov 2, 2009 - 9:32 AM
|
Thank you for the pictures. But we would be happy to reproduce the issue using any of Prof-UIS sample applications. Could you modify any of the sample projects, make it reproducing this issue and send it to us?
|
|
|
J Jahn
|
Nov 2, 2009 - 2:14 PM
|
OK i will try ! But is there any link to the demo-projects?
|
|
|
J Jahn
|
Nov 3, 2009 - 1:47 AM
|
Dear Technical Support I’ve found the compiled projects. I run the MDI_DynamicBars Application and there is the same problem! Watch for this pictures. 
after docking 
second example gray-area is on the right 
after minimizing 
|
|
|
Technical Support
|
Nov 3, 2009 - 12:59 PM
|
Prof-UIS keeps desired bar sizes for horizontally docked, vertically docked and floating states. For instance, it’s possible to dock one or more bars vertically to the left or right sides of the main frame window and then make them occupying enough large space. Then you can restore the main frame window from the maximized state or resize the main frame to some smaller width. The bars can occupy more space than available inside the main frame window. This is not related to minimized state of the main frame window. You should simply resize bars to some smaller state. But, we can code a small algorithm inside Prof-UIS. It will watch for this situation and proportionally resize bars horizontally and vertically to make the main SDI view window or MDI client area inside the main frame visible. Even in this case it’s still possible to repeat the same situation if you resize the main frame window so some very small size.
|
|
|
J Jahn
|
Nov 3, 2009 - 1:28 PM
|
A algorithm would be great! Because of i try’d to manipulate the layout dynamically so I need correct bar-sizes in all situations ! I also think to build a "frame" with bars shouldn’t be the best solution because of user interactions. best regards J Jahn
|
|
|
J Jahn
|
Oct 31, 2009 - 1:30 PM
|
Dear Technical Support i hope this two pictures would help! the first one shows the application after starting an building the layout  The second one after minimizing 
|
|
|
J Jahn
|
Oct 31, 2009 - 1:30 PM
|
Dear Technical Support i hope this two pictures would help! the first one shows the application after starting an building the layout  The second one after minimizing 
|
|
|
Technical Support
|
Oct 30, 2009 - 2:29 PM
|
We run the SDI_DynamicBars sample application, minimized and restored it. All the bars are at the same places. Please provide us with more details about your application or send us a test project reproducing this issue.
|
|
|
J Jahn
|
Oct 30, 2009 - 5:17 AM
|
supplement: The ControlBars are dockt into the application.
|
|
|
Nicolas Pinaud
|
Oct 28, 2009 - 8:46 AM
|
Hi, First, sorry for my english but i’m french... I’m using Prof-UIS message boxes. For this, I put the IMPLEMENT_CWinAPP_DoMessageBox; line of code into declaration of the CWinApp-derived class. This will replace all the ::AfxMessageBox() message boxes with Prof-UIS message boxes. Everything it’s ok or almost... In a dialog box, i use the ActiveX Microsoft UpDown Control 6.0 (SP6). When i want to show an AfxMessageBox on the events DownClik and UpClick of the Updown Control, there is a problem. The message box is show correctly but all clicks on there are intercepted by the Updown Control. It’s like the focus is not lost by the UpDown Control when a message box is show. Do you this problem? Thanks for your answers.
|
|
|
Technical Support
|
Oct 30, 2009 - 2:29 PM
|
Yes, this small improvement is part of Prof-UIS 2.87.
|
|
|
Technical Support
|
Oct 28, 2009 - 9:45 AM
|
Could you provide us with a simple test project demonstrating this issue?
|
|
|
Nicolas Pinaud
|
Oct 29, 2009 - 10:23 AM
|
Have you received my mail with a simple test project?
|
|
|
Technical Support
|
Oct 29, 2009 - 2:15 PM
|
Thank you for the test project. We handled the OK and Cancel button clicks in your test project:
void CTestUpDownDlg::OnOK()
{
// CDialog::OnOK();
AfxMessageBox("OnOK");
}
void CTestUpDownDlg::OnCancel()
{
// CDialog::OnCancel();
AfxMessageBox("OnCancel");
}
And both buttons correctly stay focused after the message box is closed. The up-down ActiveX control cannot be tested for focus restoring. It has much more serious problem. It does not release mouse capture when it fires its events. We understand it requires mouse capture for mouse click tracking. But this causes multiple message box displaying. Probably message box should not be displayed while handling these events or, at least, you should release mouse capture manually: void CTestUpDownDlg::OnDownClickUpdownTest()
{
ReleaseCapture();
AfxMessageBox("OnDownClickUpdownTest");
}
void CTestUpDownDlg::OnUpClickUpdownTest()
{
ReleaseCapture();
AfxMessageBox("OnUpClickUpdownTest");
}
Even in this case the focused state of the up-down control is not restored correctly and you may need to focus it manually. So, we decided to make Prof-UIS message box force releasing the mouse capture in its code: int CExtMsgBox::DoMsgBox(
HWND hWndParent,
__EXT_MFC_SAFE_LPCTSTR strMessageText,
__EXT_MFC_SAFE_LPCTSTR strCaption, // = NULL
UINT nMsgBoxStyle, // = __EXT_MB_DEFAULT_STYLES
UINT nHelpID, // = 0
__EXT_MFC_SAFE_LPCTSTR strUniqueID, // = NULL // for __EXT_MB_DO_NOT_DISPLAY_AGAIN and __EXT_MB_DO_NOT_ASK_AGAIN
UINT nMsgBoxStyleEx, // = __EXT_MB_EX_DEFAULT_STYLES
UINT nTimeoutSeconds, // = 0
bool bIsDisabledTimeout, // = false
CExtBitmap * pBmpIcon // = NULL
)
{
__PROF_UIS_MANAGE_STATE;
if( ::GetCapture() != NULL )
::ReleaseCapture(); // force release mouse capture
CExtMsgBox dlg( hWndParent, strMessageText, strCaption, nMsgBoxStyle, nHelpID, strUniqueID, nMsgBoxStyleEx );
if( nTimeoutSeconds > 0 )
dlg.TimeoutSet( nTimeoutSeconds, bIsDisabledTimeout );
if( pBmpIcon != NULL && ( ! pBmpIcon->IsEmpty() ) )
dlg.m_bmpIcon = (*pBmpIcon);
return int( dlg.DoModal() );
}
This fixes behavior of the up-down control. Probably the AfxMessageBox() API force releases capture too. But both Prof-UIS and MFC message boxes does not set focus back to the up down control (we tried to comment the IMPLEMENT_CWinAPP_DoMessageBox line of code).
|
|
|
Nicolas Pinaud
|
Oct 30, 2009 - 3:01 AM
|
I have modified the source file, and now all works fine. Did you include this in the next release? Anyhow, Thank you for your reactivity and your help.
|
|
|
Dirk lindner
|
Oct 26, 2009 - 9:54 AM
|
Hello, is it possible to create a right click menu for styled scrollbars in prof-uis ?

Dirk Lindner
|
|
|
Dirk lindner
|
Nov 9, 2009 - 4:52 AM
|
thank you ! works fine ;)
Dirk Lindner
|
|
|
Technical Support
|
Oct 26, 2009 - 2:17 PM
|
The scroll bar’s context menu can be enabled by updating the source code for the following 3 methods:
void CExtScrollBar::OnContextMenu(CWnd* pWnd, CPoint point)
{
ASSERT_VALID( this );
CScrollBar::OnContextMenu( pWnd, point );
}
void CExtScrollBar::OnRButtonDown(UINT nFlags, CPoint point)
{
ASSERT_VALID( this );
if( ! m_bCompleteRepaint )
{
CScrollBar::OnRButtonDown( nFlags, point );
return;
}
MSG _msg;
::memset( &_msg, 0, sizeof(MSG) );
_msg.hwnd = m_hWnd;
_msg.message = WM_RBUTTONDOWN;
_msg.wParam = WPARAM(nFlags);
_msg.lParam = MAKELPARAM( point.x ,point.y );
if( ! ScrollBar_OnMouseClickMsg( &_msg ) )
CScrollBar::OnRButtonDown( nFlags, point );
}
bool CExtScrollBar::ScrollBar_OnMouseClickMsg(
MSG * pMSG
)
{
ASSERT_VALID( this );
ASSERT( pMSG != NULL );
bool bRetVal = true;
bool bRightClickMsg = false;
switch( pMSG->message )
{
case WM_LBUTTONDOWN:
ScrollBar_TrackMouseLButtonDown( pMSG );
break;
case WM_RBUTTONDOWN:
bRightClickMsg = true;
case WM_RBUTTONUP:
case WM_RBUTTONDBLCLK:
//bRetVal = false;
case WM_LBUTTONUP:
case WM_LBUTTONDBLCLK:
case WM_MBUTTONDOWN:
case WM_MBUTTONUP:
case WM_MBUTTONDBLCLK:
{
CExtPopupMenuTipWnd * pATTW =
OnAdvancedPopupMenuTipWndGet();
if( pATTW != NULL )
pATTW->Hide();
if( bRightClickMsg )
{
POINT pt;
::GetCursorPos( &pt );
SendMessage( WM_CONTEXTMENU, WPARAM(m_hWnd), MAKELPARAM(pt.x,pt.y) );
}
}
break;
default:
bRetVal = false;
break;
} // switch( pMSG->message )
return bRetVal;
}
And all the commands of this context menu work correctly because the CExtScrollBar class has the same part sizes as the scroll bar common control. But the Scroll Here menu command causes repainting of the scroll bar common control in the default windows style. The scroll bar common control is very specific. Like all the other old common controls introduced before Windows 95, this common control changes its state without any notification messages. It also repaints itself not via the standard WM_PAINT message. Prof-UIS completely handles all the mouse and keyboard messages of all the old common controls present in Windows 3x. We cannot enable the default scroll bar’s context menu. But we can assume your message as a feature request. We will need to code our own context menu and ask our translators to translate it.
|
|
|
Oliver Rau
|
Oct 26, 2009 - 9:31 AM
|
Dear ProfUIS-Team,
there seems to occur some strange behaviour with your Ribbon(MDI) demo. It could be reproduced without code modifications for versions 2.82 and 2.85.
Opening the about-dialog (which is obviously meant to be modal) and leaving the focus of this dialog, i.e. moving mouse pointer outside, you can wheel-scroll through the ribbon tabpages. Also, if being fast enough, you can catch some focus within the ribbonbar, i.e. some of the buttons appear to be active for a short time.
As I can’t imagine that this is an intended feature, I’d like to let you know.
Best regards,
Martin
|
|
|
Technical Support
|
Oct 26, 2009 - 2:17 PM
|
Thank you for reporting this issue. We fixed it in the following method:
bool CExtRibbonBar::OnRibbonProcessMouseWheel( UINT fFlags, short zDelta, CPoint point )
{
ASSERT_VALID( this );
fFlags;
point;
if( GetSafeHwnd() == NULL )
return false;
if( zDelta == 0 )
return false;
if( ! RibbonPage_ExpandedModeGet() )
return false;
if( m_bFlatTracking )
return false;
if( ( GetStyle() & WS_DISABLED ) != 0 )
return false;
CWnd * pWnd = GetParent();
if( pWnd != NULL
&& ( pWnd->GetStyle() & WS_DISABLED ) != 0
)
return false;
INT nIndex, nCount = RibbonTabPageButton_GetCount();
if( nCount <= 1 )
return false;
HWND hWndFocus = ::GetFocus();
if( hWndFocus != NULL
&& ( hWndFocus == m_hWnd
|| ::IsChild( m_hWnd, hWndFocus )
)
)
return false;
bool bNext = ( int(zDelta) < 0 ) ? true : false;
CExtRibbonButtonTabPage * pNewSelTBB = NULL;
bool bSelPassed = false;
for( nIndex = 0; nIndex < nCount; nIndex ++ )
{
CExtRibbonButtonTabPage * pTBB = RibbonTabPageButton_GetAt( nIndex );
ASSERT_VALID( pTBB );
if( pTBB->IsSelectedRibbonPage() )
{
bSelPassed = true;
continue;
}
if( ! pTBB->OnQueryFlatTrackingEnabled() )
continue;
if( bSelPassed )
{
if( bNext )
{
if( pNewSelTBB == NULL )
{
pNewSelTBB = pTBB;
break;
}
}
else
break;
} // if( bSelPassed )
else
{
if( bNext )
continue;
pNewSelTBB = pTBB;
} // else from if( bSelPassed )
} // for( nIndex = 0; nIndex < nCount; nIndex ++ )
if( pNewSelTBB == NULL )
return false;
Invalidate();
if( m_bFlatTracking )
{
m_bFlatTracking = false;
OnFlatTrackingStop();
} // if( m_bFlatTracking )
_UpdateFlatTracking( false );
INT nPageIndex, nPageCount = RibbonTabPageButton_GetCount();
for( nPageIndex = 0; nPageIndex < nPageCount; nPageIndex ++ )
{
CExtRibbonButtonTabPage * pTabPageTBB = RibbonTabPageButton_GetAt( nPageIndex );
ASSERT( pTabPageTBB );
pTabPageTBB->SetHover( false );
pTabPageTBB->ModifyStyle( 0, TBBS_PRESSED|TBBS_CHECKED );
} // for( . . .
_UpdateHoverButton( CPoint(-1,-1), false );
pNewSelTBB->OnDeliverCmd();
return true;
}
|
|
|
Anil Siddhpura
|
Oct 23, 2009 - 2:41 AM
|
Hi,
I have created a CextHeadeercell inside a gridcontrol. Now in this headercell can i set text in multiple line? I mean if my text size is larger than i want to set text in multiple lines automatically.
Is it possible with CextHeadercell or i have to use some other control inside grid?
|
|
|
Technical Support
|
Oct 27, 2009 - 2:31 PM
|
Grid cells currently support only word based text wrapping. The character based wrapping is unsupported. We can assume this is the feature request.
|
|
|
Technical Support
|
Oct 23, 2009 - 12:51 PM
|
There are two grid cell styles related to the multi line text:
1) The __EGCS_EX_WRAP_TEXT extended grid cell style makes single line text of a grid cell wrapped to several lines if there is no space to draw text in a single line.
2) The __EGCS_EX_MULTILINE_TEXT extended grid cell style makes the grid cell drawing its text as multi line. This style is new in Prof-UIS 2.87.
|
|
|
Anil Siddhpura
|
Oct 24, 2009 - 1:02 AM
|
Hi,
I have tried with __EGCS_EX_WRAP_TEXT with ModifyStyle and ModifyStyleEx functions, but still the text comes in single line only. I am using Prof-UIS 2.85.
My text is too long and the width of grid is limited. So i want to adjust the string in Multiline automatically when the text is too large. So the end user can see the whole text in the grid.
Is there anything remaining that i have to do?
|
|
|
Technical Support
|
Oct 24, 2009 - 9:45 AM
|
You can take a look at the grid cells with the __EGCS_EX_WRAP_TEXT style in the Grid page of the ProfUIS_Controls sample application. Please note, the grid row height does not become automatically changed when some grid cells wrap their texts into several lines. You should change row heights manually. The CExtGridWnd::BestFitRow() method can re-measure all the grid cells in a row and set correct row height to make content of all the grid cells visible.
|
|
|
Anil Siddhpura
|
Oct 25, 2009 - 7:24 AM
|
Hi,
Yes i have see that sample, but in that you have set text in grid using "\r\n". So i think because of that it is showing in multiple lines.
My string is inside "CString" object and i can not use "\r\n" in that string. Because the length of string changed everytime and i want to set the string in multiple line at runtime. Also i m using CExtGridCellheader.
|
|
|
Technical Support
|
Oct 25, 2009 - 12:44 PM
|
Please run the ProfUIS_Controls sample application, select the Grid page and scroll to the Text column. The grid cell in the second row from the top in this column uses the text wrapping feature. Initially it contains 3 text lines and you can make the Text column enough narrow to see how the text in each of 3 lines becomes wrapped. You may need to increase the height of the second grid row from the top to see the text wrapping completely. You can also edit the cell’s text. For example, you can enter the 1 2 3 4 5 6 7 8 9 0 single line text in it. You will see that the single line text is also wrapped by this grid cell.
|
|
|
Anil Siddhpura
|
Oct 26, 2009 - 11:21 PM
|
Hi,
Yes, i run that sample application and saw that it works for multiline. But it works only if there are space between words. My string does not contain any space. It’s the complete string and therefor it might not coming in multiline.
Is it possible to write in multiline even if there is no space in whole string?
|
|
|
Bill Olson
|
Oct 22, 2009 - 2:12 AM
|
I have a CExtPanelControlBar under the menu bar in my application. It has a dialog installed within it. At start, the CExtPanelControlBar is disabled and not visible. At the start the application looks like a dialog based one (though it is a Form View). It later resizes to full screen and the CExtPanelControlBar is turned on and is visible. If I make the template for the dialog installed in the CExtPanelControlBar very wide, it extends full screen, but I would prefer to change its size when I’m calculating the screen dimensions and resizing the other controls. I haven’t been too successful at that, though I have a bigger problem. If the dialog template is not as wide as the screen, there is a hole to the right of the dialog. Whatever was behind the application when the app was started (which is usually the Visual Studio IDE) shows through. I have tried to reproduce this in a test program, but I have not been able to. What is causing it? I can’t seem to figure out how to get it to go away. I would like the CExtPanelControlBar to extend horizontally across the entire top of the application’s window. I have another converted dialog bar that sometimes shows up below this bar and the same phenomenon exists behind it. I can see the application behind this one around the edges of the panel. Bill
|
|
|
Bill Olson
|
Oct 22, 2009 - 7:57 PM
|
Here is an example of what I’m talking about 
The dark gray is my application, The buttons and the "Toggle Breakpoints" text are in the Visual Studio IDE that is behind the application. It is like there is a hole in the application at the end of the bar. When I have created similar bars in a test application, they span the entire area by default. I will look into OnQueryFixedBarNewSize. Bill
|
|
|
Technical Support
|
Oct 23, 2009 - 1:19 PM
|
Here is some important information about MFC and Prof-UIS control bars:
1) Some types of MFC control bars are designed as non-redockable. The status bar (CExtStatusControlBar in Prof-UIS, CStatusBar in MFC) is such kind of control bar. Prof-UIS also contains C++ classes which are not really the control bars but implementing the same static/non-redockable control bar behavior (the CExtTabMdiWnd class implements the MDI tab control which is always docked near control bars or even between them).
2) Other control bars can be either redockable or static. The menu bar (CExtMenuControlBar) and toolbar CExtToolControlBar are such kind of control bars.
3) Finally, some control bars can be created as re-dockable control bars and cannot behave like statically docked status bar. The resizable control bars (CExtControlBar) similar to the Visual Studio .NET, Visual Studio 2005 and Visual Studio 2008 dockable panes and the panel control bars (CExtPanelControlBar) are such kind of control bars.
We suspect you tried to use the CExtPanelControlBar panel control bar as non-redockable. This is not supported.
If you need to place some child dialog near some border of its parent frame window, then you should create your dialog directly as child of the frame window and handle the WM_SIZEPARENT message in your dialog class. This message is sent by MFC frame windows (CFrameWnd) to their children windows for computing the mutable layout. Each children window request some space for it near some border of the frame window. The WM_SIZEPARENT message can be sent for querying the children window for information about how much space it needs and near which border. It can be sent to let the children window reposition itself near the frame border.
You don’t need any control bar classes. You should just handle the WM_SIZEPARENT message in your dialog class created as child of the main frame window. Please let us show you the real life example. We have the CExtScrollBar class and you can see two scroll bar windows are automatically docked to the sides of their parent CExtGridWnd grid control (or CExtTreeGridWnd, or CExtReportGridWnd). But the grid control does not have any code which detects and moves any scroll bar windows. The grid simply invokes the CWnd::ReposionBars() API when the WM_SIZE message is received. This is exactly the same what the MFC frame windows do: when the CFrameWnd class receives the WM_SIZE message, then it invokes the CFrameWnd::RecalcLayout() method that is the same as the CWnd::ReposionBars() method. The CWnd::ReposionBars() method sends the WM_SIZEPARENT messages to all the children windows: all the frame’s control bars, all the scroll bars inside Prof-UIS grid controls. Our CExtScrollBar control handles the WM_SIZEPARENT message which allows the scroll bar to position itself near the border of its parent window.
|
|
|
Technical Support
|
Oct 22, 2009 - 1:02 PM
|
The CExtPanelControlBar::OnQueryFixedBarNewSize() virtual method returns the size of the panel control bar. This method is invoked for computing the horizontally docked, vertically docked and floating bar sizes. You can override it, invoke the parent class method and return modified size. For example, if you need the horizontally docked panel bar to occupy entire width of the main frame window, then you should specify width of main frame’s client area.
Please also take a look at the resizable bars containing the Internet Explorer windows in the FixedSizePanels sample application. These bars are not the panel bars. But they are always occupying the entire available width/height when docked.
|
|
|
Anil Siddhpura
|
Oct 12, 2009 - 7:01 AM
|
Hi, I have created checkbox inside grid control. Can i disable individual checkbox inside that grid? instead of disabling the whole grid?
|
|
|
Technical Support
|
Oct 12, 2009 - 12:37 PM
|
You should make your individual check box grid cells read-only.
|
|
|
Anil Siddhpura
|
Oct 10, 2009 - 7:27 AM
|
Hi,
I have created combobox in grid control. Now, how can i get the selection change event of that combobox inside grid?
|
|
|
Technical Support
|
Oct 12, 2009 - 3:52 AM
|
The CExtGridCellComboBox::OnPopupListBoxSelEndOK() and CExtGridWnd::OnGridCellPopupListBoxSelEndOK() virtual methods are invoked when the list box item is picked in the combo box grid cell. The CExtGridWnd::OnGridCellInputComplete() virtual method is invoked on any grid cell modification.
|
|
|
chen xinyu
|
Oct 9, 2009 - 2:43 AM
|
Hi: I am using g_PaintManager.InstallPaintManager() to set the style of my applation,but why a class derived from CExtResizableDialog does not have the style, it is just like a normal dialog. How can I make it has the same style as the applation?
Thank you!
|
|
|
Technical Support
|
Oct 10, 2009 - 5:08 AM
|
The CExtResizableDialog windows automatically use the style provided by the paint manager. The dialog controls are themed only if they are subclassed with the Prof-UIS class instances. You can invoke the SetAutoSubclassChildControls() method in the constructor of your CExtResizableDialog-derived class and the dialog will automatically subclass all the unsubclassed dialog controls with the dynamic instances of Prof-UIS classes.
|
|
|
chen xinyu
|
Oct 10, 2009 - 7:56 AM
|
I did it as you said, but it did not work. My applation is not created by wizard, if this is the reason. What I did is as followed: IMPLEMENT_DYNCREATE(CProcessDlg, CExtResizableDialog) CProcessDlg::CProcessDlg(CWnd* pParent /*=NULL*/)
: CExtResizableDialog(CProcessDlg::IDD, pParent)
{
SetAutoSubclassChildControls(true);
m_clrClient = RGB(100,180,60);
m_Name = "Process Bar";
} But the border of the dialog is just as the normal VC style.
|
|
|
Technical Support
|
Oct 12, 2009 - 3:52 AM
|
The non-client area theming is not the business of the CExtResizableDialog class. The CExtNCW template decorator provides other windows with themed caption and borders. You should derived your dialog class from the CExtNCW < CExtResizableDialog > class.
|
|
|
chen xinyu
|
Oct 13, 2009 - 7:30 AM
|
Thank you, I have delt the problem as you said. Thank you very much.
|
|
|
Borremans Pierre
|
Oct 9, 2009 - 2:21 AM
|
I use a CExtPageNavigatorWnd in a CExtControlBar. All is correct but when I go over the button to change the pane, I lost the mouse cursor. What can I do to recover the mouse cursor ?
|
|
|
Technical Support
|
Oct 10, 2009 - 5:08 AM
|
First of all, please check all the invocations of the SetCursor() API in your project. Prof-UIS never sets empty cursors and nobody reported such problems yet. Second, please check all the invocations of the SetCursorPos() API in your project. Probably something moves cursor programmatically far outside the page navigator in your application. Only the splitter control in Prof-UIS changes the cursor position but we are sure it’s OK and splitters are not used by resizable control bar and page navigator control. Third, check this problem on several computers. It’s always possible you are using some system wide hook based software which affects to this problem.
|
|
|
Dirk lindner
|
Oct 8, 2009 - 8:55 AM
|
Is there any example for a custom context menu within a CExtComboBox ?
Greats Dirk Lindner
|
|
|
Technical Support
|
Oct 8, 2009 - 11:19 AM
|
We don’t have a ready to use example. But you should not have any problems with displaying context menus over a combo box window while handling its WM_CONTEXTMENU message.
|
|
|
Aleksey Rybakov
|
Oct 8, 2009 - 8:24 AM
|
Seems that CExtPaintManagerSkin::PaintPushButton() does not check background color set by SetBkColor() and draws background image from the skin, not simple colored rectangle. This is important when buttons have rounded borders, e.g. in Aqua skin.
|
|
|
Technical Support
|
Oct 8, 2009 - 11:18 AM
|
Yes, the background color is ignored by the Skin and Office 2007 paint managers because they paint buttons using bitmap-based skins.
|
|
|
Oliver Rau
|
Oct 7, 2009 - 7:44 AM
|
Dear ProfUIS-Team,
clicking (left mouse button) on an arbitrary row in a report grid window should display some structured information about the (complex) item associated with that row. The info could be best introduced by some kind of grid.
My question: is there any chance to put a (simple) grid into the preview area?
Greetings from Germany,
Martin
P.S.: hmmm ... we’re still using version 2.82 ...
|
|
|
Technical Support
|
Oct 12, 2009 - 12:37 PM
|
You can use the CExtPainManager::stat_PrintWnd() static method for capturing the window content:
static HBITMAP stat_PrintWnd(
HWND hWnd,
UINT nMessage = WM_PRINTCLIENT,
LPARAM lParamPrint = PRF_NONCLIENT|PRF_CLIENT|PRF_ERASEBKGND|PRF_CHILDREN,
HDC hSrcDC = NULL,
const RECT * pRectFillSrc = NULL
);
You have instantiated the grid control correctly. But, we think you don’t need to use the CExtPPVW() template class because you will not need to generate the print/preview content. Then you should create the grid control as window. Your grid control should be created without the WS_VISIBLE style because the grid is needed only for capturing its content. This will solve the HWND handle issue.
|
|
|
Oliver Rau
|
Oct 12, 2009 - 8:05 AM
|
Following your advice, I’ve created a simple grid ...
ExtPPVW < CExtGridWnd > * m_wndGrid = new CExtPPVW < CExtGridWnd >;
... and filled it with some dummy data. When I try to capture m_wndGrid ...
CExtBitmap * pEBM = CaptureWindow(m_wndGrid->GetSafeHwnd()); ... with ...
CExtBitmap * CaptureWindow(HWND hWnd)
{
if( ! ::IsWindow(hWnd) )
{
assert(false);
return NULL;
}
HDC hDCMem = ::CreateCompatibleDC(NULL);
RECT rect;
::GetWindowRect(hWnd, & rect);
HBITMAP hBmp = NULL;
{
HDC hDC = ::GetDC(hWnd);
hBmp = ::CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top);
::ReleaseDC(hWnd, hDC);
}
HGDIOBJ hOld = SelectObject(hDCMem, hBmp);
::SendMessage(hWnd, WM_PRINTCLIENT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED);
::SelectObject(hDCMem, hOld);
::DeleteObject(hDCMem);
CExtBitmap * pEBM = new CExtBitmap();
pEBM->FromBitmap(hBmp);
return pEBM;
}... I got an assertion ( hWnd == NULL). The reason is obvious: m_wndGrid is not of type CWnd*. My question as a non-MFC-specialist: how can I get a photo of my m_wndGrid, though? Do I have to put it in a container of class CWnd* first? And do I have to call ShowWindow() before capturing? Thanks a lot in advance!! Martin
|
|
|
Oliver Rau
|
Oct 15, 2009 - 2:25 AM
|
Sorry for asking again (my last question might have got lost) ... How can I get a photo of my m_wndGrid? Is it necessary to call ShowWindow() before capturing? Martin
|
|
|
Technical Support
|
Oct 15, 2009 - 1:04 PM
|
|
|
|
|
Oliver Rau
|
Oct 16, 2009 - 3:49 AM
|
Perfect sample - thank you very, very much for this!! You’re doing a great job: powerful product - competent support!
By the way: can you already tell an approximate date for the upcoming release that includes the announced HTML-support?
Martin
|
|
|
Technical Support
|
Oct 16, 2009 - 1:24 PM
|
We need to release Prof-UIS 2.87 this month. HTML features will not be included into it - they are the next step and next release.
|
|
|
Technical Support
|
Oct 8, 2009 - 11:19 AM
|
The grid window is based on the non-HWND UI elements called grid cells. You can create other grid windows inside one container grid control, but it will not scroll child grids automatically. There is a better idea. You can use the invisible grid windows, initialize them with data which should be displayed as part of preview areas. You can use the WM_PRINTCLIENT message to get a photo of the invisible grid content. You can save this photo into the CExtBitmap image. Your report grid’s preview areas should simply display these photo images. You can either code your own grid cell class or use the CExtGridCellPicture class as is.
|
|
|
Oliver Rau
|
Oct 8, 2009 - 9:40 AM
|
Thank’s a lot for your quick reply!
For the moment, I’ve decided to make my own grid cell containing a CExtGridWnd.
What would be the best starting point for doing this? Using an existing class inherited from CExtGridCell as a base (e.g. CExtGridCellButton)? Or are there any examples out there that can be used as a guideline?
Martin
|
|
|
Technical Support
|
Oct 8, 2009 - 4:05 AM
|
The preview area of each row in the report grid is a stand alone grid cell attached to each report grid row using the CExtReportGridItem::PreviewAreaGet() method. You can code a custom grid cell displaying any compound content and use it in report grid’s preview areas. Unfortunately we don’t have a grid cell class displaying a table inside it. But this feature will be available soon with the HTML support everywhere inside Prof-UIS.
|
|
|
Bill Olson
|
Oct 7, 2009 - 4:41 AM
|
I am continuing to try and adopt our existing application to Prof UIS. We have a number of dialog bars derived from CDialogBar. As I understand it, I should create a CExtControlBar, then the controls should be in a CExtResizableDialog. I’ve been working in an experimental application to prevent trashing the main ap too much. So far I’ve been able to get the dialog bar to display, but sizing is proving to be a problem. I need to be able to control the size of the bar programatically and I don’t want the user to be able to resize it. I derived my own CExtControlBar class below class CNewControlBar : public CExtControlBar
{
public:
inline CNewControlBar::CNewControlBar() { m_bFixedMode = true;};
virtual void _RowResizingStart() const {};
virtual void _RowRecalcingStart() const {}; }; This displays the bar as a fixed size, but the height is not correct. I also found that I was supposed to make these calls to set the initial size: m_dlgbarDlgBar.SetInitDesiredSizeVertical(CSize( 1, 1 ));
m_dlgbarDlgBar.SetInitDesiredSizeHorizontal(CSize( 1, 1 )); However, they don’t seem to work. It doesn’t seem to matter what I put into the CSize call, the bar always draws the same size. I thought the size of the dialog child might have something to do with the initial size, but even when I made the dialog with a height several times its original size, it still drew the same size. The CExtControlBar is about 2X the height of the row of controls on the dialog bar and nothing seems to change it. I tried calling GetWindowRect for the child dialog, then call MoveWindow for the CExtControlBar derived bar, but that did nothing. When I called GetWindowRect for the control bar, the dimensions returned had top==bottom, and left==right. One of the dialog bars needs to be programatically resized depending on events. I’m not sure how to go about resizing the bars. Thanks in advance, Bill
|
|
|
Technical Support
|
Oct 8, 2009 - 11:17 AM
|
We guess you simply should use the CExtPanelControlBar class. You can see it with a child dialog in the FixedSizePanels sample application.
|
|
|
Bill Olson
|
Oct 11, 2009 - 4:51 AM
|
OK, that solves the problem. I missed the distinction between the CExtControlBar and the CExtPanelControlBar. :( Thanks, Bill
|
|
|
Technical Support
|
Oct 7, 2009 - 11:33 AM
|
The CExtControlBar class implements a control bar which is designed as always resizable without any limits. Besides its size always mutually depends on the size and location of other bars. It’s possible to limit the size of a resizable bar but only in some particular cases. If you want to make your dialog always accessible and always enough big, then you should create a CExtScrollContainerWnd window inside a CExtControlBar window and then create your dialog inside a scrollable container.
|
|
|
Bill Olson
|
Oct 7, 2009 - 11:11 PM
|
It doesn’t look like my reply went through. I apologize if this is going over the same ground. I’m trying to make the control bar smaller, not larger. For my purposes, a scroll container is not useful. I was able to make it a fixed size by subclassing CExtControlBar and setting m_bFixedMode to true in the constructor. However, no matter what I do, I seem to have no control over the size of the bar produced. It always starts off about twice the height it needs to be (docked to the top), which wastes screen real estate. I want to make the control bar’s height essentially the same as the dialog contained within it. It seems you are saying there is no way to programatically control the size of a control bar? Even if it is adjustable, I would think that a programmer might want to set the initial size in some situations. It seems like an uneccesary limitation. Bill
|
|
|
ngo duc trong
|
Oct 7, 2009 - 3:48 AM
|
Hi All I have a VC6 application use prof-uis282 and it run ok. Now I want to convert to VC2008, I downloaded prof-uis285 and compile to get lib and import into my project. But there some errors like this:
UserReg.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CExtResDlg::Create(unsigned int,class CWnd *)" (?Create@CExtResDlg@@UAEHIPAVCWnd@@@Z)
UserReg.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CExtResDlg::Create(wchar_t const *,class CWnd *)" (?Create@CExtResDlg@@UAEHPB_WPAVCWnd@@@Z)
UserReg.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall CExtResDlg::CreateIndirect(void *,class CWnd *)" (?CreateIndirect@CExtResDlg@@UAEHPAXPAVCWnd@@@Z)
UserReg.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CExtWS<class CExtADLG<class CExtResDlg>,301>::ShowSizeGrip(int)" (?ShowSizeGrip@?$CExtWS@V?$CExtADLG@VCExtResDlg@@@@$0BCN@@@UAEXH@Z)
.....
Please tell me some suggestions for this error.
Thanks and Best Regards.
|
|
|
ngo duc trong
|
Oct 9, 2009 - 8:25 PM
|
I compiled my project and prof-uis in unicode mode. Also turn on "Treat wchar_t as Built-in type" in two projects. But when I re_compile error still happen. Do you have any other suggestions??
|
|
|
Technical Support
|
Oct 12, 2009 - 3:53 AM
|
We still believe there is something wrong with your VS2008 project settings. Please compare all the settings of your project with the Unicode configuration settings of any Prof-UIS sample project. You can also send your project to the support mail box at this web site so we will check it.
|
|
|
Technical Support
|
Oct 7, 2009 - 9:55 AM
|
Please check both Prof-UIS and your projects are using the same native wchar_t type support option in the compiler’s settings.
|
|
|
ngo duc trong
|
Oct 11, 2009 - 9:31 PM
|
I compiled my project and prof-uis in unicode mode. Also turn on "Treat wchar_t as Built-in type" in two projects. But when I re_compile error still happen. Do you have any other suggestions??
|
|
|
ngo duc trong
|
Oct 7, 2009 - 3:36 AM
|
Hi all I have a application use
|