Subject |
Author |
Date |
|
Offer Har
|
Aug 17, 2011 - 12:27 AM
|
Please let me know at least that you received my application that reproduces it...
|
|
Technical Support
|
Aug 19, 2011 - 2:54 AM
|
The difference between 2.90 and 2.92 is caused by the bug fix. Prof-UIS 2.90 initializes dialog windows with incorrect size because of using Windows non-client area sizes instead of Prof-UIS skin non-client area sizes. 2.92 is correct.
|
|
Technical Support
|
Aug 18, 2011 - 2:11 AM
|
The problem was with your test project. We replied your e-mail with modified project attached. If you didn’t receive our answer yet, please provide us with alternative e-mail address.
|
|
Offer Har
|
Aug 18, 2011 - 2:16 AM
|
The problem is that the same code generates different output in 2.90. If you run it in 2.90 you will not get the 10 pixel margin on the right and bottom. Please check where is the place in which you addd these 10 extra pixels so we can remove it. As we told you in the mail, we cannot alter all the dialogs resources.
|
|
Alastair Watts
|
Aug 16, 2011 - 11:22 AM
|
I’ve read all the posts I can find but can’t get this working. When calling BestFitRow() what should nRowNo be when using a tree grid?
|
|
Alastair Watts
|
Aug 16, 2011 - 11:36 AM
|
Fixed it ... I hadn’t set __EGBS_RESIZING_CELLS_OUTER_V
|
|
Offer Har
|
Aug 15, 2011 - 2:33 AM
|
Dear Support, The balloon tooltip is always displayed above the control it is linked to. The rectangle tooltip is displayed where the cursor is. Is there any way of making the rectangle tooltip display always above the control just like the balloon? Thanks, Ron.
|
|
Technical Support
|
Aug 15, 2011 - 7:30 AM
|
You can invert the tooltip postion using the following code:
CExtPopupMenuTipWnd * pTip = . . .
pTip->SetTipStyle( CExtPopupMenuTipWnd::__ETS_INV_RECTANGLE_NO_ICON )
You can increase the tooltip distance by specifying a larger rectangle in parameters of CExtPopupMenuTipWnd::Show() method.
|
|
Offer Har
|
Aug 17, 2011 - 12:32 AM
|
|
|
Offer Har
|
Aug 14, 2011 - 6:44 AM
|
Dear Support, I added a tooltip to a CExtEdit derived class. When I hover over the edit box the tooltip appears. then, if I move the mouse inside the edit box, each move generates flicker in the tooltip. If I move the mouse fast, the flickering is very annoying. Please fix. Thanks, Ron.
|
|
Technical Support
|
Aug 15, 2011 - 7:30 AM
|
You need to use your tooltip window only if you created your tooltip class and modified its behavior.
|
|
Offer Har
|
Aug 17, 2011 - 12:34 AM
|
As I explained, the problem is SetIcon that causes redraws which causes flickers: 1) Why isn’t the drawing of the tooltip double-buffers to reduce flicker? 2) Why does the SetIcon causes redraw while other setters functions do not?
|
|
Technical Support
|
Aug 18, 2011 - 2:11 AM
|
Prof-UIS always use the CExtPopupMenuTipWnd as a styled replacement of a classic tooltip. Classic tooltips never change on the fly. But, of course, we can implement double buffered painting to avoid flicker when your app invokes the CExtPopupMenuTipWnd::SetIcon() API. Please update the source code for the following method:
void CExtPopupMenuTipWnd::_DoPaint(
CDC & dcPaint,
bool bUseBackBuffer //= true
)
{
bUseBackBuffer;
CRect rcLayout;
GetClientRect( &rcLayout );
CExtMemoryDC dc( &dcPaint, &rcLayout );
HRGN hRegion = CreateRectRgnIndirect( &rcLayout );
GetWindowRgn( hRegion );
CRgn * pRegion = CRgn::FromHandle( hRegion );
CExtPaintManager * pPM = PmBridge_GetPM();
ASSERT_VALID( pPM );
CFont * pAdvTipFont = &m_fontAdvTip;
if( pAdvTipFont->GetSafeHandle() == NULL )
pAdvTipFont = pPM->AdvTip_GetFont( this );
if( pAdvTipFont->GetSafeHandle() == NULL )
pAdvTipFont = &(pPM->m_FontNormal);
COLORREF clrAdvTipText = pPM->AdvTip_GetTextColor( this );
if( clrAdvTipText == COLORREF(-1L) )
clrAdvTipText = pPM->GetColor( COLOR_INFOTEXT, this );
e_tip_style_t eTS = GetTipStyle();
switch( eTS )
{
case __ETS_BALLOON:
case __ETS_BALLOON_NO_ICON:
{
CBrush brushWindow;
brushWindow.CreateSolidBrush(
//pPM->GetColor( COLOR_INFOBK, this )
::GetSysColor( COLOR_INFOBK )
);
CBrush brushFrame;
brushFrame.CreateSolidBrush(
//pPM->GetColor( COLOR_3DDKSHADOW, this )
::GetSysColor( COLOR_3DDKSHADOW )
);
CBrush brushInnerFrame;
brushInnerFrame.CreateSolidBrush(
//pPM->GetColor( COLOR_3DFACE, this)
::GetSysColor( COLOR_3DFACE )
);
// frame
dc.FillRgn( pRegion, &brushWindow );
dc.FrameRgn( pRegion, &brushInnerFrame, 3, 3 );
dc.FrameRgn( pRegion, &brushFrame, 1, 1 );
// adjust icon’s area
rcLayout.DeflateRect( m_sizeRounders.cx, m_sizeRounders.cy, 0, 0 );
if( eTS != __ETS_BALLOON_NO_ICON && (! m_icon.IsEmpty() ) )
rcLayout.left += m_sizeRenderingIcon.cx + m_nIconMarginDX;
CFont * pOldFont = dc.SelectObject( pAdvTipFont );
int nOldBkMode = dc.SetBkMode( TRANSPARENT );
int nIconVertPos = m_sizeRounders.cy;
if( m_bFlipVert )
{
rcLayout.OffsetRect( 0, m_sizeLeader.cy );
nIconVertPos += m_sizeLeader.cy;
}
COLORREF clrOldTextColor = dc.SetTextColor( clrAdvTipText );
CExtRichContentLayout::stat_DrawText(
dc.m_hDC,
LPCTSTR(m_sText), m_sText.GetLength(),
&rcLayout,
DT_TOP|DT_LEFT, 0
);
dc.SetBkMode( nOldBkMode );
dc.SetTextColor( clrOldTextColor );
dc.SelectObject( pOldFont );
// icon
if( eTS != __ETS_BALLOON_NO_ICON && (! m_icon.IsEmpty() ) )
{
m_icon.Paint(
pPM,
dc.GetSafeHdc(),
m_sizeRounders.cx,
nIconVertPos,
m_sizeRenderingIcon.cx,
m_sizeRenderingIcon.cy
);
}
} // cases __ETS_BALLOON, __ETS_BALLOON_NO_ICON
break;
case __ETS_RECTANGLE:
case __ETS_RECTANGLE_NO_ICON:
case __ETS_INV_RECTANGLE:
case __ETS_INV_RECTANGLE_NO_ICON:
{
int nSizeShadow = CalcShadowSize();
ASSERT( nSizeShadow >= 0 );
if( nSizeShadow > 0 )
{
rcLayout.DeflateRect( 0, 0, nSizeShadow, nSizeShadow );
m_shadow.Paint(
pPM,
dc,
rcLayout,
CRect( 0, 0, 0, 0 ),
CRect( 0, 0, 0, 0 ),
nSizeShadow,
70,
95
);
}
bool bAdvTipWithShadow =
( m_nSizeShadow > 0
|| ( m_ctrlShadow.GetSafeHwnd() != NULL
&& ( m_ctrlShadow.GetStyle() & WS_VISIBLE ) != 0
)
) ? true : false;
if( ! pPM->AdvTip_PaintBackground(
dc,
rcLayout,
bAdvTipWithShadow,
this
)
)
{
// frame
//dc.FillRgn( pRegion, &brushWindow );
//dc.FrameRgn( pRegion, &brushFrame, 1, 1 );
dc.FillSolidRect(
&rcLayout,
::GetSysColor( COLOR_INFOBK )
);
dc.Draw3dRect(
&rcLayout,
pPM->GetColor( COLOR_3DDKSHADOW, this ),
pPM->GetColor( COLOR_3DDKSHADOW, this )
);
}
// adjust icon’s area
rcLayout.DeflateRect( m_sizeClassicMargins );
if( eTS != __ETS_RECTANGLE_NO_ICON
&& eTS != __ETS_INV_RECTANGLE_NO_ICON
&& (! m_icon.IsEmpty() )
)
rcLayout.left += m_sizeRenderingIcon.cx + m_nIconMarginDX;
CFont * pOldFont = dc.SelectObject( pAdvTipFont );
int nOldBkMode = dc.SetBkMode( TRANSPARENT );
COLORREF clrOldTextColor = dc.SetTextColor( clrAdvTipText );
CExtRichContentLayout::stat_DrawText(
dc.m_hDC,
LPCTSTR(m_sText), m_sText.GetLength(),
&rcLayout,
DT_TOP|DT_LEFT|DT_VCENTER, 0
);
dc.SetBkMode( nOldBkMode );
dc.SetTextColor( clrOldTextColor );
dc.SelectObject( pOldFont );
// icon
if( eTS != __ETS_RECTANGLE_NO_ICON
&& eTS != __ETS_INV_RECTANGLE_NO_ICON
&& (! m_icon.IsEmpty() )
)
{
int nIconHorzPos =
rcLayout.left
- m_sizeRenderingIcon.cx
- m_nIconMarginDX
;
int nIconVertPos =
rcLayout.top
+ ( rcLayout.Height() - m_sizeRenderingIcon.cy ) / 2
;
m_icon.Paint(
pPM,
dc.GetSafeHdc(),
nIconHorzPos,
nIconVertPos,
m_sizeRenderingIcon.cx,
m_sizeRenderingIcon.cy
);
}
} // rectangle cases
break;
#ifdef _DEBUG
default:
ASSERT( FALSE );
break;
#endif // _DEBUG
} // switch( eTS )
::DeleteObject( hRegion );
}
|
|
Technical Support
|
Aug 14, 2011 - 9:20 AM
|
This looks like a conflict of two tooltip controls. The CExtEdit class provides tooltip support. You don’t need to code the same in your CExtEdit -derived class
|
|
Offer Har
|
Aug 15, 2011 - 4:59 AM
|
Hi, I found the problem - it happens because of my implementation of OnAdvancedPopupMenuTipWndDisplay . In this function, I set the icon of the tooltip by calling _ATTW.SetIcon(...) . This function at its end calls RedrawWindow . The problem is that OnAdvancedPopupMenuTipWndDisplay is called in every mouse move, even if I did not leave the control, so it generated a call the redraw the tooltip. I bypassed it, because I don’t update the icon very often, but I suggest that you’ll look into it. Thanks, Ron.
|
|
Offer Har
|
Aug 14, 2011 - 11:47 AM
|
There is no conflict - I just call the built-in CExtEdit functions.
|
|
Offer Har
|
Aug 14, 2011 - 12:22 AM
|
Dear Support, I have a case in which I want to show a tooltip when a control loses focus. I implemented it in the OnKillFocus by adding this code:
CExtPopupMenuTipWnd& tooltip = CExtPopupMenuSite::g_DefPopupMenuSite.GetTip();
CRect rcArea;
GetWindowRect(&rcArea);
tooltip.SetText( LPCTSTR("HELLO") );
tooltip.SetTipStyle(CExtPopupMenuTipWnd::__ETS_BALLOON);
tooltip.Show((CWnd*)this, rcArea, true); This works fine, however, when the mouse is not over the control, and the user presses the tab button, the tooltip is displayed for a very short time, as the control is not over control. Is there any way to tell CExtPopupMenuTipWnd to hide itself after a longer time, or only when the mouse moves? Thanks, Ron.
|
|
Technical Support
|
Aug 15, 2011 - 7:31 AM
|
The CExtPopupMenuTipWnd runs the ID_TIMER_DELAY_KILL until it’s displayed. This timer detects mouse position changing. If the mouse is outside the rectangle specified in parameter of CExtPopupMenuTipWnd::Show() method, the timer handler hides the tooltip window. The CExtPopupMenuTipWnd::m_bNoHideDetection turns off the ID_TIMER_DELAY_KILL timer handler.
|
|
Offer Har
|
Aug 17, 2011 - 12:35 AM
|
That’s exactly what I was looking for.
|
|
Technical Support
|
Aug 15, 2011 - 7:29 AM
|
Create and use your own CExtPopupMenuTipWnd -derived class. Handle the WM_TIMER message. If the ID_TIMER_DELAY_KILL (671 ) timer event is received, do not invoke the parent class method and start your own timer which will continue the life of tooltip window and make it visible longer time.
|
|
Technical Support
|
Aug 14, 2011 - 9:17 AM
|
The CExtPopupMenuTipWnd window hides itself automatically. It monitors all the required messages which should make a tooltip hidden. The tooltip visibility is usually based on mouse position rather than on focused window state.
|
|
Offer Har
|
Aug 15, 2011 - 5:07 AM
|
Dear Support, I found the flag m_bNoHideDetection . I use it and it seems to be exactly what I need... it shows the toolip until I move the dialog. Can you give more details on this flag? Thanks,
Ron
|
|
Offer Har
|
Aug 14, 2011 - 11:47 AM
|
Where is this mouse position computed? Can it be hacked? or at least can I make it stay a little longer? I want the user to notice the message. Thanks, Ron.
|
|
Offer Har
|
Aug 13, 2011 - 10:27 PM
|
Dear Support, I want to change the back color of a text edit for a certain time, and after it return it to its original color. What I did was to store the previous color, set it a the temp, and after the timeout, return to the previous color I saved (which was supposed to be the original) The problem is that it did not return to its original color. The reason is that when I call the function GetBkColor it does not return me the color, but -1. This there a way to force it to return me the real color, and not -1? or is there a function to force it to return to its original back color? Thanks, Ron.
|
|
Technical Support
|
Aug 15, 2011 - 7:29 AM
|
The pExtEdit->SetBkColor( COLORREF(-1L) ); code returns the default background color of the editor control:
void CExtEditBase::SetBkColor( COLORREF clrBk )
{
ASSERT_VALID( this );
m_clrBack = clrBk;
if( GetSafeHwnd() != NULL )
RedrawWindow( NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE|RDW_ERASENOW|RDW_FRAME |RDW_FRAME|RDW_ALLCHILDREN );
}
Please check that your dialog or CExtEdit -derived classes does not handle the WM_CTLCOLOR messages for re-coloring the edit control.
|
|
Offer Har
|
Aug 17, 2011 - 12:36 AM
|
Thanks. solved the problem.
|
|
Technical Support
|
Aug 14, 2011 - 9:25 AM
|
The COLORREF(-1L) color value means there is no background color assigned to an edit control and the current theme appearance should be used. The default color is not a color but rather the visual appearance provided by Windows. Some future Windows version may have the paint editor background as a gradient or a bitmap based skin.
|
|
Offer Har
|
Aug 14, 2011 - 11:45 AM
|
So how can I roll back to the original color of the control?... if I call SetBkColor with -1 it does nothing... Thanks.
|
|
Offer Har
|
Aug 13, 2011 - 7:25 AM
|
Dear Support, We implemented the following function in our CExtEdit derived class:
void CMyEdit::OnAdvancedPopupMenuTipWndDisplay(
CExtPopupMenuTipWnd & _ATTW,
const RECT & rcExcludeArea
) const
{
ASSERT_VALID( this );
if( ! m_bToolTipActive )
return;
if( m_strToolTipText.IsEmpty() )
return;
_ATTW.SetText( LPCTSTR(m_strToolTipText) );
_ATTW.SetTipStyle(CExtPopupMenuTipWnd::__ETS_RECTANGLE);
_ATTW.SetIcon(m_hInfo);
_ATTW.Show((CWnd*)this, rcExcludeArea, true);
} We made sure that m_hInfo is a vaid HICON , but still, no luck. We also tried it with __ETS_BALLOON - same result. Is there a known but there? are we doing something wrong? Thanks, Ron.
|
|
Technical Support
|
Aug 14, 2011 - 9:16 AM
|
But CExtEdit class supports Prof-UIS tooltips and have the same method. You don’t need to implement the same in your CMyEdit class.
|
|
Offer Har
|
Aug 14, 2011 - 11:49 AM
|
I found the problem - I use an HICON that I keep as member, so I had to pass the last parameter To SetIcon - bCloneIcon as true, otherwise it deletes my icon... Problem solved.
|
|
Offer Har
|
Aug 13, 2011 - 1:05 AM
|
Dear Support, We are in the process of upgrading to 2.92. We noticed that all modal dialogs, have exactly 10 extra pixels on the right side of the dialog, between the right-most control and the dialog frame. This does not happen in 2.90, so it’s for sure something different between 2.90 and 2.92. We are using controls anchoring. We are using office 2007 themes. Please provide solution. Thanks, Ron.
|
|
Technical Support
|
Aug 14, 2011 - 9:26 AM
|
We cannot confirm this and nobody reported the same yet. We need additional information: Visual Studio version, Prof-UIS library configuration, Windows version and Windows Desktop you are using. Can the 10 pixel problem be reproduced with a Prof-UIS sample?
|
|
Offer Har
|
Aug 17, 2011 - 12:37 AM
|
Did you get my application that reproduced the bug?
|
|
Technical Support
|
Aug 18, 2011 - 2:10 AM
|
The problem was with your test project. We replied your e-mail with modified project attached. If you didn’t receive our answer yet, please provide us with alternative e-mail address.
|
|
Offer Har
|
Aug 30, 2011 - 11:14 AM
|
Dear Support,
I built your ’fixed’ project, but I still get the same bug... there are 10 pixels on the right and bottom.
Please explain how to fix it...
Thanks,
Ron.
|
|
Offer Har
|
Aug 14, 2011 - 10:58 PM
|
Dear Support, I found the bug, it was reproduced easily, and I will send you a sample application that reproduces it (please reply to it so I know you’ve received it). The difference between 2.90 and 2.92 is that when you change the style of a dialog to be Resizing from Dialog Frame, you add 10 pixels on the right and bottom sides of the dialog, which you didn’t add in 2.90, this allows the grip to be displayed. However, this does not look good, as dialog are not symmetric anymore... Please show a way to rollback to the behavior in 2.90 Thanks, Ron.
|
|
Offer Har
|
Aug 13, 2011 - 1:08 AM
|
To add to this: 1. There are also 10 pixels added at the bottom... 2. It happens both in fix size and resizeable frames.
|
|
MUKESH GUPTA
|
Aug 11, 2011 - 7:40 AM
|
I added the following statement to my project stdafx.h to generate xp style controls for the dialogs which don’t have profuis theme applied - #pragma comment(linker,"/manifestdependency:\"type=’win32’ name=’Microsoft.Windows.Common-Controls’ version=’6.0.0.0’ processorArchitecture=’x86’ publicKeyToken=’6595b64144ccf1df’ language=’*’\"")
I was able to get the style after this change but this resulted in application taking around 50% CPU usage continuously till the main window is open (which actually has the profuis theme applied).
Is there a known issue of incompatibility between profuis and xp style controls? Is there a workaround for the same?
|
|
Technical Support
|
Aug 19, 2011 - 2:51 AM
|
We cannot reproduce the performance problem using Prof-UIS sample applications. Could you please modify some sample project, make it working slow and send the modified project to us?
|
|
Technical Support
|
Aug 14, 2011 - 9:27 AM
|
There are no known issues related to themed common controls. Besides, all the sample applications provided with Prof-UIS use manifest_x86.xml manifest which you can find inside res folder. The manifest_x86.xml manifest contains the same dependency.
|
|
MUKESH GUPTA
|
Aug 16, 2011 - 6:58 AM
|
With reference to the issue reported, I found that the UI is getting update command irrespective of whether the UI is in focus or not and the number of requests coming in are very high, which was resulting in the high CPU usage. The following is a part of the stack from the application -
CWnd::SendMessageToDescendants AfxCallWndProc: CExtToolControlBar::WindowProc CExtControlBar::WindowProc CControlBar::WindowProc CWnd::WindowProc CWnd::OnWndMsg CExtControlBar::OnIdleUpdateCmdUI CExtBarButton::OnUpdateCmdUI CCmdUI::DoUpdate MyMainFrame::OnCmdMsg CFrameWnd::OnCmdMsg CCmdTarget::OnCmdMsg _AfxDispatchCmdMsg .....calls to my ON_UPDATE_COMMAND_UI functions
Please suggest.
|
|
Technical Support
|
Aug 17, 2011 - 12:59 AM
|
Please provide us with more details about where exactly the call stack listing points to the CExtToolControlBar::WindowProc() method. Additionally ... What happened in the MyMainFrame::OnCmdMsg() method and why it causes invocation of the CCmdUI::DoUpdate() method. This looks like some ticks with direct access to toolbar button objects.
|
|
MUKESH GUPTA
|
Aug 18, 2011 - 12:31 AM
|
The call stack provided is top down and not bottom up. CCmdUI::DoUpdate() is making a call to MyMainFrame::OnCmdMsg() and not otherwise.
Please let me know if you need any further details on this.
|
|
Eric
|
Aug 10, 2011 - 11:31 AM
|
How can I obtain a pointer to the CExtReportGridItem and CExtReportGridColumn from a CExtGridCell object?
|
|
Technical Support
|
Aug 14, 2011 - 9:27 AM
|
You can add CExtReportGridItem* and CExtReportGridColumn* properties into your grid cell class and initialize them after a grid cell instantiated.
|
|
Technical Support
|
Aug 11, 2011 - 4:56 AM
|
If you have LONG nColNo, LONG nRowNo coordinates of a data cell in a report grid, you can convert them into row/column handles/pointers:
LONG nColNo = . . .
LONG nRowNo = . . .
CExtReportGridWnd * pWndReportGrid = . . .
ASSERT( 0 <= nColNo && nColNo < pWndReportGrid->ColumnCountGet() );
ASSERT( 0 <= nRowNo && nRowNo < pWndReportGrid->RowCountGet() );
HTEEITEM hti = pWndReportGrid->ItemGetByVisibleRowNo( nRowNo );
ASSERT( hti != NULL );
CExtReportGridItem * pRGI = (CExtReportGridItem *)hti;
CExtReportGridColumn * pRGC = STATIC_DOWNCAST( CExtReportGridColumn, pWndReportGrid->GridCellGetOuterAtTop(nColNo) );
|
|
Eric
|
Aug 11, 2011 - 8:14 AM
|
No, I don’t have the nColNo and nRowNo. At least I don’t think I have them. I have a cell that derives from CExtGridCell. Let’s call it CMyCell. I want to override the Compare function:
int CMyCell::Compare(const CExtGridCell & other, DWORD dwStyleMask, DWORD dwStyleExMask) const
{...} Is it possible to have the CExtReportGridItem and CExtReportGridColumn pointers for THIS cell inside the CMyCell::Compare function? If I have these 2 pointers I can retrieve the data needed to do my custom compare. An alternative solution would be to have a pointer to the CExtReportGridWnd for THIS cell inside the CMyCell::Compare function? Is that possible? Also, CExtReportGridWnd is extremely memory heavy so I’d like to avoid adding a back pointer to the gird inside the cell object.
|
|
Lars Mohr
|
Aug 5, 2011 - 10:17 AM
|
Dear Support,
I think there is a focus problem with the CExtGridCellComboBox . If the focus is gone the combobox is still there. You can reproduce this with the Property Grid sample.
Regards
Lars
|
|
Technical Support
|
Aug 8, 2011 - 3:39 AM
|
Grid cell buttons in a property grid control depend on the focused grid row state rather than the focused control state.
|
|
Eric
|
Aug 4, 2011 - 9:10 AM
|
I have a serious problem.
Data is loaded into our application using a seperate thread.
This is to give the user the opportunity to cancel the thread if he or she wishes to do so.
The thread is cancled via a CExtButton inside the CExtStatusControlBar.
Our code for creating the button, and removing it, is exactly the same as in the StatusPanes sample application.
I get a crash during the following situation:
When a very small ammount of data is loaded, the thread starts and end very quickly.
So, the ammount of time that the button is "alive" is very short.
The problem is that the button receives a WM_ENABLE message after it’s been destroyed.
This cause the application to crash.
Please note that I am NOT creating and destroying this button across the thread boundary BUT by sending a message to the main frame.
We are using the lastest version of Prot-UIS and the problem was not present with that previous versions.
Any help would be appreciated.
|
|
Eric
|
Aug 4, 2011 - 12:37 PM
|
Thank you for the prompt reply. Sorry if my last message was not clear but I am well aware of basic multi threading concepts in MFC. As stated in my first message: PLEASE NOTE THAT I AM NOT CREATING AND DESTROYING THIS BUTTON ACROSS THE THREAD BOUNDARY BUT BY SENDING A MESSAGE TO THE MAIN FRAME. In other words, the button is created and destroyed IN THE MAIN THREAD OF THE APPLICATION. What trigs the creation and destruction of the button is a message send from a worker thread to the main thread via SendMessage. Anyway, the answer I was looking for was the one I found shortly after posting.
Changing
m_wndStatusBar.SetPaneControl(&m_MyButton, ID_PANE_BUTTON, true);
to
m_wndStatusBar.SetPaneControl(&m_MyButton, ID_PANE_BUTTON, false);
That way the control is not destroyed by the satus bar during removal.
Thus avoiding the crash.
|
|
Technical Support
|
Aug 4, 2011 - 10:55 AM
|
MFC and Prof-UIS are only partially multi-threaded. GDI is not multi-threaded at all. So, if you instantiated some CObject , CWnd or CExtButton in some thread, then you must invoke its methods in the same threads only. If the CWnd::FromHandlePermanent() method returns a non-NULL pointer to a CWnd object in some thread, it will return NULL pointer in any other thread. I.e. maps of MFC objects are per-thread individual. You can even consider different threads using different copies of MFC. The same is related to Prof-UIS. The CWnd::FromHandle() method invoked in different threads will return different CWnd * pointers for the same one HWND handle. But you can use HWND handle of CExtButton object in your secondary thread if the button is created in main UI thread. Additionally, Prof-UIS controls use one global instances of Prof-UIS paint manager and command manager components. This means you should use Prof-UIS controls in the main UI thread only.
|
|
Offer Har
|
Aug 4, 2011 - 1:46 AM
|
Hi, Is the HTML feature available for grid cells as well? If so, can you please provide a sample, if not - can you think of a way I can display formatted data (read-only) inside a cell (different words in different colors etc.) Thanks, Ron.
|
|
Technical Support
|
Aug 4, 2011 - 10:53 AM
|
Yes. You can use HTML in grid cells. Just use text like this:
<html><b>BoldText
The un-closed HTML tags feature is also supported.
|
|
Offer Har
|
Aug 3, 2011 - 10:01 PM
|
Dear Support, We are converting our systems to be compiled fro 64 bit machines. We did not see any build options for 64 bit in your projects. Is there any problem with Prof-UIS and 64 bit? Are you going to add such support? Thanks, Ron.
|
|
Technical Support
|
Aug 4, 2011 - 10:51 AM
|
Prof-UIS supports both AMD x64 and Itanium platforms. We provide stand alone project and solution files for 64 bit platforms.
|
|
Ulrich Heinicke
|
Jul 30, 2011 - 6:15 AM
|
Hi, how far are you with the accessibility for ribbon and grids? Our customer has an employee, which is blind. For him it is impossible to work with the program. So i need accessibility very soon. Thanks
|
|
Technical Support
|
Jul 30, 2011 - 12:00 PM
|
We are going to provide full accessibility support in Prof-UIS. Currently only high contrast white and black themes are automatically detected and supported.
|
|
MUKESH GUPTA
|
Jul 29, 2011 - 5:00 AM
|
As pointed in the image below, please suggest how to change the color for CExtTabWhidbeyWnd.
Thanks in advance.
|
|
Technical Support
|
Aug 2, 2011 - 1:08 AM
|
Please override the following virtual method and repaint the tab window’s background in it:
virtual void OnTabWndEraseClientArea(
CDC & dc,
CRect & rcClient,
CRect & rcTabItemsArea,
CRect & rcTabNearBorderArea,
DWORD dwOrientation,
bool bGroupedMode
);
|
|
Technical Support
|
Jul 29, 2011 - 11:32 AM
|
Here is the virtual method to override:
void CExtTabWhidbeyWnd::OnTabWndQueryItemColors(
LONG nItemIndex,
bool bSelected,
bool bHover,
bool bEnabled,
COLORREF * pclrBorder, // = NULL,
COLORREF * pclrBkLight, // = NULL,
COLORREF * pclrBkDark, // = NULL,
COLORREF * pclrText // = NULL
)
|
|
MUKESH GUPTA
|
Aug 1, 2011 - 4:13 AM
|
The function you have specified is for changing colors for the tabs displayed (as marked by green arrow in the following image) What I need is the change the color of the bar on which the tabs are displayed (as marked by red arrows)
http://i53.tinypic.com/au8oeb.png
Please suggest.
|
|
Celal Sen
|
Jul 29, 2011 - 3:20 AM
|
Hi, In standard CtreeCtrl, while editing item label, the editbox automatically expands or shrinks as you type. But in CExtTreeCtrl the editbox size is fixed and while typing, the text scrolls and you cannot fully see what you’ve typed until you hit ENTER. Could you fix it please. Thanks.
|
|
Celal Sen
|
Aug 2, 2011 - 2:01 AM
|
Windows XP, standard XP theme, standard 96 DPI and 1280x1024 resolution.
|
|
Technical Support
|
Aug 2, 2011 - 12:51 PM
|
We checked Windows XP. We haven’t encountered an in-place tree label editor smaller than expected. We suspect your desktop uses some custom fonts / font sizes. Could you please send us a screenshot demonstrating this small editor?
|
|
Technical Support
|
Aug 2, 2011 - 1:09 AM
|
We cannot reproduce this. Please provide us with more details. Which Windows OS version, desktop theme and DPI settings are you using?
|
|
Celal Sen
|
Aug 1, 2011 - 7:41 AM
|
Thank you for the quick update. But I’ve found a bug. First, edit a tree item label and set the label as "123". Then reedit the item label and start typing 123 and when you type 4 and 5, the first two characters scrolls left. Continue to type 678 etc, the editbox starts expandig but without the first two chars at left.
|
|
Technical Support
|
Jul 30, 2011 - 12:01 PM
|
Thank you for this feature request. Please drop us an e-mail to the support mail box at this web site and receive an answer with source code update for a resizable editor inside the CExtTreeCtrl control.
|
|
Evgueni Kolossov
|
Jul 28, 2011 - 1:51 AM
|
Is there the way to change the size of tabs in CExtTabPageContainerWnd - I want to make them bigger, for example?
|
|
Technical Support
|
Jul 28, 2011 - 4:26 AM
|
You should create a CExtTabPageContainerWnd -derived class which uses a custom tab control for re-measuring tab item sizes:
class CYourTabWnd : public CExtTWPC < CExtTabWnd >
{
public:
virtual void OnTabWndUpdateItemMeasure(
TAB_ITEM_INFO * pTii,
CDC & dcMeasure,
CSize & sizePreCalc
)
{
CExtTWPC < CExtTabWnd > :: OnTabWndUpdateItemMeasure( pTii, dcMeasure, sizePreCalc );
sizePreCalc.cx += 10; // increase width of tab items to 10 pixels
}
};
class CYourTabPageContainerWnd : public CExtTabPageContainerWnd
{
public:
virtual CExtTabWnd* OnTabWndGetTabImpl()
{
return new CYourTabWnd;
}
};
|
|
Evgueni Kolossov
|
Jul 28, 2011 - 7:36 AM
|
Not working at al - Throwing an exceptions all the time
|
|
Evgueni Kolossov
|
Jul 28, 2011 - 8:01 AM
|
My fault - need to use CExtTabOneNoteWnd
instead of CExtTabWnd in my case and it works. Thank you very much
|
|
MUKESH GUPTA
|
Jul 22, 2011 - 5:32 AM
|
Hi,
Is there any API available to delete the data saved to the registry after making call to ProfileBarStateSave. If not, how can I alternatively implement resetting of the layout of the window?
Thanks in advance.
|
|
Technical Support
|
Jul 22, 2011 - 1:15 PM
|
Resetting the control bar layout can be performed through: 1) Invoking the code which docks all the bars initially. 2) Loading some initial state data from a specific registry location or an MFC archive. 3) Deleting the relevant registry data and restarting the application. There is no API for deleting the registry state. But it’s not difficult to find out which registry key to delete:
CExtSafeString productsection2regkeypath_for_CExtControlBar(
__EXT_MFC_SAFE_LPCTSTR sProfileName,
__EXT_MFC_SAFE_LPCTSTR sSectionNameCompany, // under HKEY_CURRENT_USER\Software
__EXT_MFC_SAFE_LPCTSTR sSectionNameProduct // under HKEY_CURRENT_USER\Software\%sSectionNameCompany%
)
{
return CExtCmdManager::GetSubSystemRegKeyPath(
__PROF_UIS_REG_CONTROL_BAR,
sProfileName,
sSectionNameCompany,
sSectionNameProduct
);
}
|
|
MUKESH GUPTA
|
Jul 22, 2011 - 5:11 AM
|
Hi,
The docking position pointers visible vary as per the current theme set. Could you please let me know how to get position pointers for one theme while the active theme is another one. Say I have set the theme as CExtPaintManagerNativeXP while making call to InstallPaintManager but I want to display the pointers as in case of CExtPaintManagerOffice2007_Blue.
Thanks in advance.
|
|
Technical Support
|
Jul 22, 2011 - 1:13 PM
|
This is supported and demonstrated in the <span class="newgreen">TabbedBars</code> sample application. The following methods in it do selection of docking markers:
void CPageResizableBars::OnRadioDockingMarkers2005beta1()
void CPageResizableBars::OnRadioDockingMarkers2005beta2()
void CPageResizableBars::OnRadioDockingMarkers2005rc()
void CPageResizableBars::OnRadioDockingMarkers2008xp()
void CPageResizableBars::OnRadioDockingMarkers2008vista()
|