Subject |
Author |
Date |
|
tera tera
|
Jan 15, 2009 - 10:28 PM
|
When I display the following menus and touch it with a ribbon frame.
Display becomes funny. In addition, a menu does not react in a mouse click
|
|
Technical Support
|
Jan 20, 2009 - 5:24 AM
|
Could you tell us the sequence of steps that lead to the second level of ribbon file popup menu being non-click-able?
|
|
tera tera
|
Jan 20, 2009 - 5:29 PM
|
Hello. Is it the reproduction method of the bug?
|
|
tera tera
|
Jan 20, 2009 - 5:29 PM
|
Hello. Is it the reproduction method of the bug?
|
|
tera tera
|
Jan 23, 2009 - 4:58 PM
|
|
|
Paul Marley
|
Jan 15, 2009 - 10:05 AM
|
I have created a MDI application in VS2005 and using Prof-UIS v.2.8.4. The application creates a CExtControlBar control and a MFC dialog with the CExtControlBar as it’s parent window. The control works as expected except when the dialog has the focus it will no longer "auto hide." Is there a reason for that? Also, the auto hide process isn’t as smooth as I would expect it. Is there a timing parameter that can be changed to help this?
Thanks.
|
|
Technical Support
|
Jan 15, 2009 - 2:02 PM
|
If the auto-hidden window displayed from the auto-hide tabs is displayed and it’s focused or some its child window is focused, the it should not become hidden even if mouse is moved outside it. At least control bars in the Visual Studio .NET, Visual Studio 2005 and Visual Studio 2008 works like we described. The following static properties of the CExtControlBar class allow you to configure auto-hiding animation:
bool CExtControlBar::g_bDisableAutoHideAnimationExpanding = false;
bool CExtControlBar::g_bDisableAutoHideAnimationCollapsing = false;
INT CExtControlBar::g_nAutoHideAnimationStepCount = 5;
INT CExtControlBar::g_nAutoHideAnimationStepTime = 10;
|
|
Bjorn Lindahl
|
Jan 15, 2009 - 7:06 AM
|
Hi!
Here’s a long post but I tried to be as informative as I could at once.
If I have two CExtControlBar:s and I dock one into the other as a tab. If I then press the close button, the X the dissappear but the layout isn’t updated so the tab is still visible until I force a redraw moving some other controlbar for instance. If I then go to the View menu and select the appropriate menu selection for each of the controlbars their state seem to be in visible-mode since I have to select each controlbar twice in order to bring them up again.
Also if I make the two Controlbars floating and close them there is some controlbar or something left that dissappear when I dock it. I attach code I see relevant and also two screenshots before closing dialog with tabs and after closing. So what I wonder is if you see anything wrong in my code below. I don’t have any CExtTabPageContainerWnd or CExtDynamicBarSite to hold the tabbed CExtControlBar, but it ain’t necessary as far as I see in your examples, right? I have these instances:
CExtControlBarNoCloseButton m_RadioSimDlgBar;
RadioSimulationDialog m_RadioSimDlg;
CExtControlBarNoCloseButton m_GPSSimDlgBar;
GPSSimulationDialog m_GPSSimDlg; Both RadioSimulationDialog and GPSSimulationDialog are classes that inherits from CExtResizableDialog and are created in the resource editor. Below is the code setting up the prof-uis stuff. I removed creation of other dialogs but they are done the same way as RadioSimulationDialog and GPSSimulationDialog. Also, the ID_VIEW_RADIOSIMDLG and ID_VIEW_GPSSIMDLG is IDs for menu items in the view menu. This function is called from CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) bool Application::SetupGUI(CFrameWnd* mframe)
{
if( !m_RadioSimDlgBar.Create(
"Radio Sim", // _T("Optional control bar caption"),
mframe,
ID_VIEW_RADIOSIMDLG,
WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER
|CBRS_FLYBY|CBRS_SIZE_DYNAMIC|CBRS_HIDE_INPLACE
)
)
{
TRACE0("Failed to create m_RadioSimDlgBar\n");
return false;
}
if( !m_RadioSimDlg.Create(
RadioSimulationDialog::IDD,
&m_RadioSimDlgBar))
{
TRACE0("Failed to create RadioSimDlg\n");
return false;
}
if( !m_GPSSimDlgBar.Create(
_T("GPS Sim"),
mframe,
ID_VIEW_GPSSIMDLG,
WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER
|CBRS_FLYBY|CBRS_SIZE_DYNAMIC|CBRS_HIDE_INPLACE
)
)
{
TRACE0("Failed to create m_GPSSimDlgBar\n");
return false;
}
if( !m_GPSSimDlg.Create(
GPSSimulationDialog::IDD
, &m_GPSSimDlgBar) )
{
TRACE0("Failed to create GPSSimDlg\n");
return false;
}
m_RadioSimDlgBar.SetInitDesiredSizeFloating(CSize(250, 200));
m_RadioSimDlgBar.SetInitDesiredSizeHorizontal(CSize( 150, 150 ));
m_RadioSimDlgBar.SetInitDesiredSizeVertical(CSize( 250, 250 ));
m_GPSSimDlgBar.SetInitDesiredSizeFloating(CSize(250, 200));
m_GPSSimDlgBar.SetInitDesiredSizeHorizontal(CSize( 150, 150 ));
m_GPSSimDlgBar.SetInitDesiredSizeVertical(CSize( 250, 250 ));
m_RadioSimDlgBar.EnableDocking(CBRS_ALIGN_ANY);
m_GPSSimDlgBar.EnableDocking(CBRS_ALIGN_ANY);
if( !CExtControlBar::FrameEnableDocking(mframe) )
{
ASSERT( FALSE );
return -1;
}
m_RadioSimDlgBar.FloatControlBar();
m_RadioSimDlgBar.DockControlBarIntoTabbedContainer(&m_GPSSimDlgBar);
m_MainFrame = mframe;
m_MainFrame->RecalcLayout();
m_MainFrame->Invalidate();
return true;
} Here is other code related to prof-uis that might give you a clue what’s wrong. This code is executed before SetupGUI() int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CWinApp * pApp = ::AfxGetApp();
ASSERT( pApp != NULL );
ASSERT( pApp->m_pszRegistryKey != NULL );
ASSERT( pApp->m_pszRegistryKey[0] != _T(’\0’) );
ASSERT( pApp->m_pszProfileName != NULL );
ASSERT( pApp->m_pszProfileName[0] != _T(’\0’) );
pApp;
ASSERT( pApp->m_pszProfileName != NULL );
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
WINDOWPLACEMENT wp;
wp.flags = 0;
wp.showCmd = SW_SHOWMAXIMIZED;
wp.length = sizeof(WINDOWPLACEMENT);
CWnd::SetWindowPlacement(&wp);
CExtPopupMenuWnd::g_bMenuExpanding = false;
CExtPopupMenuWnd::g_bMenuHighlightRarely = false;
CExtPopupMenuWnd::g_bMenuWithShadows = true;
CExtPopupMenuWnd::g_bMenuShowCoolTips = true;
CExtPopupMenuWnd::g_bMenuExpandAnimation = true;
CExtPopupMenuWnd::g_bUseDesktopWorkArea = true;
CExtPopupMenuWnd::g_DefAnimationType = CExtPopupMenuWnd::__AT_FADE;
VERIFY(
g_CmdManager->ProfileSetup(
pApp->m_pszProfileName,
GetSafeHwnd() // HWND of the frame window
)
);
VERIFY(
g_CmdManager->ProfileWndAdd(
pApp->m_pszProfileName,
GetSafeHwnd()
)
);
VERIFY(
g_CmdManager->UpdateFromMenu(
pApp->m_pszProfileName,
IDR_MAINFRAME
)
); Here are screenshots from before and after I closed the control bar holding the tabbed control bars:
|
|
Technical Support
|
Jan 20, 2009 - 5:28 AM
|
Thank you for the detailed explanation. The code snippets in your message looking like absolutely OK. It would be interesting to take a look at the source code of the CExtControlBarNoCloseButton class used in your project. Does the problem persist if you are using the CExtControlBar class instead of the CExtControlBarNoCloseButton class in your project? What will happen if you insert the CExtControlBarNoCloseButton class into some of our simple sample applications like SDI or SDIDOCVIEW and use it instead of the CExtControlBar class?
|
|
Offer Har
|
Jan 14, 2009 - 6:16 PM
|
We have a very strict time format requirement: YYYY/MM/DD HH/MM/SS And the number if digits is always the same - padded with zeros. Can this be acheived? Thanks, Ron.
|
|
Scott Moore
|
Jan 14, 2009 - 3:40 PM
|
ExtSplitterWnd.cpp
..\Src\ExtSplitterWnd.cpp(211) : error C2065: ’CX_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(211) : error C2065: ’CY_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(865) : error C2065: ’CX_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(867) : error C2065: ’CY_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(973) : error C2065: ’CX_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(973) : error C2065: ’CY_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(974) : error C2065: ’CX_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(974) : error C2065: ’CY_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(1475) : error C2065: ’CX_BORDER’ : undeclared identifier
..\Src\ExtSplitterWnd.cpp(1481) : error C2065: ’CX_BORDER’ : undeclared identifier How do I fix this?
|
|
Technical Support
|
Jan 15, 2009 - 1:20 PM
|
This is a known issue. We are sorry for the inconvenience. Please replace the CX_BORDER constant with the __EXT_MFC_CX_BORDER constant and the CY_BORDER constant with the __EXT_MFC_CY_BORDER constant.
|
|
Dominik Braendlin
|
Jan 15, 2009 - 12:42 AM
|
|
|
Richard Rodruck
|
Jan 14, 2009 - 12:50 PM
|
SelectPrevItem and SelectNextItem navigation do not work properly. they both get stuck on the day regardless of how you try to move from one item to the next. The only way to do so is to clik on the year. I added
&& pII2->m_eItemType != pII->m_eItemType
to the loop in the functions and it works better but the left and right key don’t work the ay they should. This does show up in the samples.
|
|
Technical Support
|
Jan 15, 2009 - 4:08 AM
|
Thank you for reporting this issue. We have already fixed it. Here is the source code for the updated CExtDurationWnd::SelectNextItem() and CExtDurationWnd::SelectPrevItem() methods: bool CExtDurationWnd::SelectNextItem( const ITEM_INFO * pII )
{
ASSERT_VALID( this );
LONG nStartIndex = _ItemGetIndexOf( pII );
LONG nItemIndex = nStartIndex;
LONG nItemCount = LONG( m_arrItems.GetSize() );
for( /*nItemIndex = 0*/; nItemIndex < nItemCount; nItemIndex ++ )
do
{
nItemIndex += 1;
if( nItemIndex >= nItemCount )
nItemIndex = 0;
ITEM_INFO * pII2 = m_arrItems[ nItemIndex ];
ASSERT( pII2 != NULL );
if( pII2 != NULL
&& pII2->m_bVisible
&& pII2->m_eItemType != CExtDurationWnd::label
)
{
OnSelectItem( pII2 );
return true;
}
} while( nItemIndex != nStartIndex );
return false;
}
bool CExtDurationWnd::SelectPrevItem( const ITEM_INFO * pII )
{
ASSERT_VALID( this );
LONG nStartIndex = _ItemGetIndexOf( pII );
if( nStartIndex < 0 )
nStartIndex = (LONG)m_arrItems.GetSize();
LONG nItemIndex = nStartIndex;
LONG nItemCount = LONG( m_arrItems.GetSize() );
for( /*nItemIndex = 0*/; nItemIndex < nItemCount; nItemIndex ++ )
do
{
nItemIndex -= 1;
if( nItemIndex < 0 )
nItemIndex = nItemCount - 1;
ITEM_INFO * pII2 = m_arrItems[ nItemIndex ];
ASSERT( pII2 != NULL );
if( pII2 != NULL
&& pII2->m_bVisible
&& pII2->m_eItemType != CExtDurationWnd::label
)
{
OnSelectItem( pII2 );
return true;
}
} while( nItemIndex != nStartIndex );
return false;
}
|
|
Offer Har
|
Jan 14, 2009 - 10:52 AM
|
I have a grid with many rows. Each row has an ID, held in LPARAM of the first column’as cell in each row. I need to remove a row from a given ID. The trivial way would be to run over all rows, check the LPARAM and compare it to the ID i need to remove. The problem is that this approach is in O(N) whern N is number of rows. Is there a more efficient way of doing this? Thanks, Ron.
|
|
Technical Support
|
Jan 15, 2009 - 1:25 PM
|
We are sorry, you need to implement two data provider’s notification methods:
virtual void OnDataProviderSwapSeries(
bool bColumns, // true = sorting/swapping columns, false - rows
LONG nRowColNo1,
LONG nRowColNo2,
LONG nSwapCounter
) = 0;
virtual void OnDataProviderSwapDroppedSeries(
bool bColumns, // true = swapping columns, false - rows
LONG nRowColNoSrc,
LONG nRowColNoDropBefore
) = 0;
First is notifying about swapping during sorting. Second is notifying about swapping during drag-n-drop. Please do not ignore the bColumns parameter. The row indices are zero based, but you should subtract total number of top and bottom rows from each row index. The CExtGridWnd class APIs provide independent row indexing spaces for top rows, bottom rows and data rows. But all the rows are stored inside one array of rows inside the data provider and this array contains all the top rows at the top of array, then all the bottom rows and then all the data rows.
|
|
Technical Support
|
Jan 14, 2009 - 12:22 PM
|
Thank you for the interesting question. The solution you described will work but it’s not effective. You should use your own grid window class which has the map of row identifiers. This map should use the row identifier as key value and real row index as data value. The grid window should update the data values for each key stored in the map when the rows added, removed and sorted. You should implement the following methods for handling these events:
virtual bool RowInsert(
LONG nRowNo, // -1 or greater than count - append
LONG nRowInsertCount = 1L,
bool bRedraw = true
);
virtual LONG RowRemove(
LONG nRowNo,
LONG nRowRemoveCount = 1L, // -1 - remove up to end (truncate)
bool bRedraw = true
);
virtual void OnDataProviderSwapDroppedSeries(
bool bColumns, // true = swapping columns, false - rows
LONG nRowColNoSrc,
LONG nRowColNoDropBefore
);
First two methods are provided by the CExtGridBaseWnd class. Third method is provided by the CExtGridDataProvider::IDataProviderEvents structure which is one of the bases of the CExtGridWnd class. This method is invoked during grid sorting. The CExtGridWnd class implements this method because it’s need to synchronize rectangular selection areas during sorting. As result, the grid cells which were selected before row/column sorting are still selected after sorting. This task is very similar to yours because it tracks the data which is linked to parti So all the methods can be handled in your CExtGridWnd -derived class.
|
|
Offer Har
|
Jan 14, 2009 - 8:39 PM
|
Another problem is that when I get to RowRemove , I need to run over all rows to adjust them, because all the row indexes are now invalid - correct me if I’m wrong...
|
|
Offer Har
|
Jan 14, 2009 - 6:29 PM
|
Dear Support, Thanks for the answer. I think there is one thing I don’t understand - How can I add an entry into the map in RowInsert? I don’t have the ID here, only the row number. I think I have to add the items into the map when I add rows ’manually’ - please explain if I missed anyhing... About OnDataProviderSwapDroppedSeries tell if this is enough:
void CMyGrid::OnDataProviderSwapDroppedSeries(
bool bColumns, // true = swapping columns, false - rows
LONG nRowColNoSrc,
LONG nRowColNoDropBefore
)
{
int nID1 = GridCellGet(m_nColWithID, nRowColNoSrc)->LParamGet();
int nID2 = GridCellGet(m_nColWithID, nRowColNoDropBefore)->LParamGet();
m_mapID2Row[nID1] = nRowColNoDropBefore;
m_mapID2Row[nID2] = nRowColNoSrc;
CExtGridWnd::OnDataProviderSwapDroppedSeries(bColumns, nRowColNoSrc, nRowColNoDropBefore);
} Thanks, Ron.
|
|
Offer Har
|
Jan 14, 2009 - 6:41 PM
|
Another problem - I see that when I sort the grid, the function OnDataProviderSwapDroppedSeries is not called - any ideas?
|
|
Offer Har
|
Jan 14, 2009 - 6:49 PM
|
OK, you specified the wrong function... I should use OnDataProviderSwapSeries . But, I still have a problem - I have a 4 rows grid, and I get the number 4 in nRowColNo2 , even though this is a 0 based index counting. Any ideas?
|
|
Offer Har
|
Jan 14, 2009 - 7:04 PM
|
Can it be that nRowColNo1 and nRowColNo2 are 1 based index?
|
|
Offer Har
|
Jan 13, 2009 - 8:12 AM
|
Dear Support, We notice that after upgrading to 2.84, the CPU consumption of the CPU is very high - it takes one CPU core to 100% all the time. We see that the stack is always around this: ProfUIS284md.dll!_RTC_CheckStackVars(void * frame=0x0012f57c, _RTC_framedesc * v=0x0111703c) + 0xd bytes C++
> ProfUIS284md.dll!CMap<CExtHookSpy *,CExtHookSpy *,bool,bool>::Lookup(CExtHookSpy * key=0x07d98d2c, bool & rValue=false) Line 1575 + 0xf bytes C++
ProfUIS284md.dll!CExtHookSpy::HookSpyItem_t::IsRegistered(CExtHookSpy * pHS=0x07d98d2c, unsigned long dwEHSEF=4294967295) Line 802 + 0x13 bytes C++
ProfUIS284md.dll!CExtHookSpy::HookSpyIsRegistered(const CExtHookSpy * pHS=0x07d98d2c, unsigned long dwEHSEF=4294967295) Line 1814 + 0x19 bytes C++
ProfUIS284md.dll!CExtHookSpy::HookSpyIsRegistered(unsigned long dwEHSEF=4294967295) Line 267 + 0xd bytes C++
ProfUIS284md.dll!CExtHookSpy::HSLL_OnCallWindowProcIn(bool & bCallNextHook=true, long & lResult=0, int nCode=0, bool bMessageSentByCurrentThread=false, tagCWPSTRUCT * pMessageData=0x0012f6f8) Line 1592 + 0xa bytes C++
ProfUIS284md.dll!CExtHookSpy::HookSpyItem_t::SHS_HookCallWindowProcIn(int nCode=0, unsigned int wParam=0, long lParam=1242872) Line 1242 + 0x27 bytes C++ Please explain what these functions, hooks & spys do... we must reduce the CPU, as this is when our application is completly idle. Thanks, Ron.
|
|
Carsten Pedersen
|
Feb 12, 2009 - 12:51 AM
|
Could you please take a moment to help me figure out this problem? We have a computer that runs an app which doesn’t have the problem, but my app is. How can we find out what is wrong? As mentioned, everything works with 2.83 so it’s annoying to be struggling with these things that are not core problems og our project. Another thing, why doesn’t this thread appear at the top of the forum list when answered?
|
|
Carsten Pedersen
|
Feb 10, 2009 - 2:37 AM
|
I am using Windows XP. The program is a dialog application, and yes We trap some keyboard input keys using the
BOOL ProcessMessageFilter(int code, LPMSG lpMsg) function in main dialog class. Even if we try to out-comment it, in never reaches the code before entering CWinApp::PreTranslateMessage(pMsg); in the PreTranslateMessage method
A colleague of mine is doing another Dialog app, but doesn’t have the problems with buttons at all. Can you think of any things to try to compare the two programs in order to solve the issue? What to look for?
|
|
Technical Support
|
Feb 9, 2009 - 1:34 PM
|
We cannot reproduce this problem using the ProfUIS_Controls sample application. We tried to press different buttons in it using mouse, space key and keyboard accelerators, but we saw only a small CPU usage caused by fading animation. We tried different paint managers and result is the same. Which windows version should we use for reproducing this problem? Do you have any software which hooks keyboard on your system? Some funny replacement of standard Windows Language Bar? Some other extension which hooks keyboard via injecting DLL into all the processes running on your desktop?
|
|
Carsten Pedersen
|
Feb 9, 2009 - 8:50 AM
|
Hi, I have the same problem. The application which worked under 2.83 is now using the 2.84 compiled ProfUIS284ymd.lib. The application starts up fine, tab window works when pressing the different tabs, but when I press a CExtButton, the app stalls and the CPU goes to 100%. When I pause the app, I can see that it is stuck in an endless loop in ::HookSpyItem_t::SHS_HookCallWindowProcIn LRESULT CALLBACK CExtHookSpy Is this helpful enough to debug?
Hopefully you are able to find the error. Best regards, Carsten
|
|
Technical Support
|
Jan 14, 2009 - 12:19 PM
|
The CExtHookSpy class implements an interface for thread-wide hooks. The classes derived from it can handle mouse/keyboard messages and intercept window procedure invocations. We have optimized this class in Prof-UIS 2.84 for reducing CPU usage. All the hook spies in Prof-UIS 2.84 are intercepting less possible number of events. Pleas provide us with more details about the problem. When it occurs and when not?
|
|
tera tera
|
Jan 13, 2009 - 3:02 AM
|
Hello. I want to make a dynamic menu with an icon.
Please teach a method.
CPoint cPointPop; ///< PopupMenu表示位置 CMuPopupMenuWnd *pPopup = new CNxfPopupSelElem; pPopup->CreatePopupMenu(
//GetSafeHwnd()
AfxGetMainWnd()->GetSafeHwnd()
); CMenu menuWidthCommands;
CMenu popupMenu;
CMenu popupMenu2;
BOOL bCreate; bCreate = menuWidthCommands.CreateMenu();
bCreate = popupMenu.CreatePopupMenu ();
bCreate = popupMenu2.CreatePopupMenu (); bCreate = popupMenu.AppendMenu ( MF_STRING 32123 , "aaaa" );
bCreate = popupMenu.AppendMenu ( MF_STRING, 32124 , "bbbb" ); bCreate = popupMenu2.AppendMenu ( MF_STRING, 32125 , "cc" );
bCreate = popupMenu2.AppendMenu ( MF_STRING, 32126 , "dd" ); bCreate = popupMenu.AppendMenu ( MF_POPUP, ( UINT ) popupMenu2.Detach (), "メニュー" );
bCreate = menuWidthCommands.AppendMenu ( MF_POPUP, ( UINT ) popupMenu.Detach (), "_POPUP_" ); pPopup->UpdateFromMenu(
//GetSafeHwnd() ,
AfxGetMainWnd()->GetSafeHwnd() ,
&menuWidthCommands
); ::GetCursorPos( &cPointPop ); pPopup->TrackPopupMenu (
TPMX_NO_HIDE_RARELY | // すべてPopupMenuが表示される形で起動する。
TPM_RIGHTBUTTON |
TPM_TOPALIGN |
TPM_LEFTALIGN ,
cPointPop.x ,
cPointPop.y
);
|
|
tera tera
|
Jan 14, 2009 - 2:10 AM
|
CExtCmdProfile * pProfile;
if ( m_csProfileName == "" ){
m_csProfileName = g_CmdManager->ProfileNameFromWnd( AfxGetMainWnd()->GetSafeHwnd() );
}
pProfile = g_CmdManager->ProfileGetPtr( m_csProfileName );
if ( pProfile == NULL ){
ASSERT(FALSE);
return FALSE;
} m_bmpNormal.LoadBMP_Resource( MAKEINTRESOURCE( uidBmp )) ;
m_bmpNormal.Make32();
m_bmpNormal.AlphaColor( clrTrans, RGB(0,0,0), 0 ); CExtCmdItem _cmd;
_cmd.m_nCmdID = uid; ASSERT( CExtCmdManager::IsCommand( _cmd.m_nCmdID ) );
_cmd.TipsLoad();
pProfile->CmdSetup ( _cmd , false );
pProfile->CmdSetIcon ( _cmd.m_nCmdID, this , true );
|
|
tera tera
|
Jan 13, 2009 - 1:54 AM
|
Hello. Space surrounded with red is unnecessary.
I delete it and want to display a text.
|
|
Offer Har
|
Jan 12, 2009 - 10:12 AM
|
Dear Support, We build out system for power-users who try to do as much as possible from the keyboard. We have an CExtGridCellCheckListComboBox defined with the __EGCS_NO_INPLACE_CONTROL style. The way the user edit the list is as possible. 1) Navigate to the cell with the arrows. 2) Drop down the list with the F2 key. 3) Check/un-check items with the up/down arrows and the space button. 4) Close the drop-list by pressing the Enter key. All this works fine, but the when the user presses the Enter key all the selected items but the last are un-selected, that is, the means that the Enter key does some operation on the list of selected items it shouldn’t. We guess that comes from the base class. Please fix. Thanks, Ron.
|
|
Technical Support
|
Jan 20, 2009 - 1:16 PM
|
Please insert the following method into the CExtGridCellCheckListComboBox class: virtual bool OnPopupListBoxSelEndOK(
CExtPopupInplaceListBox & wndListBox,
CExtGridCell::TrackCellStateInfo_t & _tcsi
);
bool CExtGridCellCheckListComboBox::OnPopupListBoxSelEndOK(
CExtPopupInplaceListBox & wndListBox,
CExtGridCell::TrackCellStateInfo_t & _tcsi
)
{
ASSERT_VALID( this );
ASSERT( (&_tcsi.m_cell) == this );
ASSERT_VALID( (&wndListBox) );
ASSERT_VALID( (&_tcsi.m_wndGrid) );
wndListBox;
_tcsi.m_bHelperSelChanged = false;
return false;
}
|
|
Technical Support
|
Jan 20, 2009 - 5:25 AM
|
The current keyboard behavior is:
1) you can select many options in the popup list box using space key and then close popup list box with escape key
2) enter key can be used for selecting only one option and unselecting all the other options
This behavior can be reproduced without 8-step sequence you described. Please advise us which other behavior would you prefer?
|
|
Offer Har
|
Jan 20, 2009 - 6:01 AM
|
The enter you should not remove all the selection - it should only close the drop list - access the current state of the item checks.
|
|
Technical Support
|
Jan 13, 2009 - 4:33 AM
|
We tried to reproduce this problem using the ProfUIS_Controls sample application. The Grid page contains grid control with column containing check-list grid cells. The grid cell displaying Item 6, Item 7 text in this column look like exactly the same configured grid cell in your project. But we can’t find anything wrong with behavior of the VK_RETURN key on this grid cell.
|
|
Offer Har
|
Jan 13, 2009 - 5:27 AM
|
Dear Support,
I checked it again and bug is there and very simple to reproduce it. Please follow my steps carefully and slowly: 1. Go to the CheckComboBox column in the ProfUIS_Controls 2. click on the second from bottom cell in the column with the mouse (the one with no selection, not the disabled one, which is the last one) 3. Drop the list with the mouse (F2 just bring you into edit, because you have in-place edit enabled) 4. NOW LEAVE THE MOUSE 5. Press the down arrow and then press space -> Item1 will be checked 6. Press the down arrow and then press space -> Item2 will be checked 7. Press the down arrow and then press space -> Item3 will be checked 8. Press Enter to close the list
The only check left will be to Item3.
Please let me know you were able to reproduce it.
Regards, Ron.
|
|
Offer Har
|
Jan 12, 2009 - 8:31 AM
|
If I add __EGCS_BUTTON_UPDOWN style, when I press the up or down they only change the day field... No matter whet field I select. Please fix.
|
|
Offer Har
|
Jan 12, 2009 - 8:26 AM
|
I have a CExtGridCellDateTime cell, and when the drop-down is clicked, there are two buttons - Today and None. I need to remove the None. How do I do it? Thanks, Ron.
|
|
Technical Support
|
Jan 13, 2009 - 4:33 AM
|
You should override the CExtGridCellDateTime::OnQueryDatePickerStyle() virtual method in your CExtGridCellDateTime -derived class and return required __EDPWS_*** date picker styles.
|
|
Lars Mohr
|
Jan 11, 2009 - 3:17 PM
|
Hi Support-Team I want to have a ControlBar with an ExtTreeCtrl inside. And it works well if create the tree without the CExtNCSB template class and with the template class it doesn’t work. But without this class I get the tree with standard scrollbar. Is there any possibility to get the ExtTreeCtrl with right theme scrollbar in a ExtControlBar? Regards
|
|
Technical Support
|
Jan 14, 2009 - 12:19 PM
|
Yes.
The CExtNCSB template class controls two CExtScrollBar windows created over other window with scroll bar like non-client areas.
The CExtNSB template class is designed for inserting CExtScrollBar scroll bars into any CExtScrollWnd -based window like CExtGridWnd , CExtTreeGridWnd , CExtReportGridWnd , CExtImageEditWnd and CExtColorPaletteWnd .
|
|
Offer Har
|
Jan 14, 2009 - 4:18 PM
|
So what do I need to do in a control-bar that has a grid in it?
|
|
Technical Support
|
Jan 15, 2009 - 1:26 PM
|
Just create the grid window inside the control bar. The grid can be based on the CExtNSB template class or not be based on it - in any case there are no need to invoke non-default constructors.
|
|
Technical Support
|
Jan 12, 2009 - 12:22 PM
|
The CExtNCSB template class creates two CExtScrollBar windows in the same z-order layer with the CExtTreeCtrl window. As a result, the CExtControlBar window contains three child windows. But the CExtControlBar window is designed to be a container for one child window only. The CExtNCSB template class can also be configured for using <b>middle container mode</code>. In this mode it creates one container window between the tree and the control bar and creates two scroll bars as children of this container window. You can instantiate the CExtNCSB < CExtTreeCtrl > object dynamically and make it using the <b>middle container mode</code> in parameters of the CExtNCSB template class constructor: // in scope of main frame class declaration:
CExtTreeCtrl * m_pWndTree;
// in main frame’s constructor
CMainFrame::CMainFrame()
: m_pWndTree( NULL )
. . .
{
. . .
m_pWndTree = new CExtNCSB < CExtTreeCtrl > ( true, true );
. . .
}
// in main frame’s destructor
CMainFrame::~CMainFrame()
{
. . .
if( m_pWndTree != NULL )
{
delete m_pWndTree;
m_pWndTree = NULL;
}
. . .
}
You should simply create the m_pWndTree window as child of the CExtControlBar window in main frame’s OnCreate() method.
|
|
Lars Mohr
|
Jan 13, 2009 - 5:00 AM
|
Perfect... Exactly what I need... Thank you...
|
|
Offer Har
|
Jan 12, 2009 - 4:41 PM
|
Dear Support, Does this apply to grids’ CExtNSB as well?
|
|
Offer Har
|
Jan 10, 2009 - 8:13 AM
|
Dear Support, When you create a cell of CExtGridCellDateTime type, and edit it, the normal behaviour is that pressing the left & right arrows will move you between the fields of the date & time, for example, if you edit the hour and press the right click it should move you to the minutes. The bug is that the left & right arrows move between two fields - the AM/PM field and the day of the month field. You can reproduce it easily in ProfUIS_Controls. Please fix. Thanks, Ron.
|
|
Technical Support
|
Jan 12, 2009 - 12:25 PM
|
Thank you for reporting this issue. We fixed it and send you a link to the fixed code by email.
|
|
Ashley Gullen
|
Jan 10, 2009 - 4:18 AM
|
Hi, We are looking to use the new 2.84 CExtMsgBox class to replace our old messagebox class (which also had ’do not display/ask again’ support). However, if __EXT_MB_DO_NOT_DISPLAY_AGAIN or __EXT_MB_DO_NOT_ASK_AGAIN is specified, the checkbox is always checked by default, regardless of the __EXT_MB_DEFAULT_CHECKED setting. Can this be fixed? Additionally, we need support for manual checking/unchecking of the checkbox which does not seem to be available. Considering we call the same messagebox from several places in the code, unticking the checkbox should affect several messagebox prompts. Is there a way to do this or a way for us to specify whether the checkbox is already checked before calling a messagebox?
|
|
Technical Support
|
Mar 10, 2009 - 1:17 PM
|
The CExtMsgBox::ResetMsgBox() needs to know the unique name of the message box which is specified in the strUniqueID parameter of the CExtMsgBox class constructor. The ProfUISMsgBox() function and the CExtMsgBox::DoMsgBox() static method also have the same strUniqueID parameter. The unique message box name is the internally used text string which is never displayed on the screen. You need to provide all your message boxes with check box options with the unique names if you want to be able to reset their checked states. If you need to check whether the particular message box has the checked state, then you should invoke the following code:
HWND hWndParent = NULL; // not used in this task
LPCTSTR strUniqueID = . . .
CExtMsgBox _MB( hWndParent, strUniqueID );
CExtSafeString strRegVarName = MB.OnMsgBoxGetRegVarName();
int nResult = ::AfxGetApp()->GetProfileInt( CExtMsgBox::g_strRegSectionName, LPCTSTR(strRegVarName), (-1) );
If the nResult variable is -1 , then the message box is not checked and it will be displayed at least once again or until user will set on check box inside it. In other cases, the nResult variable is equal to identifier of some button in the message box. This button was pressed by user after it has set on the check box inside the message box. The common button identifiers are IDOK , IDCANCEL , IDYES and IDNO . Here is the complete list of button identifiers: // first group of message box button identifiers uses same values as in Win32
#define ID_EXT_MBB_OK 1
#define ID_EXT_MBB_CANCEL 2
#define ID_EXT_MBB_ABORT 3
#define ID_EXT_MBB_RETRY 4
#define ID_EXT_MBB_IGNORE 5
#define ID_EXT_MBB_YES 6
#define ID_EXT_MBB_NO 7
#define ID_EXT_MBB_CLOSE 8
#define ID_EXT_MBB_HELP 9
#define ID_EXT_MBB_TRY_AGAIN 10
#define ID_EXT_MBB_CONTINUE 11
// second group of message box button identifiers defines extended features
#define ID_EXT_MBB_YES_TO_ALL 14
#define ID_EXT_MBB_NO_TO_ALL 15
#define ID_EXT_MBB_SKIP 16
#define ID_EXT_MBB_SKIP_ALL 17
#define ID_EXT_MBB_IGNORE_ALL 18
#define ID_EXT_MBB_CHECK_BOX 19
#define ID_EXT_MBB_EX_COPY_BUTTON 20
|
|
Technical Support
|
Jan 12, 2009 - 12:23 PM
|
Thank you for reporting this issue. The __EXT_MB_DEFAULT_CHECKED constant has incorrect name. It’s simply combination of the <code__EXT_MB_DO_NOT_DISPLAY_AGAIN</code> and <code__EXT_MB_DO_NOT_ASK_AGAIN</code> constants. The __EXT_MB_DEFAULT_CHECKED constant is used by message box internally and allows to detect whether the check box present. We have removed this constant. By default, the check box inside the message box in Prof-UIS 2.84 is always checked initially and there is no style for making it initially unchecked. We have added the new __EXT_MB_EX_CHECK_BOX_IS_NOT_CHECKED_INTIALLY extended message box style for fixing this issue:
::ProfUISMsgBox(
NULL,
_T("Some question as strMessageText parameter?"),
_T("Some caption..."),
__EXT_MB_DO_NOT_ASK_AGAIN,
0,
_T("UniqueIdOfThisMessageBox"),
__EXT_MB_EX_CHECK_BOX_IS_NOT_CHECKED_INTIALLY
);
We cannot add this style into basic set of style styles because all the 32 bits of basic styles are already occupied. Here is the source code update: http://www.prof-uis.com/download/forums/tmp/MsgBoxUpdate285.zip
|
|
Technical Support
|
Mar 10, 2009 - 8:13 AM
|
This is not a problem of Prof-UIS message box. This is incorrect usage of it in your application. You displayed the "Do you want to close this application?" message box with OK/Cancel buttons and "Do not ask again" check box. You checked the "Do not ask again" check box and pressed the Cancel button. This means you designed this message box for providing your users with ability to disable closing your application forever. This is simply incorrect UI design. You should not use the "Do not ask again" check box in such message boxes. You should implement some settings dialog in your application and implement some group of options in it called Confirmations. These group of options contains set of check boxes. One of them should be called "Confirm exit". If the "Confirm exit" option is checked, then you should display the "Do you want to close this application?" message box with OK/Cancel buttons and without check box. If the "Confirm exit" option is not checked, then you should simply shutdown your application without displaying any message boxes.
|
|
Emmanuel V.
|
Mar 10, 2009 - 5:18 AM
|
Hi, there is another bug/problem (in the MsgBoxUpdate285.zip). This dialog is displayed when leaving my application, and a confirmation is requested: dlgConfirmClose.DoMsgBox(m_hWnd, IDS_SURETOQUIT, 0, __EXT_MB_OKCANCEL | __EXT_MB_DO_NOT_ASK_AGAIN, 0, 0, __EXT_MB_EX_CHECK_BOX_IS_NOT_CHECKED_INTIALLY) If I check "Don’t ask this question again", then clicking <Cancel>, I will not be able to close the application anymore. The <Cancel> button is now automatically pressed when my dialog is displayed. So is it a bug, or do I need to call ResetMsgBox() in this special case? Thanks.
|
|
Emmanuel V.
|
Mar 10, 2009 - 7:22 AM
|
Some news: ResetMsgBox() does not reset the "Don’t ask this question again" flag. I’m calling this method if user press <Cancel>, but I can see in registry that a key "msgbox-not-unique-helpid-0-chksum-86226" is not reset.
|
|
Ashley Gullen
|
Jan 10, 2009 - 4:19 AM
|
Sorry, to clarify, I was also asking if there’s a way to test if some messagebox has already been disabled by ticking its checkbox.
|
|
tera tera
|
Jan 9, 2009 - 2:32 AM
|
Hello. I want to perform only display.
The Edit function is unnecessary. Thanks,
|
|
Technical Support
|
Jan 9, 2009 - 8:36 AM
|
The marked tree line on your screen shot consists of two parts. The Edit control: text is the tree item’s text. The control text text is the text inside attached single line text editor control. If you don’t need text editor, then you should simply initialize tree item without assigning any attached control to it. I.e. you should initialize simple tree item with the Edit control: control text text.
|
|
Joachim Meißner
|
Jan 9, 2009 - 1:01 AM
|
During compilation of Profuis with the integration wizard, I get the errors attached beneath.
I am using Microsoft Visual Studio 2005
Version 8.0.50727.867 (vsvista.050727-8600)
Microsoft .NET Framework
Version 2.0.50727 SP2 Even if I trie to compile a project against the profuis trial version,
I got compilation errors. Defining _AFX_NO_OCC_SUPPORT helps,
but this is not enough to get profuis compiled. My include paths are:
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include $(VCInstallDir)include
$(VCInstallDir)atlmfc\include
$(VCInstallDir)PlatformSDK\include
$(FrameworkSDKDir)include
C:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Include
C:\Devel\boost\include\boost-1_34_1
C:\Program Files (x86)\Unify\Team Developer 5.1\inc
D:\Work\WFC\INCLUDE Buildprotokoll
Neu erstellen wurde gestartet: Projekt: "ProfUISDLL", Konfiguration: "ANSI Debug|Win32"
Befehlszeilen
Die temporäre Datei "c:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Bin_800\AnsiDebug\ProfUISDLL\RSP00003D56807696.rsp" wird erstellt. Inhalt:
[
/Od /I "..\Include" /D "_DEBUG" /D "_AFXEXT" /D "__PROF_UIS_IMPL__" /D "_WIN32_WINNT=0x0400" /D "_WIN32_IE=0x0400" /D "WIN32" /D "_WINDOWS" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /D "_AFXDLL" /Gm /EHsc /RTC1 /MDd /Yc"stdafx.h" /Fp".\..\Bin_800\AnsiDebug\ProfUISDLL/ProfUISDLL_800.pch" /Fo".\..\Bin_800\AnsiDebug\ProfUISDLL/" /Fd".\..\Bin_800\AnsiDebug\ProfUISDLL/" /W4 /c /Zi /TP /Zm512 /Zm512
".\StdAfx.cpp"
]Erstellen der Befehlszeile "cl.exe @"c:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Bin_800\AnsiDebug\ProfUISDLL\RSP00003D56807696.rsp" /nologo /errorReport:prompt"Die temporäre Datei "c:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Bin_800\AnsiDebug\ProfUISDLL\RSP00003E56807696.rsp" wird erstellt. Inhalt:
[
/Od /I "..\Include" /D "_DEBUG" /D "_AFXEXT" /D "__PROF_UIS_IMPL__" /D "_WIN32_WINNT=0x0400" /D "_WIN32_IE=0x0400" /D "WIN32" /D "_WINDOWS" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /D "_AFXDLL" /Gm /EHsc /RTC1 /MDd /Yu"stdafx.h" /Fp".\..\Bin_800\AnsiDebug\ProfUISDLL/ProfUISDLL_800.pch" /Fo".\..\Bin_800\AnsiDebug\ProfUISDLL/" /Fd".\..\Bin_800\AnsiDebug\ProfUISDLL/" /W4 /c /Zi /TP /Zm512 /Zm512
".\ProfUISDLL.cpp"
"..\Src\ExtControlsShell.cpp"
"..\Src\ExtControlsCommon.cpp"
"..\Src\ExtTreeGridWnd.cpp"
"..\Src\ExtToolControlBar.cpp"
"..\Src\ExtToolBoxWnd.cpp"
"..\Src\ExtTaskPaneWnd.cpp"
"..\Src\ExtTabWnd.cpp"
"..\Src\ExtTabPageContainerWnd.cpp"
"..\Src\ExtTabFlatWnd.cpp"
"..\Src\ExtTabbedToolControlBar.cpp"
"..\Src\ExtSplitterWnd.cpp"
"..\Src\ExtSpinWnd.cpp"
"..\Src\ExtSliderWnd.cpp"
"..\Src\ExtShortcutListWnd.cpp"
"..\Src\ExtScrollWnd.cpp"
"..\Src\ExtRibbonBar.cpp"
"..\Src\ExtResizableDialog.cpp"
"..\Src\ExtReportGridWnd.cpp"
"..\Src\ExtPropertyGridWnd.cpp"
"..\Src\ExtProgressWnd.cpp"
"..\Src\ExtProfUISAboutDialog.cpp"
"..\Src\ExtPrint.cpp"
"..\Src\ExtPopupMenuWnd.cpp"
"..\Src\ExtPopupCtrlMenu.cpp"
"..\Src\ExtPaintManager2.cpp"
"..\Src\ExtPaintManager.cpp"
"..\Src\ExtPageNavigatorWnd.cpp"
"..\Src\ExtPageContainerWnd.cpp"
"..\Src\ExtNcFrame.cpp"
"..\Src\ExtMouseCaptureSink.cpp"
"..\Src\ExtMiniDockFrameWnd.cpp"
"..\Src\ExtMenuControlBar.cpp"
"..\Src\ExtMdiWindowsListDlg.cpp"
"..\Src\ExtLabel.cpp"
"..\Src\ExtImageEditWnd.cpp"
"..\Src\ExtIconEditDlg.cpp"
"..\Src\ExtHook.cpp"
"..\Src\ExtGroupBox.cpp"
"..\Src\ExtGridWnd.cpp"
"..\Src\ExtEdit.cpp"
"..\Src\ExtDurationWnd.cpp"
"..\Src\ExtDockBar.cpp"
"..\Src\ExtDatePicker.cpp"
"..\Src\ExtControls.cpp"
"..\Src\ExtControlBarTabbedFeatures.cpp"
"..\Src\ExtControlBar.cpp"
"..\Src\ExtContentExpandWnd.cpp"
"..\Src\ExtComboBox.cpp"
"..\Src\ExtColorPaletteWnd.cpp"
"..\Src\ExtColorDlg.cpp"
"..\Src\ExtColorCtrl.cpp"
"..\Src\ExtCmdManager.cpp"
"..\Src\ExtCmdIcon.cpp"
"..\Src\ExtCheckListWnd.cpp"
"..\Src\ExtButton.cpp"
"..\Src\ExtBtnOnFlat.cpp"
]Erstellen der Befehlszeile "cl.exe @"c:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Bin_800\AnsiDebug\ProfUISDLL\RSP00003E56807696.rsp" /nologo /errorReport:prompt"Die temporäre Datei "c:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Bin_800\AnsiDebug\ProfUISDLL\RSP00003F56807696.rsp" wird erstellt. Inhalt:
[
/Od /I "..\ProfUISDLL" /I "..\Include" /D "_DEBUG" /D "_AFXEXT" /D "__PROF_UIS_IMPL__" /D "_WIN32_WINNT=0x0400" /D "_WIN32_IE=0x0400" /D "WIN32" /D "_WINDOWS" /D "_VC80_UPGRADE=0x0600" /D "_WINDLL" /D "_AFXDLL" /Gm /EHsc /RTC1 /MDd /Yu"stdafx.h" /Fp".\..\Bin_800\AnsiDebug\ProfUISDLL/ProfUISDLL_800.pch" /Fo".\..\Bin_800\AnsiDebug\ProfUISDLL/" /Fd".\..\Bin_800\AnsiDebug\ProfUISDLL/" /W4 /c /Zi /TP /Zm512 /Zm512
"..\Src\ExtStatusControlBar.cpp"
"..\Src\ExtCustomize.cpp"
]Erstellen der Befehlszeile "cl.exe @"c:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Bin_800\AnsiDebug\ProfUISDLL\RSP00003F56807696.rsp" /nologo /errorReport:prompt"
Ausgabefenster
Kompilieren...
StdAfx.cpp
Kompilieren...
ExtBtnOnFlat.cpp
ExtButton.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(26) : warning C4005: ’AtlTrace’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\atldebugapi.h(119): Siehe vorherige Definition von ’AtlTrace’
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2504: ’CVirtualBuffer’: Basisklasse undefiniert
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1762): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "ATL::CArrayRowset".
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2143: Syntaxfehler: Es fehlt ’,’ vor ’<’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(133) : error C2011: ’COleControlContainer’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(94): Siehe Deklaration von ’COleControlContainer’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(220) : error C2011: ’COleControlSite’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(203): Siehe Deklaration von ’COleControlSite’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(422) : error C2011: ’COccManager’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(471) : error C2011: ’_AFX_OCC_DIALOG_INFO’: ’struct’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(511): Siehe Deklaration von ’_AFX_OCC_DIALOG_INFO’
ExtCheckListWnd.cpp
ExtCmdIcon.cpp
ExtCmdManager.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(346) : warning C4005: ’_countof’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\include\stdlib.h(397): Siehe vorherige Definition von ’_countof’
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\AfxPriv.h(747) : error C2011: ’CPushRoutingFrame’: ’class’ Typneudefinition
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(145): Siehe Deklaration von ’CPushRoutingFrame’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(26) : warning C4005: ’AtlTrace’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\atldebugapi.h(119): Siehe vorherige Definition von ’AtlTrace’
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2504: ’CVirtualBuffer’: Basisklasse undefiniert
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1762): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "ATL::CArrayRowset".
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2143: Syntaxfehler: Es fehlt ’,’ vor ’<’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(133) : error C2011: ’COleControlContainer’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(94): Siehe Deklaration von ’COleControlContainer’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(220) : error C2011: ’COleControlSite’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(203): Siehe Deklaration von ’COleControlSite’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(422) : error C2011: ’COccManager’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(471) : error C2011: ’_AFX_OCC_DIALOG_INFO’: ’struct’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(511): Siehe Deklaration von ’_AFX_OCC_DIALOG_INFO’
Prof-UIS is automatically linking with version.lib
(Version info support)
..\Src\ExtCmdManager.cpp(6443) : error C2079: ’occDialogInfo’ verwendet undefiniertes struct ’_AFX_OCC_DIALOG_INFO’
..\Src\ExtCmdManager.cpp(6456) : error C2664: ’CDialog::SetOccDialogInfo’: Konvertierung des Parameters 1 von ’int *’ in ’_AFX_OCC_DIALOG_INFO *’ nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
..\Src\ExtCmdManager.cpp(6459) : error C2027: Verwendung des undefinierten Typs "COccManager"
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
..\Src\ExtCmdManager.cpp(6459) : error C2227: Links von "->PreCreateDialog" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
..\Src\ExtCmdManager.cpp(6531) : error C2027: Verwendung des undefinierten Typs "COccManager"
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
..\Src\ExtCmdManager.cpp(6531) : error C2227: Links von "->PostCreateDialog" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
ExtColorCtrl.cpp
ExtColorDlg.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(26) : warning C4005: ’AtlTrace’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\atldebugapi.h(119): Siehe vorherige Definition von ’AtlTrace’
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2504: ’CVirtualBuffer’: Basisklasse undefiniert
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1762): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "ATL::CArrayRowset".
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2143: Syntaxfehler: Es fehlt ’,’ vor ’<’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(133) : error C2011: ’COleControlContainer’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(94): Siehe Deklaration von ’COleControlContainer’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(220) : error C2011: ’COleControlSite’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(203): Siehe Deklaration von ’COleControlSite’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(422) : error C2011: ’COccManager’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(471) : error C2011: ’_AFX_OCC_DIALOG_INFO’: ’struct’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(511): Siehe Deklaration von ’_AFX_OCC_DIALOG_INFO’
ExtColorPaletteWnd.cpp
ExtComboBox.cpp
ExtContentExpandWnd.cpp
ExtControlBar.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(26) : warning C4005: ’AtlTrace’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\atldebugapi.h(119): Siehe vorherige Definition von ’AtlTrace’
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2504: ’CVirtualBuffer’: Basisklasse undefiniert
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1762): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "ATL::CArrayRowset".
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2143: Syntaxfehler: Es fehlt ’,’ vor ’<’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(133) : error C2011: ’COleControlContainer’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(94): Siehe Deklaration von ’COleControlContainer’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(220) : error C2011: ’COleControlSite’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(203): Siehe Deklaration von ’COleControlSite’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(422) : error C2011: ’COccManager’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(471) : error C2011: ’_AFX_OCC_DIALOG_INFO’: ’struct’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(511): Siehe Deklaration von ’_AFX_OCC_DIALOG_INFO’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(145) : error C2011: ’CPushRoutingFrame’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\AfxPriv.h(747): Siehe Deklaration von ’CPushRoutingFrame’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(346) : warning C4005: ’_countof’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\include\stdlib.h(397): Siehe vorherige Definition von ’_countof’
ExtControlBarTabbedFeatures.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(145) : error C2011: ’CPushRoutingFrame’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\AfxPriv.h(747): Siehe Deklaration von ’CPushRoutingFrame’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(346) : warning C4005: ’_countof’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\include\stdlib.h(397): Siehe vorherige Definition von ’_countof’
ExtControls.cpp
ExtDatePicker.cpp
ExtDockBar.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(145) : error C2011: ’CPushRoutingFrame’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\AfxPriv.h(747): Siehe Deklaration von ’CPushRoutingFrame’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(346) : warning C4005: ’_countof’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\include\stdlib.h(397): Siehe vorherige Definition von ’_countof’
ExtDurationWnd.cpp
ExtEdit.cpp
ExtGridWnd.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(26) : warning C4005: ’AtlTrace’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\atldebugapi.h(119): Siehe vorherige Definition von ’AtlTrace’
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2504: ’CVirtualBuffer’: Basisklasse undefiniert
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1762): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "ATL::CArrayRowset".
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2143: Syntaxfehler: Es fehlt ’,’ vor ’<’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(133) : error C2011: ’COleControlContainer’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(94): Siehe Deklaration von ’COleControlContainer’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(220) : error C2011: ’COleControlSite’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(203): Siehe Deklaration von ’COleControlSite’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(422) : error C2011: ’COccManager’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(471) : error C2011: ’_AFX_OCC_DIALOG_INFO’: ’struct’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(511): Siehe Deklaration von ’_AFX_OCC_DIALOG_INFO’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(145) : error C2011: ’CPushRoutingFrame’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\AfxPriv.h(747): Siehe Deklaration von ’CPushRoutingFrame’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/AfxImpl.h(346) : warning C4005: ’_countof’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\include\stdlib.h(397): Siehe vorherige Definition von ’_countof’
Prof-UIS is automatically linking with oleaut32.lib
(OLE automation)
ExtGroupBox.cpp
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(26) : warning C4005: ’AtlTrace’: Makro-Neudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\atldebugapi.h(119): Siehe vorherige Definition von ’AtlTrace’
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2504: ’CVirtualBuffer’: Basisklasse undefiniert
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1762): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "ATL::CArrayRowset".
c:\program files\microsoft platform sdk for windows server 2003 r2\src\mfc\atldbcli.h(1705) : error C2143: Syntaxfehler: Es fehlt ’,’ vor ’<’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(133) : error C2011: ’COleControlContainer’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(94): Siehe Deklaration von ’COleControlContainer’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(220) : error C2011: ’COleControlSite’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(203): Siehe Deklaration von ’COleControlSite’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(422) : error C2011: ’COccManager’: ’class’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(463): Siehe Deklaration von ’COccManager’
C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\../src/mfc/occimpl.h(471) : error C2011: ’_AFX_OCC_DIALOG_INFO’: ’struct’ Typneudefinition
C:\Devel\Microsoft Visual Studio 8\VC\atlmfc\include\afxocc.h(511): Siehe Deklaration von ’_AFX_OCC_DIALOG_INFO’
ExtHook.cpp
Code wird generiert...
Ergebnisse
Das Buildprotokoll wurde unter "file://c:\Program Files (x86)\FOSS Software Inc\Prof-UIS\Bin_800\AnsiDebug\ProfUISDLL\BuildLog.htm" gespeichert.
ProfUISDLL - 47 Fehler, 11 Warnung(en)
|
|
Technical Support
|
Jan 9, 2009 - 8:32 AM
|
Please invoke the Tools | Options</n> menu in your Visual Studio 2005, then select the <b>Projects and Solutions / VC++ Directories tree item and check the Include files folders list. It should begin with the standard directories of Visual Studio 2005:
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
$(VCInstallDir)PlatformSDK\include
$(FrameworkSDKDir)include
If you have installed some newer Platform SDK, DDK, DirectX SDK, then its installation can add additional folders into the top of the Include files folders list. For instance, last DirectX SDK can add folders like C:\Program Files (x86)\Microsoft DirectX SDK (November 2008)\Include into the top of this list. Please move all the newer SDK folders to the bottom of the Include files folders list. Then you should be able to compile Prof-UIS correctly.
|
|
Offer Har
|
Jan 8, 2009 - 11:19 AM
|
Dear Support, I am sending you another application to reproduce a bug related to ItemHide and ItemRemove . Please re-evaluate these two functions, as there are sevral issues there, and our code rely on these two functrion. Please let us know that you received the application that you were able to reproduce the bug. Thanks, Ron.
|
|
Technical Support
|
Jan 8, 2009 - 2:38 PM
|
You can fix this by updating the following method:</p> void CExtTreeGridCellNode::TreeNodeHiddenSet(
CExtTreeGridDataProvider & _DP,
bool bHide
)
{
ASSERT_VALID( this );
ASSERT_VALID( (&_DP) );
ASSERT_KINDOF( CExtTreeGridDataProvider, (&_DP) );
bool bHidden = TreeNodeHiddenGet();
if( ( bHidden && bHide ) || ( (!bHidden) && (!bHide) ) )
return;
if( bHide )
{
if( TreeNodeIsDisplayed() )
{
ULONG nOffset = TreeNodeCalcOffset( true, false );
if( nOffset != ULONG(-1L) )
{
ASSERT( _DP.m_arrGridVis[ nOffset ] == this );
INT nCountToRemove = _ContentWeight_Get( true );
_DP.m_arrGridVis.RemoveAt( nOffset, nCountToRemove + 1 );
CExtTreeGridCellNode * pNodeParent = TreeNodeGetParent();
if( pNodeParent != NULL )
{
ASSERT_VALID( pNodeParent );
pNodeParent->_ContentWeight_Decrement( nCountToRemove + 1, true );
}
}
}
ModifyStyleEx( __EGCS_EX_HIDDEN_TREE_NODE, 0 );
} // if( bHide )
else
{
ModifyStyleEx( 0, __EGCS_EX_HIDDEN_TREE_NODE );
if( TreeNodeIsDisplayed() )
{
_ContentWeight_Adjust();
ULONG nOffset = TreeNodeCalcOffset( true, false );
if( nOffset != ULONG(-1L) )
{
m_nContentWeightAll = ULONG( m_arrChildren.GetSize() );
INT nCountToInsert = _ContentWeight_CalcVisible();
//INT nCountToInsert = _ContentWeight_Get( true );
// ULONG nOffset = TreeNodeCalcOffset( true );
// ASSERT( nWeightVisible >= pNode->TreeNodeGetChildCount() );
_DP.m_arrGridVis.InsertAt( nOffset, NULL, nCountToInsert + 1 );
_DP.m_arrGridVis.SetAt( nOffset, this );
nOffset ++;
_Content_FillVisibleArray( _DP.m_arrGridVis, nOffset );
// CExtTreeGridCellNode * pNodeParent = TreeNodeGetParent();
// if( pNodeParent != NULL )
// {
// ASSERT_VALID( pNodeParent );
// pNodeParent->_ContentWeight_Increment( nCountToInsert + 1, true );
// }
}
}
} // else from if( bHide )
}
This is not the final fix. We are working on a similar issue related to more complicated nested row layouts in report grid. The fix above is related to a tree grid only.
|
|
Offer Har
|
Jan 8, 2009 - 10:57 AM
|
Dear Support, Please run the application I sent you to reproduce the last bug I reported in ItemHide, and press the buttons in order, and then press button 4 four times. You will see that the tree lines are cut-off in the middle, I think that this hides a bigger bug. Please fix. Thanks, Ron.
|
|
Technical Support
|
Jan 8, 2009 - 2:37 PM
|
You can fix this by updating the following method: void CExtTreeGridCellNode::TreeNodeHiddenSet(
CExtTreeGridDataProvider & _DP,
bool bHide
)
{
ASSERT_VALID( this );
ASSERT_VALID( (&_DP) );
ASSERT_KINDOF( CExtTreeGridDataProvider, (&_DP) );
bool bHidden = TreeNodeHiddenGet();
if( ( bHidden && bHide ) || ( (!bHidden) && (!bHide) ) )
return;
if( bHide )
{
if( TreeNodeIsDisplayed() )
{
ULONG nOffset = TreeNodeCalcOffset( true, false );
if( nOffset != ULONG(-1L) )
{
ASSERT( _DP.m_arrGridVis[ nOffset ] == this );
INT nCountToRemove = _ContentWeight_Get( true );
_DP.m_arrGridVis.RemoveAt( nOffset, nCountToRemove + 1 );
CExtTreeGridCellNode * pNodeParent = TreeNodeGetParent();
if( pNodeParent != NULL )
{
ASSERT_VALID( pNodeParent );
pNodeParent->_ContentWeight_Decrement( nCountToRemove + 1, true );
}
}
}
ModifyStyleEx( __EGCS_EX_HIDDEN_TREE_NODE, 0 );
} // if( bHide )
else
{
ModifyStyleEx( 0, __EGCS_EX_HIDDEN_TREE_NODE );
if( TreeNodeIsDisplayed() )
{
_ContentWeight_Adjust();
ULONG nOffset = TreeNodeCalcOffset( true, false );
if( nOffset != ULONG(-1L) )
{
m_nContentWeightAll = ULONG( m_arrChildren.GetSize() );
INT nCountToInsert = _ContentWeight_CalcVisible();
//INT nCountToInsert = _ContentWeight_Get( true );
// ULONG nOffset = TreeNodeCalcOffset( true );
// ASSERT( nWeightVisible >= pNode->TreeNodeGetChildCount() );
_DP.m_arrGridVis.InsertAt( nOffset, NULL, nCountToInsert + 1 );
_DP.m_arrGridVis.SetAt( nOffset, this );
nOffset ++;
_Content_FillVisibleArray( _DP.m_arrGridVis, nOffset );
// CExtTreeGridCellNode * pNodeParent = TreeNodeGetParent();
// if( pNodeParent != NULL )
// {
// ASSERT_VALID( pNodeParent );
// pNodeParent->_ContentWeight_Increment( nCountToInsert + 1, true );
// }
}
}
} // else from if( bHide )
}
This is not the final fix. We are working on a similar issue related to more complicated nested row layouts in report grid. The fix above is related to a tree grid only.
|