Subject |
Author |
Date |
|
Ed Nafziger
|
May 3, 2010 - 8:39 PM
|
I want to install a keyboard hook to override accelerators and menu hotkeys.
If I install a keyboard hook using SetWindows HookEx, or use CExtHookSpy, and return true instead of calling CallNextHookEx or CExtHookSpy::OnHookSpyPreTranslateMessage( pMsg ), some keyboard combinations activate the main frame menu, even if I return true to indicate I want to discard the message.
For example, if I add the following to MDIDOCVIEW sample:
added to CMainFrame::CMainFrame()
HookSpyRegister( __EHSEF_KEYBOARD | __EHSEF_PRE_TRANSLATION );
added to CMainFrame::~CMainFrame()
HookSpyUnregister( __EHSEF_KEYBOARD | __EHSEF_PRE_TRANSLATION );
added
bool CMainFrame::OnHookSpyPreTranslateMessage( MSG* pMsg )
{
if( (GetKeyState(VK_MENU) & 0x80) && pMsg->wParam == ’E’ ) // ALT+E
return true;
return CExtHookSpy::OnHookSpyPreTranslateMessage( pMsg );
}
and if I press ALT+E, the "File" item in the main frame menu gains focus and becomes activated. Shouldn’t returning true discard the entire series of keyboard up/down messages? Same thing happens for OnHookPostTranslateMessage. What am I doing wrong? Thanks...
|
|
Technical Support
|
May 4, 2010 - 1:53 PM
|
Here is the condition for the ALT key state checking:
bool bAltKeyIsPressed = ( ( HIWORD(pMsg->lParam) & KF_ALTDOWN ) == 0 ) ? false : true;
|
|
Ed Nafziger
|
May 4, 2010 - 3:20 PM
|
The issue occurs regardless of the method used to detect the ALT key press. If I replace (GetKeyState(VK_MENU) & 0x80) with ( HIWORD(pMsg->lParam) & KF_ALTDOWN ) the same issue occurs. Please see my reply mentioning the use of CMyMenuBar::g_bCancelNearestAltUp to bypass this issue. Thanks.
|
|
Technical Support
|
May 5, 2010 - 12:33 PM
|
The menu bar is not based on thread hooks. All the keyboard processing is implemented in the CExtMenuControlBar::TranslateMainFrameMessage() method which is typically invoked from the CMainFrame::PreTranslateMessage() virtual method. So, any thread wide keyboard hooks must receive the keyboard notifications earlier than menu bar will receive them. That’s why the CMyMenuBar::g_bCancelNearestAltUp flag can be set to true in your CMainFrame::OnHookSpyKeyMsg() method. But you can do the same in the CMainFrame::PreTranslateMessage() virtual method before invoking the CExtMenuControlBar::TranslateMainFrameMessage() method. I.e. you don’t need thread wide hooks.
But you also can do the same using hooks. Please take a look at the source code of the CMainFrame::OnHookSpyKeyMsg() message posted in this forum thread. We think the following line of code:
if( WM_KEYFIRST <= pMsg->message <= WM_KEYLAST )
Should be replaced with the following one: if( WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST )
|
|
Ed Nafziger
|
May 4, 2010 - 1:27 PM
|
I have a workaround that seems to fix this. I had to add CMyMenuBar::g_bCancelNearestAltUp = true before returning true in CMainFrame::OnHookSpyKeyMsg and before returning true from translating the accelerators in CMFCApp::PreTranslateMessage.
bool CMainFrame::OnHookSpyKeyMsg( MSG* pMsg )
{
if( bMacroEnable )
{
if( WM_KEYFIRST <= pMsg->message <= WM_KEYLAST )
{
if( KeyboardHookProc(HC_ACTION, pMsg->wParam, pMsg->lParam ) ) // my function to do stuff
{
CMyMenuBar::g_bCancelNearestAltUp = true; // <<-----
return true;
}
}
}
return CExtHookSpy::OnHookSpyKeyMsg( pMsg );
}
BOOL CMFCApp::PreTranslateMessage( MSG* pMsg )
{
if( TranslateMDISysAccel(hwndMDIClient, pMsg) )
{
CMyMenuBar::g_bCancelNearestAltUp = true; // <<-----
return TRUE;
}
if( TranslateAccelerator(hwndFrame, (HACCEL)hAccel, pMsg) )
{
CMyMenuBar::g_bCancelNearestAltUp = true; // <<-----
return TRUE;
}
if( ::IsDialogMessage(hWrkDlg, pMsg) )
return TRUE;
return __super::PreTranslateMessage( pMsg );
}
is there a better way to fix this?
|
|
flsilva
|
May 3, 2010 - 1:51 PM
|
Good afternoon, I have a doubt about the Quick Access Toolbar. I wish the toolbar in my project but do not want the user to add or remove any button, is there any way to disable the customization of the toolbar? And along with that disable the options button within the application button? Thanks
|
|
Technical Support
|
May 4, 2010 - 1:50 PM
|
You can modify the context menu of the ribbon bar dynamically. You should handle the CExtPopupMenuWnd::g_nMsgPrepareOneMenuLevel registered message in your CExtRibbonBar -derived class like described here:
http://www.prof-uis.com/prof-uis/tech-support/faq/pop-up-menus.aspx#how-to-insert-menu-items-at-run-time
Your message handler should remove the ID_EXT_RIBBON_QATB_RESET , ID_EXT_RIBBON_QATB_ADD_TO and ID_EXT_RIBBON_QATB_REMOVE_FROM menu command items. You also need to override the CExtRibbonBar::OnRibbonOptionsDialogInitPageRTCs() virtual method. Your method should not invoke the parent class method to remove the quick access toolbar customization page from the ribbon options dialog.
|
|
Bogdan Munteanu
|
May 1, 2010 - 10:08 AM
|
I believe the scrollbars in the new Visual Studio 2010 theme in Prof-UIS 2.89 don’t use the paint manager.
Take for example the Prof-UIS Controls sample using the ANSI Debug or MBCS Debug builds on Win 32.
Thank you,
Bogdan
|
|
Technical Support
|
May 14, 2010 - 11:33 PM
|
|
|
Bogdan Munteanu
|
May 17, 2010 - 5:12 PM
|
Thank you very much: I downloaded the zip archive.
|
|
Bogdan Munteanu
|
May 3, 2010 - 7:18 PM
|
So, are the scrollbars associated to the Visual Studio 2010 theme based on the operating system look and feel (i.e., as opposed to being generated the way the scrollbars in the Office themes are)?
If that was the intent I am obviously wrong. (while running on XP, it looks a bit unexpected since the overall theme is blue-ish while the scrollbars are grey).
Thank you,
Bogdan
|
|
Technical Support
|
May 3, 2010 - 1:34 PM
|
We run the Visual Studio 2010 on Windows 7 with Windows 7 Aero, Windows 7 basic and Windows Classic desktop themes and we saw only the scroll bars themed by Windows. What skinned scroll bars should look like for the Visual Studio 2010 theme?
|
|
Richard Rodruck
|
Apr 30, 2010 - 9:59 AM
|
I downloaded the 2.89 build today and there is no VS 2010 app wizard in it. Everything up to 2008 is there.
|
|
Technical Support
|
Jul 6, 2010 - 11:54 AM
|
|
|
Technical Support
|
Jun 2, 2010 - 7:48 AM
|
This means you have installed Prof-UIS version older than 2.89 because only 2.89 supports Visual Studio 2010. Please check the size of your Prof-UIS installation’s EXE file. In case of 2.89 commercial version it should be 44.6 MB (46,811,177 bytes) bytes. In case of 2.89 trial version it should be 447 MB (469,690,441 bytes) bytes.
|
|
Richard Rodruck
|
Jun 4, 2010 - 8:32 AM
|
That is my file size and it is 2.89. I am downloading the exe installer.
|
|
Richard Rodruck
|
Jun 1, 2010 - 9:21 AM
|
I looked there and the zip files just go up to 2008. I am running the release version of VS 2010.
|
|
Technical Support
|
May 5, 2010 - 12:34 PM
|
The AppWizard for Visual Studio is a ZIP file in the .../Prof-UIS/Support/ folder. If the Integration Wizard does not detect the presence of Visual Studio 2010, then you have some pre-release version of Visual Studio 2010 installed rather than the final release version.
|
|
Richard Rodruck
|
Jun 1, 2010 - 1:03 PM
|
I looked there and the zip files just go up to 2008. I am running the release version of VS 2010
|
|
Dominik Braendlin
|
Apr 30, 2010 - 8:22 AM
|
Hi Support, Everything works fine except that I am missing the small icon that came along before I have sub classed the Button that I now have replaced with my own CMyRibbonNode. What else do I need to overwrite to get back the small and if wanted the big icon? The result should show a ribbon button with a small icon to the left and the text to the right. Thanks Adrian
|
|
Dominik Braendlin
|
May 4, 2010 - 11:58 PM
|
Sorry for the confusion. The link was only intended to relate to the subclass technique of ribbon controls I am using. Here is the source I am working on. .h File:
// CMyRibbonPressButton class { public DECLARE_DYNCREATE(CMyRibbonPressButton); public CMyRibbonPressButton( CExtToolControlBar * pBar = NULL, UINT nCmdID = ID_SEPARATOR, UINT nStyle = 0 ); public public protected protected CLink m_lnkLUp; CLink m_lnkLDown; BOOL m_bTrackingLB; }; // CMyRibbonPressButtonNode class { public DECLARE_SERIAL(CMyRibbonPressButtonNode); public CMyRibbonPressButtonNode( UINT nCmdIdBasic = 0L, UINT nCmdIdEffective = 0L, CExtRibbonNode * pParentNode = NULL, DWORD dwFlags = 0L, __EXT_MFC_SAFE_LPCTSTR strTextInToolbar = NULL, __EXT_MFC_SAFE_LPCTSTR strTextInMenu = NULL, __EXT_MFC_SAFE_LPCTSTR strTextUser = NULL, LPARAM lParam = 0L, CExtCmdIcon * pIconCustomized = NULL #if , INT nTextFieldWidth = 100, INT nDropDownWidth = -2, INT nDropDownHeightMax = 250 #endif ); public public CExtRibbonPage * pBar, CExtBarButton * pParentTBB = NULL ); protected CLink m_lnkLUp; CLink m_lnkLDown; CMyRibbonPressButton* m_pTBB; }; CMyRibbonPressButton : public CExtBarButton : : :void SetLButtonDownHdl(const CLink& hdl);void SetLButtonUpHdl(const CLink& hdl); :virtual void OnClick(CPoint point, bool bDown);virtual void OnPressedTrackingStart();virtual void OnPressedTrackingStop(); :void CancelAction(void); : CMyRibbonPressButtonNode : public CExtRibbonNode : : (!defined __EXT_MFC_NO_BUILTIN_TEXTFIELD)// (-1) - auto calc, (-2) - same as button area // (!defined __EXT_MFC_NO_BUILTIN_TEXTFIELD) virtual ~CMyRibbonPressButtonNode(); :void SetLButtonDownHdl(const CLink& hdl);void SetLButtonUpHdl(const CLink& hdl); :virtual CRuntimeClass * _OnRibbonGetButtonRTC();virtual CExtBarButton * OnRibbonCreateBarButton( :
.cpp File
// CMyRibbonPressButton IMPLEMENT_DYNCREATE(CMyRibbonPressButton, CExtBarButton); //--------------------------------------------------------------------------- CMyRibbonPressButton::CMyRibbonPressButton(CExtToolControlBar * pBar, UINT nCmdID, UINT nStyle) : CExtBarButton(pBar, nCmdID, nStyle) , m_bTrackingLB(FALSE) { } //--------------------------------------------------------------------------- void { m_lnkLDown = hdl; } CMyRibbonPressButton::SetLButtonDownHdl(const CLink& hdl)//--------------------------------------------------------------------------- void { m_lnkLUp = hdl; } CMyRibbonPressButton::SetLButtonUpHdl(const CLink& hdl)//--------------------------------------------------------------------------- void { { m_bTrackingLB = TRUE; m_lnkLDown.Call( } CMyRibbonPressButton::OnClick(CPoint point, bool bDown)__super::OnClick(point, bDown);if (bDown == TRUE)this);else{ CancelAction(); } } //--------------------------------------------------------------------------- void { } CMyRibbonPressButton::OnPressedTrackingStart()__super::OnPressedTrackingStart();//--------------------------------------------------------------------------- void { CancelAction(); } CMyRibbonPressButton::OnPressedTrackingStop()__super::OnPressedTrackingStop();//--------------------------------------------------------------------------- void { { m_bTrackingLB = FALSE; m_lnkLUp.Call( } } CMyRibbonPressButton::CancelAction(void)if (m_bTrackingLB == TRUE)this);// CMyRibbonPressButtonNode IMPLEMENT_SERIAL(CMyRibbonPressButtonNode, CExtRibbonNode, VERSIONABLE_SCHEMA|1); // CMyRibbonPressButtonNode //--------------------------------------------------------------------------- CMyRibbonPressButtonNode::CMyRibbonPressButtonNode( UINT nCmdIdBasic, UINT nCmdIdEffective, CExtRibbonNode * pParentNode, DWORD dwFlags, __EXT_MFC_SAFE_LPCTSTR strTextInToolbar, __EXT_MFC_SAFE_LPCTSTR strTextInMenu, __EXT_MFC_SAFE_LPCTSTR strTextUser, LPARAM lParam, CExtCmdIcon * pIconCustomized #if , INT nTextFieldWidth, INT nDropDownWidth, INT nDropDownHeightMax (!defined __EXT_MFC_NO_BUILTIN_TEXTFIELD)#endif // (!defined __EXT_MFC_NO_BUILTIN_TEXTFIELD)) : CExtRibbonNode( nCmdIdBasic, nCmdIdEffective, pParentNode, dwFlags, strTextInToolbar, strTextInMenu, strTextUser, lParam, pIconCustomized #if , nTextFieldWidth, nDropDownWidth, nDropDownHeightMax (!defined __EXT_MFC_NO_BUILTIN_TEXTFIELD)#endif // (!defined __EXT_MFC_NO_BUILTIN_TEXTFIELD)) , m_pTBB(NULL) { } //--------------------------------------------------------------------------- CMyRibbonPressButtonNode::~CMyRibbonPressButtonNode() { } //--------------------------------------------------------------------------- void { ASSERT_VALID( ASSERT(m_pTBB != NULL); ASSERT_VALID(m_pTBB); m_lnkLDown = hdl; m_pTBB->SetLButtonDownHdl(hdl); } } CMyRibbonPressButtonNode::SetLButtonDownHdl(const CLink& hdl)this);if (m_pTBB != NULL) {//--------------------------------------------------------------------------- void { ASSERT_VALID( ASSERT(m_pTBB != NULL); ASSERT_VALID(m_pTBB); m_lnkLUp = hdl; m_pTBB->SetLButtonUpHdl(hdl); } } CMyRibbonPressButtonNode::SetLButtonUpHdl(const CLink& hdl)this);if (m_pTBB != NULL) {//--------------------------------------------------------------------------- CRuntimeClass * CMyRibbonPressButtonNode::_OnRibbonGetButtonRTC() { ASSERT_VALID( } this );return ( RUNTIME_CLASS( CMyRibbonPressButton ) );//--------------------------------------------------------------------------- CExtBarButton * CMyRibbonPressButtonNode::OnRibbonCreateBarButton( CExtRibbonPage * pBar, CExtBarButton * pParentTBB) { #if m_pTBB = STATIC_DOWNCAST( CMyRibbonPressButton, CExtRibbonNode::OnRibbonCreateBarButton( pBar, pParentTBB ) ); m_pTBB->SetLButtonDownHdl(m_lnkLDown); m_pTBB->SetLButtonUpHdl(m_lnkLUp); 1return m_pTBB;#else return CExtRibbonNode::OnRibbonCreateBarButton( pBar, pParentTBB ); #endif }
As you can see I am trying to subclass a CExtBarButton. It works so far exept that my subclass CMyRibbonPressButton is missing the Icon which would show if I would use a CExtBarButton instead.
|
|
Technical Support
|
May 5, 2010 - 12:32 PM
|
The source code of the ribbon button does not override the CExtBarButton::PaintCompound() , CExtBarButton::CalculateLayout() and CExtBarButton::GetIcon() methods. This means your ribbon button should have exactly the same look as other push buttons in the ribbon bar. We suspect there is something else affecting to your button and not present in the code snippets in your message. Could you please try to insert your ribbon button and node classes into the RibbonBar sample project and send it to us?
|
|
Technical Support
|
May 4, 2010 - 1:54 PM
|
You provided a link to the other forum thread. That thread discusses text field buttons. That’s why we supposed some of your text field buttons need icons before or after the editable area. But now we need your help. Please describe us which buttons exactly are you using and which icons are missing?
|
|
Dominik Braendlin
|
May 3, 2010 - 1:33 PM
|
Thank you for the help. Unfortunately I am using CExtBarButton as base class not CExtBarTextFieldButton. This base class does not provide the two virtual methods. Should I use a different base class? I have to catch the OnClick and the OnPressedTrackingStop mehtod. Thats why I subclassed CExtBarButton in the first place. Other than that the Button should look and feel like CExtBarButton.
|
|
Technical Support
|
May 3, 2010 - 8:38 AM
|
First of all, your CExtBarTextFieldButton -derived class should override the CExtBarTextFieldButton::OnInplaceControlCalcRect() virtual method which computes the text field area rectangle. Your method should return a smaller rectangle to reserve some space on the left and/or right sides of the text field area.
Second, your CExtBarTextFieldButton -derived class should override the CExtBarTextFieldButton::PaintCompound() virtual method. Your virtual method should invoke the parent method and then draw the icons near the text field area defined by the OnInplaceControlCalcRect() virtual method.
|
|
Martin Barringer
|
Apr 30, 2010 - 7:31 AM
|
I have a CExtToolControlBar that is being created on a dialog box. In the OnInitDialog() method of the dialog I want to be able to disable any buttons on the control bar that aren’t applicable. But can’t get it to work. I’ve followed similar code from messages found in the support sections. Here’s the code I’ve implemented:
MyDialog::OnInitDialog() { // Add tool bar buttons here ...
// Disable buttons int nIndex = m_wndToolBar.CommandToIndex(ID_EXT_PROPERTY); CExtBarButton *pBtn = m_wndToolBar.GetButton(nIndex); pBtn->ModifyStyle(TBBS_DISABLED); }
But when this implements the button is still enabled. I suppose one work around would be to not even add the button to the toolbar. But I would like for it to appear and just be disabled.
Any suggestions as to what I’m doing wrong?
|
|
Technical Support
|
May 3, 2010 - 8:28 AM
|
First of all, please use the CExtResizableDialog class as a base class of your dialog class. The toolbar buttons are fully controlled by the MFC’s command updating mechanism. You should work with the Prof-UIS toolbars inside your dialog class exactly like inside the main frame class. This means you should add the command updating methods for your toolbar’s buttons and use the CCmdUI class methods for disabling or checking the toolbar buttons.
|
|
Claudiu Tanasescu
|
Apr 30, 2010 - 6:04 AM
|
Hi support,
I have a CExtGidWnd, with numerical cells, and i want to sort programmatically, by a column, rows within a range.
For sample example, in a grid with 6 rows and 3 columns. I want to sort only the rows of row 1 to row 4, using values of column 0.
row 0 : 7 23 52 row 1 : 4 23 52 <--- _1 row 2 : 9 23 52 <--- _2 row 3 : 6 23 52 <--- _3 row 4 : 8 23 52 <--- _4 row 5 : 3 23 52
after sorting:
row 0 : 7 23 52 row 1 : 4 23 52 <--- _1 row 2 : 6 23 52 <--- _3 row 3 : 8 23 52 <--- _4 row 4 : 9 23 52 <--- _2 row 5 : 3 23 52
is this possible?
|
|
Technical Support
|
May 3, 2010 - 8:27 AM
|
The CExtGridWnd::GridSortOrderSetup() allows you to sort the grid control by an entire row range only. But you can add a column with a zero width and specify some appropriate values in it. The rows <code>1..4<code> should have the same values as they have in the first column. The row <code>0<code> should have some very small value and the row <code>5<code> should have some very large value. Such zero width column can be used for sorting rows as you need.
|
|
Dominik Braendlin
|
Apr 28, 2010 - 8:45 AM
|
Dear Support, I am starting to use ribbon for my MDI application. Could you please give an example on how to display the MRU „Recent File List“ in the very first drop down menu (from the left) of the ribbon bar. The example given in RibbonBarMDI is not using real MRU content. I would like to get the same content as under ID_FILE_MRU_FILE1.
default:if( (pGalleryPopup->TrackFlagsGet()&TPMX_RIBBON_FILE_MENU) )"Recent Documents"), (HICON) NULL );for( nItemIndex = 0; nItemIndex < nItemCount; nItemIndex++ )" %d Recent Document Name"), nItemIndex + 1 );// for( nItemIndex = 0; nItemIndex < nItemCount; nItemIndex++ )wndRG.ItemExpand( pTBCI_GalleryGroup ); wndRG.ItemSetActive( pTBCI_GalleryGroup ); wndRG.UpdateToolBoxWnd( } true );// if( (pGalleryPopup->TrackFlagsGet()&TPMX_RIBBON_FILE_MENU) ) break; // default { CExtToolBoxWnd::TOOLBOX_ITEM_DATA * pTBCI_GalleryGroup = wndRG.ItemInsert( NULL, _T( ASSERT( pTBCI_GalleryGroup != NULL ); INT nItemIndex, nItemCount = 5; { CExtSafeString str; str.Format( _T( CExtToolBoxWnd::TOOLBOX_ITEM_DATA * pTBCI_GalleryItem = wndRG.ItemInsert( pTBCI_GalleryGroup, str, (HICON)NULL ); ASSERT( pTBCI_GalleryItem != NULL ); pTBCI_GalleryItem; }
Thanks Adrian
|
|
Technical Support
|
May 3, 2010 - 8:23 AM
|
Unfortunately we don’t have such a test project. But we can explain you how to access the recent file list information stored inside MFC. First of all, you will need this C++ class for performing acrobatic tricks with MFC:
class InternalFriendlyWinApp : CWinApp
{
public:
inline static InternalFriendlyWinApp * _GetFriendlyApp()
{
CWinApp * pApp = ::AfxGetApp();
ASSERT( pApp != NULL );
return (InternalFriendlyWinApp *)pApp;
}
CRecentFileList * _GetRecentFileList()
{
return m_pRecentFileList;
}
}; // class InternalFriendlyWinApp
The following line of code returns the MFC’s recent file list information: CRecentFileList * pRecentFileList = InternalFriendlyWinApp::_GetFriendlyApp()->_GetRecentFileList();
Please note, the returned pointer can be NULL if there are no recent files. Then you can take a look at the source code of the CExtPopupMenuWnd::_BuildItems() internal method which performs the acrobatic tricks with the CRecentFileList object including the display name and relative path formatting. The Office 2007 / 2010 recent file list is specific for the Office applications. It’s not needed for all the applications. That’s why we provide just a gallery inside ribbon file menu - not the recent file list viewer. Besides, MFC’s recent file list is single object and file list size is limited to 16 items. We have customers who support more lengthy recent file lists and multiple recent file lists.
|
|
Dominik Braendlin
|
Apr 29, 2010 - 8:37 AM
|
Thank you for the example. I am still wondering if you have an example that shows how to populate a recent file list with the MRU that is stored in the registry and that comes with every MFC SDI and MDI project. Also how to use such a MRU item to load the specific file (e.g. 2007 Word or 2007 Excel) would be very helpful. Adrian
|
|
Technical Support
|
Apr 28, 2010 - 12:43 PM
|
The the very first drop down menu in your message is the ribbon file menu. The MRU are of it is the ribbon gallery. Each ribbon gallery element is the image - not text. Here is the sample project demonstrating how to initialize the ribbon gallery displayed by the ribbon file button:
http://www.prof-uis.com/download/forums/RibbonBar-Custom-Draw-File-Button-Gallery.zip
This sample application generates bitmaps containing text and the ribbon file button displays items which look like menu items with text - not like some graphic images.
|
|
Alastair Watts
|
Apr 28, 2010 - 7:39 AM
|
I have a CExtResizableDialog based app. All controls seem to use the same font with Windows XP, however with Windows 7 the CExtTreeCtrl is using a smaller font than the other controls, such as CExtTreeGridWnd & CExtButton - the same happens with your sample app ’ProfUIS-Controls.exe’. What is the preferred why to get consistency?
|
|
Technical Support
|
May 7, 2010 - 12:15 PM
|
We didn’t forget about you. We are overloaded with the technical support. We are working on the Windows 7 fonts issue.
|
|
Alastair Watts
|
May 1, 2010 - 2:03 PM
|
CExtTreeGridWnd definately uses a larger font than CExtTreeCtrl under Windows 7, but have the same sized font under XP. This looks odd in my opinion. Is this intended behaviour?
|
|
Technical Support
|
Apr 29, 2010 - 7:47 AM
|
|
|
Alastair Watts
|
May 7, 2010 - 2:24 AM
|
I would appreciate an answer to my question please.
|
|
Krister Goodh
|
Apr 28, 2010 - 7:26 AM
|
Hello! I previously asked for you too look into void CExtPropertyGridCtrl::PropertyStoreSynchronize() . The code seems to look the same in profuis289(2010-04-22).
The test _ActiveDP == pDP fails to test true. That’s why I experimentally replaced the test by the test _ActiveDP = pDP->m_pOuterDataProvider .
Could you please verify that this is correct? (See the thread Forums » Prof-UIS Tech Support » CExtPropertyGridCtrl assert when removing item that is edited for details).
/J
|
|
Technical Support
|
May 5, 2010 - 1:55 AM
|
We are sorry for the delay with this reply. Yes, you are right. The correct comparison is ( LPVOID(&_ActiveDP) == LPVOID(pDP->m_pOuterDataProvider) ) .
|
|
tera tera
|
Apr 28, 2010 - 4:59 AM
|
Hello. I want to make original MyDynControlBar.
Does not the virtual function for generation exist? 
|
|
Technical Support
|
May 12, 2010 - 9:59 AM
|
We are sorry for the delay with this reply. The requested notification is already implemented in Prof-UIS. Please override the following virtual method to catch it:
bool CExtControlBar::NcButtons_HandleClick(
CExtBarNcAreaButton * pNcAreaButton,
CPoint point,
CExtControlBar * pBarEventSource,
CExtControlBar * pBarActiveInContainer
)
The pNcAreaButton parameter is the object of the CExtBarNcAreaButtonClose type when the floating mini frame’s X button is clicked. The CExtControlBar::NcButtons_HandleClick() virtual method is invoked for all the control bars in the floating palette. If your method returns true , then the rest of bars will not be notified with this method invocation.
|
|
Technical Support
|
Apr 28, 2010 - 10:01 AM
|
The resizable control bar consist of the caption and borders. The rest client area of the bar is always completely covered by its single child window. Please take a look at the TabbedBars sample application. It demonstrates bars with custom captions and borders provided by the CMainFrame::OnMsgUseCustomNcArea() handler method for the CExtControlBar::g_nMsgCustomNcAreaQuery registered message. This message allows you to recompute and/or repaint the bar borders and/or caption.
|
|
tera tera
|
May 6, 2010 - 1:23 AM
|
Hello. I want to perform control when a closing button of DynBar was pushed.
Please build a virtual message making original CMyDynControlBar. 
|
|
tera tera
|
May 6, 2010 - 6:11 PM
|
Please answer it
I am troubled.
|
|
Technical Support
|
May 11, 2010 - 12:51 PM
|
We just want to notify you that:
1) Your message is a feature request.
2) We are working on it.
|
|
Robert Hofstetter
|
Apr 28, 2010 - 2:04 AM
|
My CExtReportGridWnd has a date column. when I click the column header, it is sorted by the date string alphabetically, not by the actual date and time. Please let me know to sort the ReportGrid by date. Thanks
|
|
Technical Support
|
Apr 28, 2010 - 10:06 AM
|
If the date time column in your report grid control contains CExtGridCellString grid cells with text lines formatted as date time, then this column will be sorted as a text column. But if your date time column contains CExtGridCellDateTime grid cells, this column will be sorted correctly. The CExtGridCell::CompareEx() virtual method is used for comparing pairs of grid cells during sorting. Most of grid cell classes implement this virtual method for correct comparison. The CExtGridCellDateTime grid cell understands when it’s compared with other CExtGridCellDateTime grid cell and performs correct date data comparison. In other cases, when the CExtGridCellDateTime grid cell is compared with any other type of cell, then the basic text comparison is performed.
|
|
Robert Hofstetter
|
Apr 27, 2010 - 10:50 PM
|
Just open the ProfUIS_900_x64.sln with Microsoft Visual studio 2008
Build the project Prof-UIs Controls with configuration "Static MBCS Release with MFC Dll" and Platform x64
Start the program on Windows Server 2003, x64 edition and click ListView, Notice the list column headers are not displayed correctly.
Resize the main window and then program crashes.
The debug build works fine. Only the release build crashes. Tested the Prof-Uis version 2.85 and 2.88, both have the same problem.
It seems to crash somewhere in CExtHeaderCtrl.
Please let know if this is a bug and any solutions. Thanks
|
|
Technical Support
|
May 3, 2010 - 1:31 PM
|
We reproduced this issue. Thank you. To fix it, please update the source code for the following method:
void CExtHeaderCtrl::OnPaint()
{
ASSERT_VALID( this );
CRect rcClient;
GetClientRect( &rcClient );
CPaintDC dcPaint( this );
CExtMemoryDC dc( &dcPaint, &rcClient );
OnEraseHeaderBackground( dc, rcClient );
INT nColNo, nColCount = INT(GetItemCount());
for( nColNo = 0; nColNo < nColCount; nColNo++ )
{
CRect _rcItemEntire;
if( ! GetItemRect( nColNo, &_rcItemEntire ) )
continue;
if( ! dc.RectVisible( &_rcItemEntire ) )
continue;
HD_ITEM _item;
::memset( &_item, 0, sizeof(HD_ITEM) );
_item.mask = UINT(-1) & (~(__EXT_MFC_HDI_FILTER));
TCHAR strText[ 1024 ];
::memset( strText, 0, sizeof(strText) );
_item.cchTextMax = sizeof( strText ) / sizeof( strText[0] - 1 );
_item.pszText = strText;
GetItem( nColNo, &_item );
OnPaintHeaderItem( dc, _item, nColNo, _rcItemEntire );
}
}
Please also add the following line of code somewhere before the method mentioned above: #define __EXT_MFC_HDI_FILTER 0x0100
|
|
Robert Hofstetter
|
May 6, 2010 - 1:30 AM
|
Thanks! The problem is fixed
|
|
Technical Support
|
Apr 28, 2010 - 10:14 AM
|
The CExtHeaderCtrl themed header control in Prof-UIS 2.88 and older versions can really cause crashes on particular systems, especially if the header text is quite short (less than 5 characters). This is fixed in v.2.89.
|
|
Robert Hofstetter
|
Apr 29, 2010 - 6:11 PM
|
Prof-UIS 2.89 has the exactly same problem! Please test it following the above procedure and let me know if you can fix it.
|
|
Ed Nafziger
|
Apr 27, 2010 - 5:07 PM
|
I just uninstalled 2.88, installed 2.89, and ran the integration wizard.
vs2003 files were built ok but the following vs2010 files failed: vs2010 ansi dynamic exe debug vs2010 ansi dynamic exe release vs2010 ansi dynamic dll release
The following folders do not exist, so obviously those report files are non-existant. D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ANSIDebug D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ANSIRelease D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ANSIReleaseRDE
Any ideas why the the vs2010 files are failing to build?
/*******************************************************************/
REPORT FILE [4-27-2010, 15:43]
/*******************************************************************/
Install Prof-UIS Application Wizard to Visual Studio - Succeeded.
Library build for Visual Studio .NET 2003 (Win32 platform)
Build "ProfUIS289nd - ANSI/Debug (ProfUISDLL - Win32 ANSI Debug)" - succeeded
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ProfUIS289nd.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ANSIDebug\ProfUISDLL\buildlog.htm"
Library build for Visual Studio .NET 2003 (Win32 platform)
Build "ProfUIS289n - ANSI/Release (ProfUISDLL - Win32 ANSI Release)" - succeeded
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ProfUIS289n.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ANSIRelease\ProfUISDLL\buildlog.htm"
Library build for Visual Studio .NET 2003 (Win32 platform)
Build "ProfUIS289nd-RDE - ANSI/Debug (ProfUISDLL - Win32 ANSI Debug RDE)" - succeeded
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ProfUIS289nd-RDE.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ANSIDebugRDE\ProfUISDLL\buildlog.htm"
Library build for Visual Studio .NET 2003 (Win32 platform)
Build "ProfUIS289n-RDE - ANSI/Release (ProfUISDLL - Win32 ANSI Release RDE)" - succeeded
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ProfUIS289n-RDE.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_710\ANSIReleaseRDE\ProfUISDLL\buildlog.htm"
Library build for Visual Studio 2010 (Win32 platform)
Build "ProfUIS289nd - ANSI/Debug (ProfUISDLL - Win32 ANSI Debug)" - failed
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ProfUIS289nd.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ANSIDebug\ProfUISDLL\buildlog.htm"
Library build for Visual Studio 2010 (Win32 platform)
Build "ProfUIS289n - ANSI/Release (ProfUISDLL - Win32 ANSI Release)" - failed
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ProfUIS289n.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ANSIRelease\ProfUISDLL\buildlog.htm"
Library build for Visual Studio 2010 (Win32 platform)
Build "ProfUIS289nd-RDE - ANSI/Debug (ProfUISDLL - Win32 ANSI Debug RDE)" - succeeded
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ProfUIS289nd-RDE.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ANSIDebugRDE\ProfUISDLL\buildlog.htm"
Library build for Visual Studio 2010 (Win32 platform)
Build "ProfUIS289n-RDE - ANSI/Release (ProfUISDLL - Win32 ANSI Release RDE)" - failed
Output file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ProfUIS289n-RDE.lib"
0 errors, 0 warnings
Report file: "D:\Program Files\FOSS Software Inc\Prof-UIS\Bin_1000\ANSIReleaseRDE\ProfUISDLL\buildlog.htm"
Register Prof-UIS help in Visual Studio .NET 2002, .NET 2003, 2005, 2008 - Succeeded.
|
|
Technical Support
|
Jul 6, 2010 - 11:55 AM
|
|
|
Technical Support
|
May 21, 2010 - 12:23 PM
|
We still have some issues related to VS 2010 in the Integration Wizard. There are no such issues in Prof-UIS. You can compile Prof-UIS using VS 2010 IDE. The VS2003 is configured to use MFC libraries which correspond to the older MFC version. You cannot use Prof-UIS based on the later MFC version in VS 2003.
|
|
Technical Support
|
May 5, 2010 - 12:36 PM
|
We are sorry for the delay with this reply. We reproduced the Integration Wizard problem. It compiles successfully only the first Visual C++ 2010 project. This problem was absent with the pre-release version of Visual Studio 2010. We checked all the DTE COM interfaces and all the GUIDs for changes between Visual Studio 2010 pre-release and release versions and they are the same. We tried to run each Visual Studio 2010 compilation task in a separate thread and result was the same: only the first task can compile successfully. We continue searching for the solution. Thank you.
|
|
Ed Nafziger
|
May 5, 2010 - 1:07 PM
|
You mentioned "...this problem was absent with the pre-release version of Visual Studio 2010..."
Just FYI, I am using pre-release version of vs2010 premium, version "10.0.30128.1 RC1Rel"
|
|
Technical Support
|
May 7, 2010 - 12:09 PM
|
We had no problems with the release candidate version of Visual Studio 2010. We carefully checked the COM interfaces, class GUIDs, interface IIDs and method definitions both in the release candidate and in the final release versions. Everything is the same. We had to wait for some service pack for VS2010 or switch to using command line based compiling instead of VS2010 COM interfaces.
|
|
Ed Nafziger
|
May 21, 2010 - 10:40 AM
|
I was able to manually build these projects in VS2010 using the \Program Files\FOSS Software Inc\Prof-UIS\ProfUISDLL\ProfUISDLL_1000.sln.
Can the resulting ProfUIS289*.dll and ProfUIS289*.lib, build with VS2010, be used in VS2003 projects?
|
|
Oliver Rau
|
Apr 27, 2010 - 1:38 AM
|
Dear Support, we found an issue with the 2.88 version.
If you running the Ribbon-Demo and change the font-name or font-size with the Mouse, the changes are reflected in the combobox as expected. If you are now reduce the wide of the window (to 150 px) so you only see the ribbon groups, the selection doesn’t work with Mouse anymore, a selection with the keyboard still works. Best regards Oliver 

|
|
Eric guez
|
Apr 22, 2010 - 4:20 AM
|
Hi,
How can I prevent toobar and controlbars from being docked before the menubar ?
I want to prevent this situation :

|
|
Eric guez
|
Apr 29, 2010 - 1:37 AM
|
|
|
Offer Har
|
Apr 21, 2010 - 5:32 AM
|
Any news? We really need this one fixed.
|
|
Technical Support
|
Apr 22, 2010 - 5:30 AM
|
Fixed in 2.89. The floating mini frame window (its non-client area) was not repainted in some particular situations. You can drop us an e-mail to the support mail box so we will provide you with the 2.89 pre-release version download.
|
|
Product Development
|
Apr 20, 2010 - 11:07 AM
|
I reported this bug, which was fixed in 2.61: Fixed a bug when the Windows task bar was covered by the maximized main frame/dialog window when a skinnable or Office 2007 theme was applied.
however, I can still replicate it with the samples if the windows taskbar is docked to the left edge of the desktop.
Here are the steps to replicate: 1) dock windows taskbar to left edge of desktop. 2) launch one of the samples, I use "MDI" sample. 3) restore the window, so that it is not maximized. 4) minimize the window. 5) restore the window. 6) maximize the window.
the size of the window seems correct, but its position is wrong. If the windows taskbar is 200 pizels wide, then the positoin of the window will be 200 pixels too far to the left, behind the taskbar and off the edge of the monitor.
|
|
Technical Support
|
Apr 22, 2010 - 5:28 AM
|
We confirm this issue has re-appeared in 2.88. It’s fixed in the latest pre-release 2.89. You can drop us an e-mail to the support mail box so we will provide you with the 2.89 pre-release download.
|
|
Ed Nafziger
|
Jun 4, 2010 - 5:02 PM
|
I can still replicate this in 2.89, however I have narrowed it down to a multi-monitor issue, and I no longer care if this is fixed.
FYI: This issue seems to only occur if I have a second monitor enabled, and the SECONDARY monitor is setup as the LEFT monitor in windows display settings.
If you want more details on how to replicate this with the "FullScreenState" sample please let me know, otherwise I will dismiss the issue as non-important and just work around it myself.
Thanks.
|
|
Technical Support
|
Jun 14, 2010 - 11:03 AM
|
We reproduced this issue. Thank you. It really occurs only when the main monitor is on right and the secondary monitor is on left. It does not occur constantly. We can switch Prof-UIS themes 20 times and only 1-2 times the incorrect window maximized position happens. We just want to notify you we are working on this issue.
|
|
Ed Nafziger
|
Apr 20, 2010 - 11:46 AM
|
also occurs if the windows taskbar is docked at the top edge of the desktop.
|
|
Ed Nafziger
|
Apr 20, 2010 - 11:13 AM
|
I can replicate this in 2.88
|
|
Lars Mohr
|
Apr 20, 2010 - 6:41 AM
|
|
|
Lars Mohr
|
Apr 30, 2010 - 4:48 AM
|
No response means there is no progress on this topic?
|
|
Hendrik Stephani
|
Apr 20, 2010 - 2:44 AM
|
Hello, is there a way to align an icon in the middle of an CExtButton with text on the left and right of it? Regards, Tobias Fensch
|
|
Technical Support
|
Apr 20, 2010 - 12:27 PM
|
Please take a look at the Buttons dialog page in the ProfYUS_Controls sample application. Please set the right text marging and left icon marging to 20 and, we guess you will see the button icon and text aligned as you need.
|