Subject |
Author |
Date |
|
Darius Mikalauskas
|
Nov 10, 2007 - 4:32 AM
|
Hello,
I would like to use CExtDynamicControlBar::OnSerializeDynamicProps override function to store parameters from dialog window placed inside this bar. How properly to get pointer to this CExtResizableDialog object?
Thank you in advance. Darius
|
|
Technical Support
|
Nov 10, 2007 - 1:05 PM
|
We would recommend that you be careful with your implementation of CExtDynamicControlBar::OnSerializeDynamicProps() . It should load and save exactly the same count of bytes from/to the archive. Otherwise, the code that loads the state of the dynamic bar site will fail. Please also note that the control bars are designed to contain only one child window. So, you can get it any time CExtDynamicControlBar * pBar = . . .
CWnd * pWnd = pBar->GetWindow( GW_CHILD );
ASSERT_VALID( pWnd );
ASSERT( pWnd->GetSafeHwnd() != NULL );
CExtResizableDialog * pDialog = STATIC_DOWNCAST( CExtResizableDialog, pWnd );
|
|
Jonathan Blank
|
Nov 9, 2007 - 8:09 PM
|
Hi, I am trying to add a menu to a window derived from CExtNCW or CExtNcFrameImpl (so it looks nice on XP), however, the code always crashes upon loading the menu. What am I doing wrong? Thanks in advance.
For example, in the "Form Editor" samples, I did the following and the dialog either does not show the menu or the program crashes upon exit.
// Derive from CExtNCW class CCustomizeToolBoxDlg : public CExtNCW<CExtResizableDialog>// , public CExtNcFrameImpl { CExtMenuControlBar m_wndMenuBar; // rest of the code unchanged from sample ................... }
Added the menu the following to CustomizeToolboxDlg.cpp, void CCustomizeToolBoxDlg::DoDataExchange(CDataExchange* pDX) { CExtResizableDialog::DoDataExchange(pDX); // rest of code unchanged from sample............. DDX_Control(pDX, IDR_MENU_TOOLBOX_CONTEXT, m_wndMenuBar); // rest of code unchanged from sample............. }
BOOL CCustomizeToolBoxDlg::OnInitDialog() { CExtResizableDialog::OnInitDialog();
// rest of code unchanged from sample.............
if (!m_wndMenuBar.LoadMenuBar(IDR_MENU_TOOLBOX_CONTEXT)) { ASSERT( FALSE ); return FALSE; } // rest of code unchanged from sample.............
}
// rest of code unchanged from sample.............
|
|
Technical Support
|
Nov 10, 2007 - 1:01 PM
|
The source code looks correct so we cannot say what’s wrong having only this snippet of code. It would be helpful to look at the content of the Call Stack window in your Visual Studio when the crash occurs. But, of course, a small test project demonstrating the problem would allow us to help you much faster and efficiently.
|
|
Darius Mikalauskas
|
Nov 9, 2007 - 3:33 PM
|
Hello,
I try to follow SDI_DynamicBars example but possible missed something. I created non persistant empty dynamic bar and is can be displayed as floating, dockable. It can be hided and viewed. But when I try to set it to Tabbed state I receive Assertion failure in CExtDynamicControlBar::BarStateSet function:
if( OnQueryChildHWND() == NULL ) { ASSERT( FALSE );...
Thank you in advance
Darius
|
|
Technical Support
|
Nov 10, 2007 - 12:56 PM
|
Please create a child window inside your dynamic control bar. Switching a dynamic control bar into document mode in the SDI application is implemented as follows
1) The control bar hides.
2) The child window changes its parent. Now the parent the tab page container window created as the main SDI view window.
3) In the tab page container, a tab item in the tab is registered for this child window .
4) The dynamic control bar is marked as switched into the document state.
As you can see from the above details, the dynamic control bar cannot be switched into document mode in an SDI application if a child window inside this control bar was not created.
|
|
Darius Mikalauskas
|
Nov 10, 2007 - 12:56 AM
|
I solved the problem: there was no any dialog attached to the control bar.
|
|
David Skok
|
Nov 9, 2007 - 1:02 PM
|
I am considering implementing a user interface design in my app similar to the Add/Remove Programs dialog in Control Panel. It is a list where the selected item includes a preview area that contains controls.
It looks like CExtReportGridWnd could work however it appears that preview mode is all or nothing in CExtReportGridWnd via ReportAutoPreviewModeSet. Is it possible to enable preview mode for one item at a time?
The other issue is the Cell in the preview area. Is it possible to implement a Cell that contains a dialog box?
|
|
Technical Support
|
Nov 17, 2007 - 10:53 AM
|
We received your e-mail and sent you a modified version of your project which instantiates a dialog inside the cellās preview area.
|
|
Technical Support
|
Nov 10, 2007 - 12:50 PM
|
We would prefer to have a test project or a compiled application which demonstrates the design described in your message. It seems there should be no problems with the design you described.
|
|
David Skok
|
Nov 16, 2007 - 7:20 AM
|
I put together a sample to attempt to use the preview area in a unique way. I have found that a cell in the preview area can display a check box but it’s state cannot be changed, nor can the text be edited. It will not display an elipsis button. It seems that the cell in the preview area is not selectable for editing at all unless there is something I missed. Assuming editing in the preview area can be worked out, ultimately I would like to have the cell in the preview area return a handle to a dialog when OnInplaceControlCreate is called for the cell. I looked at the source that creates the editor and see that it would very difficult for me to figure out how to make a dialog work as a cell editor. If it could work please consider it as a feature request.
I sent you my test project.
Thanks, Dave
|
|
Technical Support
|
Nov 9, 2007 - 2:02 PM
|
The preview area in the report grid is a standalone grid cell object. Itās possible to assign this cell only for some rows or implement your own grid cell class which implements the CExtGridCell::MeasureCell() virtual method which measures itself depending on the focused row state. Unfortunately grid cells cannot contain HWND-based UI items such as dialogs. Itās possible to implement a custom grid cell class which looks like "preview area" in the Add/Remove Programs window on Windows 2000 and Windows XP and even make the "Change/Remove" program as a custom layout/painted ellipsis button which is a built-in button in each grid cell.
|
|
David Skok
|
Nov 9, 2007 - 3:01 PM
|
I see that it would not be possible to implement the Add/Remove control exactly as is using the report grid. If the control operated slightly different as follows, could I make it work?
Use a report grid that displays all items without preview. The report grid contains a column that displays a button labeled "Edit" in the focused item. When the user presses that button, the preview is opened for that item. The Gridcell in the preview is focused and contains an in place edit control that is a dialog box. When the user is done editing, they press a button in the in place edit dialog which closes it and removes the preview area. The dialog will also be closed if any other item is focused.
Could this work?
|
|
Michael Valentine
|
Nov 9, 2007 - 10:29 AM
|
We seem to be experiencing problems with the combobox selection since upgrading to Prof-UIS 2.81. Previously you could use the mouse wheel or cursor keys to change the selection. Now this does not seem to trigger off an OnSelChange message, even if you press return. The actual text in the combox changes, but no event is fired. Should I not be using the ON_CBN_SELCHANGE event any more? If the items are selected by clicking the mouse then it works.
|
|
Technical Support
|
Nov 9, 2007 - 1:36 PM
|
This is already fixed. Please contact us at support@prof-uis.com so we can provide you with the latest source code.
|
|
Paul Cowan
|
Nov 9, 2007 - 7:39 AM
|
Popup menus should not have shortcut keys (as per the MS UI Guidelines document), yet CExtPopupMenuWnd seems to automatically add the shortcuts to popups. How do I not have the shortcuts added?
|
|
Technical Support
|
Nov 19, 2007 - 11:37 AM
|
We are sorry for the delay with this reply. We implemented the both features:
1) You can now hide keyboard accelerators in menu items by specifying TPMX_HIDE_KEYBOARD_ACCELERATORS when invoking CExtPopupMenuWnd::TrackPopupMenu() . This flag is used in context menus in the DRAWCLI sample.
2) The CExtReportGridWnd control now supports item-by-item horizontal scrolling.
|
|
Paul Cowan
|
Nov 13, 2007 - 7:00 AM
|
A new flag to disable the shortcut keys would be nice. We prefer not to modify your code as it makes updates harder to use.
|
|
Technical Support
|
Nov 13, 2007 - 2:45 AM
|
We think the popup menu code should be left intact. We can add some new TPMX_*** flags for CExtPopupMenuWnd::TrackPopupMenu() to hide shortcut keys or we can add a per-menu item option.
|
|
Paul Cowan
|
Nov 12, 2007 - 8:45 AM
|
That is how I figured it worked.
As MS UI Guidelines say popup menus should not have short cut key, it would be nice to have a way of turning them off in the CExtPopupMenuWnd class. I changed the CExtPopupMenuWnd::MENUITEMDATA::SetAccelText function to not set m_sAccelText and I no longer have the short cuts.
|
|
Technical Support
|
Nov 9, 2007 - 1:54 PM
|
Command items in Prof-UIS menus do not keep menu text nor shortcut text by default. They get this data from CExtCmdItem command description objects stored in the command manager. If you updated the command manager from two menus containing a ID_EDIT_COPY command and one item has the string &Edit while another has the string &Edit\tCtrl+C,the command manager will try to gather maximum possible details about the ID_EDIT_COPY command and it will remember the Ctrl+C accelerator text in the CExtCmdItem object which describes the ID_EDIT_COPY command. This means if you need the ID_EDIT_COPY command in some of your menus without accelerator keys displayed, then you should make this menu item having some other unique command identifier which have no accelerator description in the command manager.
|
|
Paul Cowan
|
Nov 9, 2007 - 11:11 AM
|
I have non-customizable popup menus and context menus. I know about the text after the \t. The problem is I don’t have the short-cut key in the resource for the pop-up menu, but it is in the standard menu. Once I add a short-cut to any menu, all menus get it.
|
|
Technical Support
|
Nov 9, 2007 - 10:42 AM
|
There are two cases:
1) Customizable applications. We have the following two groups of menus: (1) popup menus displayed from the menu bar and from toolbars and (2) ribbon bar popup menus. All these popup menus are controlled by the customize site and shortcut keys are displayed automatically. The shortcut key text is stored in the accelerator table. To remove shortcut key text from menu items, you should remove the appropriate entries from the accelerator table.
2) Non-customizable popup menus and context menus. The shortcut keys are displayed if you specify them in the menu item text either manually or in the menu resource. To remove shortcut key text from menu items, you should simply remove part of the text in a menu item starting from the \t character.
|
|
Chris Anderson
|
Nov 8, 2007 - 6:20 PM
|
I’m wondering whether it’s a bug or I missed something here. We were not able to set/add a bitmap to a menu item of system menu.
Our legacy app would dynamically change the system menu of the main frame window. The main frame wnd is derived from CExtNCW<CUfcFrameWnd>, we also use CExtMenuControlBar inside the main frame window
Based on the context, we need to update the system menu or insert a new menu item. what we did was
- get the system menu handler
hMenu = ::GetSystemMenu(hWndFrame, FALSE);
- update the system menu ::ModifyMenu( hmenu, nPos, MF_BYPOSITION | MF_BITMAP, uMenuID, (LPCTSTR)hBmp );
But when I looked at the system menu, it shows an empty menu item, there is neither icon nor string. This approach works well with the text, as I can add new string menu item without any problem. Another problem I found is that owner draw menu doesn’t work.
any suggestion ? Should I overwrite CExtMenuControlBar::_TrackFrameSystemMenu() ?
thanks
|
|
Chris Anderson
|
Nov 11, 2007 - 11:47 AM
|
sorry for the typo when I copied and pasted the code snippet. I just send a sample project which shows the problem, could you take a look
thanks
|
|
marc uchida
|
Nov 8, 2007 - 4:36 PM
|
We had a tabbed tool bar (CExtTabbedToolControlBarFlat/CExtToolControlBar) with buttons (CExtBarButton) that have an icon and text (underneath the icon) in each one. With version 262 it looked just fine. After updating to 281 the text is still centered but the icons are no longer, with some are left justified, some line up to the text, some are centered, seems random. Any ideas on what has changes between versions? thanks, marc
|
|
marc uchida
|
Nov 8, 2007 - 5:19 PM
|
aha. I found that I need to add a line of code to our derived class. Our virtual function override of CExtBarButton’s PaintCompond() needs to set the icon alignment. Right after CExtPaintManager::PAINTPUSHBUTTONDATA _ppbd is created you can set the _ppbd member variable for m_nIconAlignment. Some default must have changed somewhere as this wasn’t needed before. The FunnyBars example was helpful here thanks. marc
|
|
Eric Houvenaghel
|
Nov 8, 2007 - 12:57 PM
|
I am getting a crash when a large number of rows are inserted into the CExtReportGridWnd. The crash happens when the following line of code fails (line 11195 in ExtGridWnd.cpp):
LPBYTE pMemoryNew = (LPBYTE)::realloc( pMemory, size_t(nSize)+sizeof(_CRT_header_chunk_t) );
realloc returns NULL. I tested the grid with 20 columns, 35000 rows and CExtGridCellComboBox each containing 4 "Hello World" strings. This takes up a very large amount of memory ~756MB!!! Seems like alot but that’s what it says in Task Manager. The funny thing is if I replace the CExtGridCellComboBox for CExtGridCellStringDM I can go past the 756MB range and, although not very usuable, the application does not crash. The crash really seems to be linked to the insertion of items in CExtGridCellComboBox. The crash does not happen if the CExtGridCellComboBox does not contain items. Last but not least, I think the crash could be avoided by putting an if statement on line 1011 in ExtTreeGridWnd.cpp.
_DP.RowInsert( nInsertOffset, nInsertCount ); to if(_DP.RowInsert( nInsertOffset, nInsertCount )) {
return NULL; }
Cheers
|
|
Technical Support
|
Nov 13, 2007 - 2:46 AM
|
Yes, grouping is not available in virtual mode because the grid must keep the entire data before re-grouping it.
|
|
Technical Support
|
Nov 9, 2007 - 10:49 AM
|
We confirm that the following line in the CExtTreeGridDataProvider::_Tree_NodeInsert() method in the ../Prof-UIS/Src/ExtTreeGridWnd.cpp file: _DP.RowInsert( nInsertOffset, nInsertCount ); should be replaced with if( ! _DP.RowInsert( nInsertOffset, nInsertCount ) )
return NULL; The CExtGridCellComboBox class is convenient but not memory efficient. Each instance of this class contains its own only collection of strings to be displayed in the pop-up list box. Itās not efficient to instantiate a lot of such combo box cells with exactly the same content. Besides this class is based on CExtGridCellString , which is a simple text cell based on CString . The CExtGridCellStringDM class is a text cell which keeps text inside an internal memory manager of the gridās data provider which makes it more memory efficient and faster. But in any case, if you need to show thousands or millions of rows in some grid, then we would recommended to make it virtually cacheable. The report grid control can be only memory based.
|
|
Eric Houvenaghel
|
Nov 12, 2007 - 9:58 AM
|
Thanks for the reply. I have derived a class from CExtGridCellComboBox. This class will load the combo items only when the drop list button is clicked. That reduces the memory usuage greatly. We have looked into the virtual mode before. However, the feature that interests us is the grouping feature. From what I understand, one cannot have the grouping feature in virtual mode.
|
|
David Skok
|
Nov 8, 2007 - 6:51 AM
|
I know how to suppress painting of outlines in a tree. I would also like to place root items against the left edge of the control as they remain indented when outlines aren’t painted. How can I do this?
Thanks, Dave
|
|
Technical Support
|
Nov 9, 2007 - 11:31 AM
|
Could you send us a screenshot demonstrating what the tree grid should look like. You can override the CExtTreeGridWnd::OnTreeGridQueryDrawOutline( . . . ) virtual method and return a flag which indicates if the outline should be painted inside a particular grid cell in the tree grid window. You can override the CExtTreeGridWnd::OnTreeGridQueryColumnOutline( LONG nColNo ) virtual method and return a flag which indicates if the outline is present for column nColNo . You can override the CExtTreeGridWnd::OnGbwAdjustRects() virtual method and measure the custom outline area in particular grid cells in the column which contains the tree outline. You can override the CExtTreeGridWnd::OnGbwPaintCell() virtual method and paint completely custom tree outlines in the areas reserved by the CExtTreeGridWnd::OnGbwAdjustRects() virtual method.
|
|
David Skok
|
Nov 9, 2007 - 12:25 PM
|
Overriding OnTreeGridQueryColumnOutline and returning false produces the result I want. Thank you for the suggestion.
My intention is to use the CExtTreegrid like a list box where random inserting within the list is easier to do than with CExtGridWnd or CExtReportGridWnd.
|
|
Jonathan Blank
|
Nov 7, 2007 - 12:38 PM
|
I have a menu setup using TPMX_PALETTE mode.
pPopup->TrackFlagsSet(pPopup->TrackFlagsGet() | TPMX_PALETTE);
Is it possible to make a tooltip appear when user mouse overs one of the menu item?
Thanks.
|
|
Suhai Gyorgy
|
Nov 8, 2007 - 4:09 AM
|
With default settings, Prof-UIS popup menus do not display tooltips. If you want to change this, you should set the global CExtPopupMenuWnd::g_eTtsClassicMenu variable to a value other than CExtPopupMenuTipWnd::__ETS_NONE . But since this variable is global, it will affect all popup menus in your application. I can only think of one solution to have the tooltips on the palette popup menus only and not on any other popup menu. But it feels like a little hacking.
There’s a message CExtPopupMenuWnd::g_nMsgPrepareOneMenuLevel , which is fired every time any popup menu appears. If you add a new entry in your mainframe message map like this:
ON_REGISTERED_MESSAGE(CExtPopupMenuWnd::g_nMsgPrepareOneMenuLevel, OnExtOneMenuLevelPrepare)
, then you can set the above mentioned global variable to the appropiate value, depending on the popup menu appearing: LRESULT CMainFrame::OnExtOneMenuLevelPrepare(WPARAM wParam, LPARAM lParam)
{
CExtPopupMenuWnd::MsgPrepareMenuData_t *pData =
reinterpret_cast<CExtPopupMenuWnd::MsgPrepareMenuData_t *>( wParam );
ASSERT( pData != NULL );
CExtPopupMenuWnd * pPopup = pData->m_pPopup;
ASSERT( pPopup != NULL );
if( (pPopup->TrackFlagsGet()&TPMX_PALETTE) == 0 )
CExtPopupMenuWnd::g_eTtsClassicMenu = CExtPopupMenuTipWnd::__ETS_NONE;
else
CExtPopupMenuWnd::g_eTtsClassicMenu = CExtPopupMenuTipWnd::__ETS_RECTANGLE;
return 0;
}
I haven’t tried the code though so there might be mistakes.
|
|
Offer Har
|
Nov 7, 2007 - 11:11 AM
|
Dear support, there are several issues that were supposed to be supplied a long time ago according to your own declarations. It seems that you are trying to avoid my repeating request to know if you will ever intend to fulfill you own promises... I wonder if this time I will get any reply from you, or you will just keep on ignoring my simple request to know if you intend to supply these features/tutorials. Regards, Ron.
|
|
Christian Marty
|
Nov 7, 2007 - 11:00 AM
|
As one prints the Simple-Grid example on several types of printers (LBP2900 Canon, S300 Canon, PDF, MS Image Writer), it misses systematically approximately ten lines per page. The same printers tested with MS Excel, function impeccably. How to correct the problem in the Simple-Grid example?
|
|
Christian Marty
|
Nov 8, 2007 - 7:47 AM
|
Version 2.8.
But the problem is not related to the example properly, since we note the same concern with the project under development. We think that the origin must be in the class CExtPPVW < CExtGridWnd > itself.
|
|
Suhai Gyorgy
|
Nov 8, 2007 - 4:23 AM
|
There has been a similar problem for another user back in April this year. I think it has been solved, so maybe upgrading your ProfUIS version would solve your problem, too (depending on which version you are using now).
|
|
Monte Variakojis
|
Nov 7, 2007 - 9:47 AM
|
Hello Group, I’m having a bit of a problem with using the CExtLabel (CStatic) when subclassing. I would like the AfxMessageBox to share the same interface as rest of the application. In my CWinApp (CMyApp) I’ve declared the DoMessageBox method: int CGPSClockMonitorApp::DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt)
{
CExtNCW<CMyMessageBoxWnd> dlg;
AfxHookWindowCreate( &dlg );
int nReturn = CWinApp::DoMessageBox(lpszPrompt, nType, nIDPrompt);;
AfxUnhookWindowCreate();
return nReturn;
}
In the CMyMessageBoxWnd class I’m using the "SubclassAllControlsDynamically" that was supplied in the FAQ. This allowed me a convient place to subclass all of the clildren like this: void CMyMessageBoxWnd::OnPaint()
{
CPaintDC dcPaint(this); // device context for painting
// This may not be a good technique, but it works - Suggestions where
// to subclass this?
if(m_bFirstTime == TRUE)
{
m_bFirstTime = FALSE;
SubclassAllControlsDynamically(m_hWnd);
}
.
.
.
}
All seems to function very well. However the CExtLabel does not expand the control characters in the string nor does it wrap the text within the desired rectangle. Example using "SubclassAllControlsDynamically" and CExtLable:
text format: _T("WARNING!\n\nThis operation will erase the current temperature compensation table and create a new one. To ccomplish this, a temperature chamber will be necessary to complete this task. Do you want to proceed with the temperature characterization?")
In the "SubclassAllControlsDynamically" function I replace the CExtLabel with CStatic I get the following (desired format):
You can see that the text is wrapped and follows the formation. I have tried to "ModifyStyle" in the "SubclassAllControlsDynamically" function to encompass the SS_LEFT style with no success. Do you have any suggestions how to get the "CExtLabel" to behave like the CStatic? Any comments welcome. Thanks for a great class library. Regards, Monte--
|
|
Monte Variakojis
|
Nov 8, 2007 - 9:27 AM
|
support -
Thanks for the help. That did the trick. Pizza-n-Beer next time I’m in town.
Monte---
|
|
Technical Support
|
Nov 8, 2007 - 7:16 AM
|
Here is the latest version of the DoPaint method that fixes all the label problems void CExtLabel::DoPaint(
CDC * pDC,
CRect & rcClient
)
{
ASSERT_VALID( this );
ASSERT_VALID( pDC );
CExtMemoryDC dc(
pDC,
&rcClient
);
CRgn rgnClient;
if( rgnClient.CreateRectRgnIndirect( &rcClient ) )
dc.SelectClipRgn( &rgnClient );
OnEraseBackground( dc, rcClient );
DWORD dwWndStyle = GetStyle();
DWORD dwWndType = (dwWndStyle&SS_TYPEMASK); bool bCenterImage = ( (dwWndStyle&SS_CENTERIMAGE) != 0 );
if( ! m_bmp.IsEmpty() )
{
bool bSmootherAsPossible = true;
if( m_eImageMode == eStretch )
{
m_bmp.AlphaBlendSkinParts(
dc.GetSafeHdc(),
rcClient,
CRect(0,0,0,0),
CExtBitmap::__EDM_STRETCH,
true,
bSmootherAsPossible
);
}
else if( m_eImageMode == eTile )
{
m_bmp.AlphaBlendSkinParts(
dc.GetSafeHdc(),
rcClient,
CRect(0,0,0,0),
CExtBitmap::__EDM_TILE,
true,
bSmootherAsPossible
);
}
else if( m_eImageMode == eAlign )
{
CSize szSize = m_bmp.GetSize();
CRect rcDst(
rcClient.left,
rcClient.top,
rcClient.left + szSize.cx,
rcClient.top + szSize.cy
);
switch( dwWndType )
{
case SS_RIGHT:
rcDst.OffsetRect( rcClient.right - rcDst.right, 0 );
break;
case SS_CENTER:
rcDst.OffsetRect( ( (rcClient.right - rcClient.left) - (rcDst.right - rcDst.left) ) / 2, 0 );
break;
default:
// all the other types assumed as left
break;
}
CRect rcSrc( 0, 0, szSize.cx, szSize.cy );
rcDst.top = max( rcDst.top, rcClient.top );
rcDst.left = max( rcDst.left, rcClient.left );
rcDst.bottom = min( rcDst.bottom, rcClient.bottom );
rcDst.right = min( rcDst.right, rcClient.right );
if( ::RectVisible( dc.GetSafeHdc(), &rcDst ) )
{
INT nOldStretchBltMode =
bSmootherAsPossible
? ( ::GetStretchBltMode( dc.m_hDC ) )
: ( COLORONCOLOR )
;
if( bSmootherAsPossible )
::SetStretchBltMode(
dc.m_hDC,
( g_PaintManager.m_bIsWinNT )
? HALFTONE
: COLORONCOLOR
);
m_bmp.AlphaBlend(
dc.m_hDC,
rcDst,
rcSrc
);
if( bSmootherAsPossible )
::SetStretchBltMode(
dc.m_hDC,
nOldStretchBltMode
);
}
}
}
else if( dwWndType == SS_ICON )
{
HICON hIcon = GetIcon();
if( hIcon != NULL )
{
CExtCmdIcon _icon;
_icon.AssignFromHICON( hIcon, true );
CSize szIcon = _icon.GetSize();
int nOffsetX = bCenterImage ? (rcClient.Width() - szIcon.cx) / 2 : 0;
int nOffsetY = bCenterImage ? (rcClient.Height() - szIcon.cy) / 2 : 0;
_icon.Paint(
PmBridge_GetPM(),
dc.GetSafeHdc(),
rcClient.left + nOffsetX,
rcClient.top + nOffsetY,
-1,
-1
);
}
}
else
{
CExtSafeString strText;
int nTextLen = GetWindowTextLength();
if( nTextLen > 0 )
{
GetWindowText( strText.GetBuffer( nTextLen + 2 ), nTextLen + 1 );
strText.ReleaseBuffer();
}
if( strText.GetLength() > 0 )
{
DWORD dwDrawTextFlags = 0;
switch( dwWndType )
{
case SS_RIGHT:
dwDrawTextFlags = DT_RIGHT;
break;
case SS_CENTER:
dwDrawTextFlags = DT_CENTER;
break;
case SS_LEFTNOWORDWRAP:
dwDrawTextFlags = DT_LEFT;
break;
default:
// all the other types assumed as left
dwDrawTextFlags = DT_LEFT;
break;
} // switch( dwWndType )
// do tabs expanding
if( strText.Find( _T(ā\tā) ) != -1 )
dwDrawTextFlags |= DT_EXPANDTABS;
if( (dwWndType == SS_SIMPLE)
|| (dwWndStyle&SS_CENTERIMAGE) != 0
|| (dwWndStyle&SS_ENDELLIPSIS) != 0
|| (dwWndStyle&SS_PATHELLIPSIS) != 0
)
{
dwDrawTextFlags |= DT_SINGLELINE;
if( (dwWndStyle&SS_CENTERIMAGE) != 0 )
dwDrawTextFlags |= DT_VCENTER;
if( (dwWndStyle&SS_ENDELLIPSIS) != 0 )
dwDrawTextFlags |= DT_END_ELLIPSIS;
if( (dwWndStyle&SS_PATHELLIPSIS) != 0 )
dwDrawTextFlags |= DT_PATH_ELLIPSIS;
}
else
{
dwDrawTextFlags |= DT_WORDBREAK;
}
if( dwWndType == SS_LEFTNOWORDWRAP )
dwDrawTextFlags &= ~(DT_WORDBREAK|DT_SINGLELINE);
if( (dwWndStyle&SS_NOPREFIX) != 0 )
dwDrawTextFlags |= DT_NOPREFIX;
bool bEnabled = IsWindowEnabled() ? true : false;
OnDrawLabelText(
dc,
rcClient,
strText,
dwDrawTextFlags,
bEnabled
);
} // if( strText.GetLength() > 0 )
}
PmBridge_GetPM()->OnPaintSessionComplete( this );
if( rgnClient.GetSafeHandle() != NULL )
dc.SelectClipRgn( &rgnClient );
}
|
|
Suhai Gyorgy
|
Nov 8, 2007 - 4:33 AM
|
There have been posts reporting the CExtLabel class in the latest ProfUIS v2.81 ignoring "\n" and not handling wordwrapping right . The first problem can be solved like this: Change CExtLabel.cpp @ line 238:
It is now: bool bForceSingleLine = ( strText.Find( _T("\n") ) >= 0 ) ? true : false;
It should be: bool bForceSingleLine = ( strText.Find( _T("\n") ) >= 0 ) ? false : true;
But the second problem is not solved yet (or at least the solution hasn’t appeared on the forums yet) and it might involve the above-mentioned lines to be changed again.
|
|
Oliver Burkert
|
Nov 6, 2007 - 8:00 AM
|
Two weeks ago, I’ve reportet two bugs (see threads "Ribbon layout bug" and "Bug in ribbon animation" below). I have still received no answer. I’ve just paid over 500$ for the new version because my old subscription has expired and the new version fixed some bugs. Now I get new bugs and no help.
|
|
Technical Support
|
Nov 9, 2007 - 10:28 AM
|
We fixed the issue with a wrong ribbon layout so the layout now does not depend on screen resolution. Please contact us at support@prof-uis.com so we can provide you with the latest source code. We are still working on the ribbon animation issue.
|
|
Technical Support
|
Nov 6, 2007 - 1:21 PM
|
We will fix both two bugs in a couple of days. Sorry for the delay.
|
|
Technical Support
|
Nov 6, 2007 - 1:12 PM
|
We are really sorry for the delay with this reply. The bug is reproduced and a bug fix will be available within a couple of days. We will notify you about that.
|
|
Offer Har
|
Nov 5, 2007 - 7:27 AM
|
|
|
Technical Support
|
Nov 6, 2007 - 8:43 AM
|
You can do this by handling WM_MOUSEMOVE in a CWnd -derived window that has the following property: CExtPopupMenuTipWnd m_wndCoolTip; Let’s assume your window has hit-tested some CRect rcItem part of it in its client coordinates and you would like to display a tooltip for this part: CRect & rcItem = . . .
CRect rcScreenArea = rcItem;
ClientToScreen( &rcScreenArea );
m_wndCoolTip.SetText( _T("tooltip text here") );
m_wndCoolTip.SetTipStyle( CExtPopupMenuTipWnd::__ETS_BALLOON );
m_wndCoolTip.Show( this, rcScreenArea ); The m_wndCoolTip control will be displayed. Then it will be hidden as soon as the mouse has moved out of the rcItem rectangle or some other application gets activated over the desktop.
|
|
Pierre MEDART
|
Nov 5, 2007 - 4:08 AM
|
Hi,
our QA team uses a tool : QTP
Previously, it recognized the CMenu as objects and therefore we could automate a lot of test.
This is no longer possible according to their feedback. What can be done?
Regards
Pierre
|
|
Technical Support
|
Nov 5, 2007 - 11:31 AM
|
All known automated test tools can work with standard built-in window menu lines and toolbar common controls. But popup menus, menu bars and toolbars in Prof-UIS are custom controls written from scratch and testing tools do not recognize them. Prof-UIS menus are not based on the Windows menus. They have much more features and do not compatible with HMENU windows. Prof-UIS menu items are based on CExtCmdItem command description objects stored in the CExtCmdProfile command profile in the CExtCmdManager command manager (accessed with the g_CmdManager global smart pointer variable). This design allows Prof-UIS menus and toolbars to automatically share command parameters between different interface objects. So this technique makes Prof-UIS menus inaccessible from third party applications. You can use mouse click or keyboard input emulation provided by a testing tool instead of any APIs related to menus and toolbars.
|
|
Claus Wippich
|
Nov 2, 2007 - 5:34 AM
|
Hi,
we have problems with the new version 2.81. We get some linker errors in our projects that use Prof-UIS:
scanitview.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall CExtPopupMenuWnd::_DrawAnimatedState(class CDC &)" (?_DrawAnimatedState@CExtPopupMenuWnd@@MAEXAAVCDC@@@Z) scanitview.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall CExtPopupMenuWnd::_GetVisibleItems(struct HDC__ *,class CArray<struct CExtPopupMenuWnd::VisibleItemDefinition_t,struct CExtPopupMenuWnd::VisibleItemDefinition_t &> &)" (?_GetVisibleItems@CExtPopupMenuWnd@@MAEXPAUHDC__@@AAV?$CArray@UVisibleItemDefinition_t@CExtPopupMenuWnd@@AAU12@@@@Z) scanitview.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall CExtPopupMenuWnd::_GetVisibleItemsPalette(struct HDC__ *,class CArray<struct CExtPopupMenuWnd::VisibleItemDefinition_t,struct CExtPopupMenuWnd::VisibleItemDefinition_t &> &)" (?_GetVisibleItemsPalette@CExtPopupMenuWnd@@MAEXPAUHDC__@@AAV?$CArray@UVisibleItemDefinition_t@CExtPopupMenuWnd@@AAU12@@@@Z) scanitview.obj : error LNK2001: unresolved external symbol "protected: virtual bool __thiscall CExtPopupMenuWnd::_IsPaletteItemWrap(int)const " (?_IsPaletteItemWrap@CExtPopupMenuWnd@@MBE_NH@Z)
We are working with Visual Studio 2005 and Windows XP.
What’s wrong?
|
|
Technical Support
|
Nov 2, 2007 - 7:53 AM
|
It looks like you switched to 2.81 by unpacking the ZIP file over the installed 2.6x folders and not all source files were overridden correctly or . . . it looks like you have two Prof-UIS versions on your computer and are compiling your project using 2.81 header files and then linking it with 2.6x libraries. Did you triy to remove the old version completely before installing the new one?
|
|
Claus Wippich
|
Nov 5, 2007 - 1:28 AM
|
Ok, after removing all installed paths from my local system it worked. Thanks.
|
|
Michele Cillo
|
Nov 1, 2007 - 5:51 PM
|
Hi all. I’m using print preview functionality from CExtPPVW template class for display database report directly in print preview mode. All works fine, but i need add some button to to CExtPPVW_ToolBar embedded in CExtPPVW_HostWnd for manage other operation, such as export in some format, reload report, ecc. How can I add other buttons to toolbar and how I manage events fired from this new buttons? Thanks in advace.
|
|
Michele Cillo
|
Nov 3, 2007 - 8:50 AM
|
I found a solution myself. I created CMyExtPPVW_HostWnd : public CExtPPVW_HostWnd and in this I added new message map entries with ON_COMMAND and ON_UPDATE_COMMAND_UI macros. Then, in command handlers, I forwarded my button’s message to my CExtPPVW < CScrollView > using m_pPpvPrintable pointer.
In CExtPPVW < CScrollView > I overrided OnCmdMsg and added this snippet:
switch( nCode ) { case CN_COMMAND: switch( nID ) { ... case ID_FILE_PRINT_PREVIEW: CExtPaintManager::stat_PassPaintMessages(); if( m_bPrintPreviewEnabled && IsPrinterAvailable() ) { if( m_bPrintPreviewCheckMarkCmdStyle && m_pWndPP->GetSafeHwnd() != NULL ) m_pWndPP->OnPreviewClose(); else CExtPPVW_Printable::DoPrintPreview( true, false, RUNTIME_CLASS(CMyExtPPVW_HostWnd) ); } return TRUE; ... } break; }
for using my CExtPPVW_HostWnd derived class.
So, with others little adjustment, now all work fine. In any case, thanks for yuor interest.
|
|
Michele Cillo
|
Nov 2, 2007 - 3:30 PM
|
Thanks for response, but I have some problem for implementing it. I’m using CExtPPVW < CScrollView > and I overrided CExtPPVW_Printable::OnInitializePrintPreviewToolBar() function and added my buttons in toolbar. My buttons, of course, are disabled. Now, I want to handle CN_COMMAND and CN_UPDATE_COMMAND_UI in my class, ma my buttons doesn’t send WM_COMMAND to my CExtPPVW < CScrollView >. I experimented with OnCmdMsg and with ON_UPDATE_COMMAND_UI and ON_COMMAND macro, but noone works. What is the simpler solution to this message routing problem?
|
|
Technical Support
|
Nov 2, 2007 - 9:19 AM
|
Thank you for the interesting question. You should override the CExtPPVW_Printable::OnInitializePrintPreviewToolBar() virtual method in a CExtPPVW < CExtGridWnd > - derived class (or in a CExtPPVW < CExtTreeGridWnd > - derived class, or yet in a CExtPPVW < CExtReportGridWnd > - derived class). Your method should invoke the parent class method and then modify content of the CExtPPVW_Printable::m_pWndPP->m_pPpvWndToolBar toolbar. You can also implement the CExtPPVW_Printable::OnInitializePrintPreviewToolBar() toolbar from scratch using source code of original method. Your custom commands in this toolbar should be handled/updated in your CExtPPVW < CExtGridWnd > - derived class.
|
|
marc uchida
|
Nov 1, 2007 - 12:58 PM
|
I have a dialog (CExtResizableDialog ) with a combo box control in it (CExtComboBox) that has its property for Type set to "Simple". This worked fine with ProfUIS 262, but now causes a crash upon DoModal() since I upgraded to 281. If I change the type to "Dropdown" or "DropList" it works fine in 281. The "Simple" type will also work if I shrink the combo box control in the dialog to have only the name part and NOT have the list part (ie. height of only 1 line) . There appears to be something wrong with the creation of the list contents part of the Simple type combobox. thanks for any help.
|
|
Technical Support
|
Dec 6, 2007 - 8:01 AM
|
We still unable to reproduce the assertion failure but we can offer the following workaround that fixes this problem: LRESULT CExtComboBoxBase::OnCtlColor( WPARAM wParam, LPARAM lParam )
{
ASSERT_VALID( this );
wParam;
bool bSimpleMode = false;
DWORD dwStyle = GetStyle();
if( (dwStyle&CBS_SIMPLE) == CBS_SIMPLE
&& (dwStyle&CBS_DROPDOWN) != CBS_DROPDOWN
&& (dwStyle&CBS_DROPDOWNLIST) != CBS_DROPDOWNLIST
)
bSimpleMode = true;
if( (!bSimpleMode)
&& m_wndPopupListBox.m_hWnd == NULL
&& lParam != 0L
&& lParam != (LPARAM)m_hWnd
&& FromHandlePermanent( (HWND)lParam ) == NULL
)
m_wndPopupListBox.SubclassWindow( (HWND)lParam );
return Default();
}
|
|
marc uchida
|
Dec 5, 2007 - 11:17 AM
|
ProfUIS 282 was made available to us for download. It fixes the problem. I guess you will have to contact support regarding this, if it is not available at their usual download locations. cheers
|
|
David Heitbrink
|
Dec 5, 2007 - 10:08 AM
|
I am getting almost this same exact error with damn near the same call stack as the one posted here. Has there been any resolution to this? This first happened when I when I went from v2.81 from v2.80.
|
|
Technical Support
|
Nov 7, 2007 - 11:06 AM
|
We confirm that this bug presents in v.2.81. Sorry for not being able to reproduce it at once. We made some refactoring of the combo box these days so now it cannot be reproduced. Would you try the latest source code available from our ftp site? You can request the password for ftp by email at support@prof-uis.com.
|
|
Bob Sabiston
|
Nov 7, 2007 - 10:14 AM
|
Hmm, something is odd. Just to make sure we are comparing the same thing, our platform is Visual Studio 7.1 (.NET 2003) and we are using the Unicode DLL (ProfUIS282u.dll).
I’ve confirmed that the FunnyBar example crashes with the change described (I changed the RC file directly instead of through the resource editor and with the exception of changing CBS_DROPDOWNLIST to CBS_SIMPLE, there was no other change to the rc file). In debug versions, the callStack is essentially the same in FunnyBars as what Marc described in our application. In release versions, it just exits the program. I also checked with the ANSI release build with the same results.
|
|
Technical Support
|
Nov 7, 2007 - 8:40 AM
|
Bob, we do not know how you managed to reproduce the bug but we failed to repeat the same using v.2.81. Replacing CBS_DROPDOWNLIST with CBS_SIMPLE for IDC_COMBO_FONT_FACE_NAME does not help. We can still compile and run FunnyBars successfully. It is really weird. So some test project that reproduces the problem would be really helpful.
|
|
Bob Sabiston
|
Nov 6, 2007 - 6:00 PM
|
I am able to reproduce this bug in the FunnyBars example simply by changing the type of IDC_COMBO_FONT_FACE_NAME to CBS_SIMPLE (i.e. just replace CBS_DROPDOWNLIST with CBS_SIMPLE in that RC file and rebuild FunnyBars) You get the same behavior as Marc indicated.
|
|
Technical Support
|
Nov 6, 2007 - 1:03 PM
|
This ASSERT message says that the list box is already subclassed with some other class. Let us know if you you did this in your project?
|
|
marc uchida
|
Nov 5, 2007 - 6:47 PM
|
Call stack as requested..... If this does nothing for you let me know, I’ll see about creating a test project then. thanks, marc.
ntdll.dll!7c901230() > msvcr71d.dll!_CrtDbgBreak() Line 93 C msvcr71d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x7c254f18, int nLine=331, const char * szModule=0x00000000, const char * szFormat=0x00000000, ...) Line 427 C mfc71ud.dll!AfxAssertFailedLine(const char * lpszFileName=0x7c254f18, int nLine=331) Line 28 + 0x14 C++ mfc71ud.dll!CWnd::Attach(HWND__ * hWndNew=0x000109a2) Line 331 + 0x1c C++ mfc71ud.dll!CWnd::SubclassWindow(HWND__ * hWnd=0x000109a2) Line 4882 + 0xc C++ ProfUIS281ud.dll!CExtComboBoxBase::OnCtlColor(unsigned int wParam=4076929985, long lParam=68002) Line 1752 C++ mfc71ud.dll!CWnd::OnWndMsg(unsigned int message=308, unsigned int wParam=4076929985, long lParam=68002, long * pResult=0x00128dd0) Line 2013 + 0x11 C++ mfc71ud.dll!CWnd::WindowProc(unsigned int message=308, unsigned int wParam=4076929985, long lParam=68002) Line 1745 + 0x1e C++ ProfUIS281ud.dll!CExtComboBoxBase::WindowProc(unsigned int message=308, unsigned int wParam=4076929985, long lParam=68002) Line 1960 C++ ProfUIS281ud.dll!CExtComboBox::WindowProc(unsigned int message=308, unsigned int wParam=4076929985, long lParam=68002) Line 3413 C++ mfc71ud.dll!AfxCallWndProc(CWnd * pWnd=0x0012ed80, HWND__ * hWnd=0x000109a0, unsigned int nMsg=308, unsigned int wParam=4076929985, long lParam=68002) Line 241 + 0x1a C++ mfc71ud.dll!AfxWndProc(HWND__ * hWnd=0x000109a0, unsigned int nMsg=308, unsigned int wParam=4076929985, long lParam=68002) Line 389 C++ mfc71ud.dll!AfxWndProcBase(HWND__ * hWnd=0x000109a0, unsigned int nMsg=308, unsigned int wParam=4076929985, long lParam=68002) Line 209 + 0x15 C++ user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41b4c0() user32.dll!7e41b50c() ntdll.dll!7c90eae3() user32.dll!7e431b28() user32.dll!7e43540c() user32.dll!7e43331f() user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41c63f() user32.dll!7e41c665() mfc71ud.dll!CWnd::DefWindowProcW(unsigned int nMsg=20, unsigned int wParam=4076929985, long lParam=0) Line 1024 + 0x20 C++ mfc71ud.dll!CWnd::WindowProc(unsigned int message=20, unsigned int wParam=4076929985, long lParam=0) Line 1746 + 0x1a C++ ProfUIS281ud.dll!CExtEditBase::WindowProc(unsigned int message=20, unsigned int wParam=4076929985, long lParam=0) Line 388 + 0x14 C++ ProfUIS281ud.dll!CExtComboEditCtrlHook::WindowProc(unsigned int message=20, unsigned int wParam=4076929985, long lParam=0) Line 909 C++ mfc71ud.dll!AfxCallWndProc(CWnd * pWnd=0x0012ee88, HWND__ * hWnd=0x000109a2, unsigned int nMsg=20, unsigned int wParam=4076929985, long lParam=0) Line 241 + 0x1a C++ mfc71ud.dll!AfxWndProc(HWND__ * hWnd=0x000109a2, unsigned int nMsg=20, unsigned int wParam=4076929985, long lParam=0) Line 389 C++ mfc71ud.dll!AfxWndProcBase(HWND__ * hWnd=0x000109a2, unsigned int nMsg=20, unsigned int wParam=4076929985, long lParam=0) Line 209 + 0x15 C++ user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41b4c0() user32.dll!7e41b50c() ntdll.dll!7c90eae3() user32.dll!7e41b615() user32.dll!7e43542b() user32.dll!7e43331f() user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41c63f() user32.dll!7e41c665() mfc71ud.dll!CWnd::DefWindowProcW(unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 1024 + 0x20 C++ mfc71ud.dll!CWnd::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 1746 + 0x1a C++ ProfUIS281ud.dll!CExtEditBase::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 388 + 0x14 C++ ProfUIS281ud.dll!CExtComboEditCtrlHook::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 909 C++ mfc71ud.dll!AfxCallWndProc(CWnd * pWnd=0x0012ee88, HWND__ * hWnd=0x000109a2, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 241 + 0x1a C++ mfc71ud.dll!AfxWndProc(HWND__ * hWnd=0x000109a2, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 389 C++ mfc71ud.dll!AfxWndProcBase(HWND__ * hWnd=0x000109a2, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 209 + 0x15 C++ user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41b4c0() user32.dll!7e41b50c() ntdll.dll!7c90eae3() user32.dll!7e4194d2() user32.dll!7e41b530() user32.dll!7e4185a4() user32.dll!7e42d950() user32.dll!7e418a10() user32.dll!7e42dbbf() user32.dll!7e42593f() user32.dll!7e43a91e() fbclient.dll!036dfa16() ntdll.dll!7c949b34() ntdll.dll!7c926a44() ntdll.dll!7c926abe() ntdll.dll!7c9131dc() ntdll.dll!7c913281() ntdll.dll!7c913288() ntdll.dll!7c913288() ntdll.dll!7c916315() ntdll.dll!7c91b686() ntdll.dll!7c91b298() ntdll.dll!7c9106eb() ntdll.dll!7c96e0f0() ntdll.dll!7c96e0d4() user32.dll!7e4184fc() user32.dll!7e41ba0e() user32.dll!7e41b96b() user32.dll!7e43a284() ntdll.dll!7c910945() ntdll.dll!7c91094e() ntdll.dll!7c926abe() ntdll.dll!7c91440e() ntdll.dll!7c910970() ntdll.dll!7c914481() ntdll.dll!7c919bd3() ntdll.dll!7c910895() ntdll.dll!7c919a9c() ntdll.dll!7c919b3f() ntdll.dll!7c919aeb() user32.dll!7e4661d3() user32.dll!7e466278() user32.dll!7e450617() user32.dll!7e4505cf() msvcr71d.dll!__crtMessageBoxA(const char * lpText=0x0012a02c, const char * lpCaption=0x10268444, unsigned int uType=73746) Line 119 C msvcr71d.dll!CrtMessageWindow(int nRptType=2, const char * szFile=0x7c254f18, const char * szLine=0x0012b070, const char * szModule=0x00000000, const char * szUserMessage=0x0012b090) Line 617 + 0x16 C msvcr71d.dll!_CrtDbgReport(int nRptType=2, const char * szFile=0x7c254f18, int nLine=331, const char * szModule=0x00000000, const char * szFormat=0x00000000, ...) Line 516 + 0x4c C mfc71ud.dll!AfxAssertFailedLine(const char * lpszFileName=0x7c254f18, int nLine=331) Line 28 + 0x14 C++ mfc71ud.dll!CWnd::Attach(HWND__ * hWndNew=0x000109a2) Line 331 + 0x1c C++ mfc71ud.dll!CWnd::SubclassWindow(HWND__ * hWnd=0x000109a2) Line 4882 + 0xc C++ ProfUIS281ud.dll!CExtComboBoxBase::OnCtlColor(unsigned int wParam=4076931886, long lParam=68002) Line 1752 C++ mfc71ud.dll!CWnd::OnWndMsg(unsigned int message=308, unsigned int wParam=4076931886, long lParam=68002, long * pResult=0x0012e274) Line 2013 + 0x11 C++ mfc71ud.dll!CWnd::WindowProc(unsigned int message=308, unsigned int wParam=4076931886, long lParam=68002) Line 1745 + 0x1e C++ ProfUIS281ud.dll!CExtComboBoxBase::WindowProc(unsigned int message=308, unsigned int wParam=4076931886, long lParam=68002) Line 1960 C++ ProfUIS281ud.dll!CExtComboBox::WindowProc(unsigned int message=308, unsigned int wParam=4076931886, long lParam=68002) Line 3413 C++ mfc71ud.dll!AfxCallWndProc(CWnd * pWnd=0x0012ed80, HWND__ * hWnd=0x000109a0, unsigned int nMsg=308, unsigned int wParam=4076931886, long lParam=68002) Line 241 + 0x1a C++ mfc71ud.dll!AfxWndProc(HWND__ * hWnd=0x000109a0, unsigned int nMsg=308, unsigned int wParam=4076931886, long lParam=68002) Line 389 C++ mfc71ud.dll!AfxWndProcBase(HWND__ * hWnd=0x000109a0, unsigned int nMsg=308, unsigned int wParam=4076931886, long lParam=68002) Line 209 + 0x15 C++ user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41b4c0() user32.dll!7e41b50c() ntdll.dll!7c90eae3() user32.dll!7e425f1c() user32.dll!7e450457() user32.dll!7e452de4() user32.dll!7e41b51c() ntdll.dll!7c90eae3() user32.dll!7e43544b() user32.dll!7e43331f() user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41c63f() user32.dll!7e41c665() mfc71ud.dll!CWnd::DefWindowProcW(unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 1024 + 0x20 C++ mfc71ud.dll!CWnd::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 1746 + 0x1a C++ ProfUIS281ud.dll!CExtEditBase::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 388 + 0x14 C++ ProfUIS281ud.dll!CExtComboEditCtrlHook::WindowProc(unsigned int message=15, unsigned int wParam=0, long lParam=0) Line 909 C++ mfc71ud.dll!AfxCallWndProc(CWnd * pWnd=0x0012ee88, HWND__ * hWnd=0x000109a2, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 241 + 0x1a C++ mfc71ud.dll!AfxWndProc(HWND__ * hWnd=0x000109a2, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 389 C++ mfc71ud.dll!AfxWndProcBase(HWND__ * hWnd=0x000109a2, unsigned int nMsg=15, unsigned int wParam=0, long lParam=0) Line 209 + 0x15 C++ user32.dll!7e418734() user32.dll!7e418816() user32.dll!7e41b4c0() user32.dll!7e41b50c() ntdll.dll!7c90eae3() user32.dll!7e41d83f() user32.dll!7e41d82a() mfc71ud.dll!CWnd::UpdateWindow() Line 127 + 0x36 C++ mfc71ud.dll!CWnd::RunModalLoop(unsigned long dwFlags=4) Line 4543 C++ ProfUIS281ud.dll!CExtResDlg::_DoModalImpl() Line 6086 + 0xc C++ ProfUIS281ud.dll!CExtResDlg::DoModal() Line 6030 + 0x10 C++
|
|
Technical Support
|
Nov 5, 2007 - 11:34 AM
|
We tried to reproduce the problem but failed. Would you send us a call stack when the problem occurs? Of course if you send us a small test project, this would allow us to help you much faster.
|