Subject |
Author |
Date |
|
WookJong Yu
|
Feb 6, 2007 - 8:36 AM
|
I try to compile the Prof-UIS DLLs but VS 2005 crash. Sample project too. No error message and no build log. ( Build log file size is zero.) Could you please tell me why this cause?
(Static library compile is no problem. )
OS : Windows XP SP2 ( Korean Version ) Compiler : Visual Studio 2005 ( Korean Version ) Memory : 1GB
|
|
Technical Support
|
Feb 6, 2007 - 12:55 PM
|
The resource compiler of Visual Studio 2005 crashes while compiling Prof-UIS resources when the Windows localeis set to any of Asian languages. You can work around this by switching your Windows locale to English to compile Prof-UIS DLLs. If you need to use Prof-UIS static libraries (that when you compile your project are part of your project), you can develop your project using Prof-UIS DLLs first and switch to static libraries before the final release of your project.
If switching to the English locale as the permanent locale of your Windows is not a problem for you, then the resource compilation problem will gone forever.
|
|
Brett Cook
|
Feb 5, 2007 - 11:44 AM
|
Dear tech support,
I have created a CExtToolControlBar inside of my CView following the examples in ProfStudio. Everything works fine, except the toolbar does not seem to be receiving mouse over messages. Meaning tooltips do not work, and the highlight of which button the mouse is hovering over does not work.
Is there something I need to do to ensure the toolbar gets these messages so the tooltips work?
Thanks, -Brett
|
|
Brett Cook
|
Feb 8, 2007 - 12:05 PM
|
Here are the specifics of what I am doing:
I have a class CMyView which is a child of CBaseView which is a child of CView. In my mainframe, I am creating a CExtControlBar and creating CMyView inside of it using the following code:
CRuntimeClass * pRTC = RUNTIME_CLASS(CMyView);
CView * pView = STATIC_DOWNCAST( CView, pRTC->CreateObject() );
if ( !pView->Create(::AfxRegisterWndClass(0), _T(""), WS_CHILD|WS_VISIBLE, CRect(0,0,0,0), &m_wndMyBar, m_wndMyBar.GetDlgCtrlID(), NULL) )
{
TRACE0("Failed to create My view\n");
return -1;
}
In the OnCreate() of CMyView, I am creating a CExtToolControlBar using the following code: if( (! m_wndToolBar.Create(
NULL,
this,
AFX_IDW_TOOLBAR,
WS_CHILD|WS_VISIBLE
|WS_CLIPCHILDREN|WS_CLIPSIBLINGS
|CBRS_ALIGN_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS
|CBRS_FLYBY|CBRS_SIZE_DYNAMIC
) )
|| (! m_wndToolBar.LoadToolBar(
IDR_MY_TOOLBAR ) )
)
{
ASSERT( FALSE );
return -1;
}
It is this toolbar that does not behave properly when the m_wndMyBar is floating. I would like to send you a UI shell of my program, however it has proven very difficult to strip out the guts of it. Thanks for your help, -Brett
|
|
Technical Support
|
Feb 11, 2007 - 12:13 PM
|
We cannot say what’s wrong based on the information you provided. So we do need some project so that we can help you. It can be a version of your program or a modified version of one of our samples...
|
|
Brett Cook
|
Feb 7, 2007 - 12:58 PM
|
Actually, I am having an issue with this when the controlbar is floating. The toolbar does not seem to receive ON_UPDATE_COMMAND_UI messages when floating and tooltips do not work.
Is there some setting that needs to be set in order for the floating behavior to work like the docked behavior?
Thanks, -Brett
|
|
Technical Support
|
Feb 8, 2007 - 3:56 AM
|
The re-dockable toolbars which are enabled for switching into the floating state can be created inside a frame window only. If the toolbar is created inside any other kind of window, then it will have static behavior similar to the status bar’s behaviors. You told us you have created your toolbar inside view window. If this is true, then your toolbar will never become floating. We need to know more details about your project. We will clarify the source of any project much faster if you sent it to us.
|
|
Suhai Gyorgy
|
Feb 8, 2007 - 1:54 AM
|
Just a guess: Maybe with floating controlbar the mainframe is the first to get the message, but there it is not handled. In some samples I saw this code: BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
if( m_wndMenuBar.TranslateMainFrameMessage(pMsg) )
return TRUE;
// first let the view handle the message
if( m_wndView.PreTranslateMessage(pMsg) )
return TRUE;
return CFrameWnd::PreTranslateMessage( pMsg );
}
Of course this exact code is only good with SDI, but I’m guessing the same approach might solve your problem, too.
|
|
Brett Cook
|
Feb 5, 2007 - 11:58 AM
|
Nevermind, the buttons in question were simply disabled. Doh! All works well now. Thanks =).
|
|
Suhai Gyorgy
|
Feb 5, 2007 - 6:37 AM
|
Dear Support,
Is there any way I could put a button in a CExtPropertyCategory’s cell? I understand that this line is two cells merged together, but I couldn’t find any function to get hold of this cell.
Thank you! Chris
|
|
Technical Support
|
Feb 5, 2007 - 12:56 PM
|
Any cell with category name is represented by the CExtPropertyGridCellArea class. So you can use a CExtPropertyGridCellArea -derived class instead. You can use any built-in buttons provided by CExtGridCell (drop-down, up-down and/or ellipsis) in such a class. Here is how to use this class.
1) Override the CExtPropertyGridCtrl::OnPgcCreateGrids() method. Make it the same as the original one except for a custom CExtPropertyGridWndCategorized class should be created in it.
2) Override CExtPropertyGridWndCategorized::PropertyItemInsert() so that your custom CExtPropertyGridCellArea is created in it.
Please contact us if you have any questions with this.
|
|
John Fliczuk
|
Feb 4, 2007 - 9:59 PM
|
I try to compile the sample project with following sequence: StdAfx.cpp->MainFrm.cpp->ChildView.cpp->RibbonBar.cpp and then build it....What a exciting stuff happening...VS 2005 crash Could you please tell me why this cause ASAP? Thanks a lot ˆ.ˆ
|
|
John Fliczuk
|
Feb 5, 2007 - 1:06 AM
|
I find that VS 2005 is crash when compiling file *.rc, is it a bug or something?
|
|
Technical Support
|
Feb 5, 2007 - 12:37 PM
|
You can change the Windows locale settings to English in order to avoid this bug of the MS 2005 resource compiler when you are compiling Unicode resources.
|
|
Andrew Banks
|
Feb 3, 2007 - 8:33 AM
|
Have a RibbonBar button with the __ECTN_TBB_SEPARATED_DROPDOWN style.
I see how to fill its menu at design time.
Cant see how to catch the click on the button to runtime fill the popup menu.
For example, Ribbonbar combox have: OnPopupListBoxInitContent to fill at run time.
|
|
Technical Support
|
Feb 5, 2007 - 11:59 AM
|
|
|
Andrew Banks
|
Feb 5, 2007 - 12:46 PM
|
Yea, but this popup was created from a ribbon bar node. Like below pRibbonGroupEntry->ModifyFlags( __ECTN_TBB_SEPARATED_DROPDOWN );
So, I can’t do what you say.
As I said for example, Ribbon Bar combos are caught as follows: bool CMyRibbonBar::OnPopupListBoxInitContent( CExtBarButton * pTBB, CExtCustomizeCmdTreeNode * pNode, CListBox & wndListBox ) This is different from the normal way of catching combos.
I don’t see anything like this for RibbonBar menus So the problem is I dont know when the menu is about to popup.
|
|
Technical Support
|
Feb 6, 2007 - 3:42 AM
|
In your code you create some pRibbonGroupNode command button node which is configured as a drop-down button. Create only one child (CExtCustomizeCmdTreeNide ) in the pRibbonGroupNode node. The child node should have some known ID_MARKER command identifier. Add a CExtPopupMenuWnd::g_nMsgPrepareOneMenuLevel handler to your main frame class. The method will be invoked by any Prof-UIS popup menu immediately before it appears on the screen. In this method, make a search for the ID_MARKER command item. If the item is found, remove it and add a set of other menu items instead of removed item. Here is how the code may look: // Method declaration:
LRESULT OnExtMenuPrepareLevel( WPARAM wParam, LPARAM lParam );
// Message map entry:
ON_REGISTERED_MESSAGE( CExtPopupMenuWnd::g_nMsgPrepareOneMenuLevel, OnExtMenuPrepareLevel )
// Implementation template:
LRESULT CMainFrame::OnExtMenuPrepareLevel( WPARAM wParam, LPARAM lParam )
{
lParam;
CExtPopupMenuWnd::MsgPrepareMenuData_t * pData =
reinterpret_cast
< CExtPopupMenuWnd::MsgPrepareMenuData_t * >
( wParam );
ASSERT( pData != NULL );
CExtPopupMenuWnd * pPopup = pData->m_pPopup;
ASSERT( pPopup != NULL );
CExtPopupMenuWnd * pPopupParent = pPopup->GetParentMenuWnd();
INT nItemPos = pPopup->ItemFindPosForCmdID(ID_MARKER );
if( nItemPos >= 0 )
{
pPopup->ItemRemove( nItemPos );
// TO DO: insert other menu items into pPopup sub menu here
} // if( nItemPos > 0 )
return 1;
|
|
Timothy Anderson
|
Feb 2, 2007 - 7:10 PM
|
CExtCmdItem * pCmdItem = CmdGetPtr(nCmdId); ASSERT( pCmdItem != NULL ); ASSERT( !(pCmdItem->StateIsBasic()) ); ASSERT( !(pCmdItem->StateIsForceRarely()) ); ASSERT( !(CExtCmdManager::IsSystemCommand(pCmdItem->m_nCmdID)) ); pCmdItem->m_nUsageTickCount = nUsageTickCount;
My code was lifted directly from the MDI example. I could just ignore it in 2k3 but in 2k5 it gets really grumpy. The pCmdItem is null.
|
|
Timothy Anderson
|
Feb 2, 2007 - 7:34 PM
|
// Inside OnCreate VERIFY(g_CmdManager->ProfileSetup(pApp->m_pszProfileName, GetSafeHwnd()));
// Move these calls just below above instead of having too far down after a bunch of other windows were created VERIFY(g_CmdManager->UpdateFromMenu(pApp->m_pszProfileName, IDR_MAINFRAME)); VERIFY(g_CmdManager->UpdateFromToolBar(pApp->m_pszProfileName, IDR_MAINFRAME)); VERIFY(g_CmdManager->UpdateFromMenu(pApp->m_pszProfileName, IDR_CELL_ALLMENU));
|
|
marc uchida
|
Feb 2, 2007 - 1:02 PM
|
Essentially I have some text with the ’&’ in it. This test gets loaded into the document title, which is also displayed in my document tab label (ie. CExtTabWnd, CExtTabMdiWnd, or CExtTabMdiOneNoteWnd class object). My label in the tab itself has lost all ’&’ characters and has instead taken its presence as a signal that I want its following character underlined, as per the way Quick Keys in menus function. I know I can replace all ’&’ with ’&&’, but this is not really want I want to do and I thought there must be an option to disable this behaviour instead. Any ideas? thanks
|
|
Technical Support
|
Feb 22, 2007 - 3:35 AM
|
We are sorry for the delay with this reply. We were not sure how to implement this feature in Prof-UIS. We can make tab windows displaying underlined characters. But we also need to add an additional API to make appropriate keyboard accelerators working. This means the tab window should be able to participate in message pre-translation routes and eat up the keyboard key combinations relating to the tab item activation. In simple words, your application will be responsible for invoking something like m_wndTabs.TranslateMainFrameMessage( pMsg ) code from the CMainFrame::PreTranslateMessage() virtual method.
|
|
Ed Grochowski
|
Feb 2, 2007 - 11:55 AM
|
We have created a small toolbar inside the status bar. The status bar is now a little taller than the default to accommodate our desired icon sizes.
Now when we use tooltips and the programs window is maximized, they appear right on top of the toolbar icons (under the cursor) thereby making them unusable.
The tooltips in the standard toolbars appear below the buttons which is fine. I am guessing that because the statusbar is at the bottom edge of the screen it shifts them up... but they end up in the wrong position.
Is there a way to change where the tooltips are positioned with respect to the buttons (say above instead of below)?
|
|
Ed Grochowski
|
Mar 2, 2007 - 12:58 PM
|
Unfortunately this has no effect.
We current pass WS_CHILD | WS_VISIBLE | CBRS_ALIGN_BOTTOM | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC to the creation routine.
If I add either CBRS_TOP or CBRS_BOTTOM to the above flags it still does not have the desired effect.
Strangely enough... if I remove the CBRS_TOOLTIPS flag... it still does tooltips?
|
|
Technical Support
|
Mar 3, 2007 - 6:27 AM
|
Thank you for reporting these issues. To fix this, please update the source code for the CExtControlBar::OnAdvancedPopupMenuTipWndGet() and CExtControlBar::OnAdvancedPopupMenuTipWndDisplay() methods in the ../Src/ExtControlBar.cpp file: CExtPopupMenuTipWnd * CExtControlBar::OnAdvancedPopupMenuTipWndGet() const
{
if( ! g_bUseAdvancedToolTips )
return NULL;
if( m_bSuspendTips )
return NULL;
if( ( ( ( const_cast < CExtControlBar * > ( this ) ) -> GetBarStyle() ) & CBRS_TOOLTIPS ) == 0 )
return NULL;
return (&( CExtPopupMenuSite::g_DefPopupMenuSite.GetTip() ));
}
void CExtControlBar::OnAdvancedPopupMenuTipWndDisplay(
CExtPopupMenuTipWnd & _ATTW,
const RECT & rcExcludeArea,
__EXT_MFC_SAFE_LPCTSTR strTipText
) const
{
ASSERT_VALID( this );
ASSERT( strTipText != NULL && _tcslen( strTipText ) > 0 );
if( IsFixedMode()
&& IsFixedDockStyle()
&& ( ( m_pDockSite != NULL
&& GetSafeDockBarDlgCtrlID() == AFX_IDW_DOCKBAR_BOTTOM
)
|| ( ( ( const_cast < CExtControlBar * > ( this ) ) -> GetBarStyle() ) & CBRS_ALIGN_BOTTOM ) != 0
)
)
_ATTW.SetTipStyle( CExtPopupMenuTipWnd::__ETS_INV_RECTANGLE_NO_ICON );
else
_ATTW.SetTipStyle( CExtPopupMenuTipWnd::__ETS_RECTANGLE_NO_ICON );
_ATTW.SetText( strTipText );
_ATTW.Show( (CWnd*)this, rcExcludeArea );
}
|
|
Technical Support
|
Feb 5, 2007 - 11:50 AM
|
The CExtToolControlBar toolbar is created using the CExtControlBar::Create() method that takes a parameter with window styles. Its default value combines several CBRS_*** control bar styles. You can set CBRS_TOP or CBRS_BOTTOM to specify the tooltip’s location.
|
|
Vincent Lin
|
Feb 2, 2007 - 3:03 AM
|
Hello, How to make CExtSliderWnd object no focus-rect ? just like CExtButton::SetDrawFocusRect( false); thanks.
|
|
Technical Support
|
Feb 2, 2007 - 11:33 AM
|
The CExtSliderWnd control is a custom-drawn version of the standard CSliderCtrl control. So we cannot control how the focus rectangle is painted and you should use a completely re-painted slider control like that represented by the CInplaceSliderWnd class in the AdoRecordsetView sample.
|
|
Andrew Banks
|
Feb 1, 2007 - 6:15 PM
|
Total width size of grid, including borders, how to get.
|
|
Technical Support
|
Feb 2, 2007 - 4:48 AM
|
You can get the width of a column using OnSiwQueryItemExtentH( )and the height using OnSiwQueryItemExtentV(). The total width and height of the grid can be calculated by summing up all the returned values plush the width and/or height of outer rows/columns (OuterRowHeightGet() and OuterColumnWidthGet() ). You can get the number of outer rows and columns using OuterRowCountTopGet(), OuterRowCountBottomGet(), OuterColumnCountLeftGet() and OuterColumnCountRightGet() . And the number of inner rows and columns using the RowCountGet() and ColumnCountGet() methods. The grid window does not implement any borders. The borders of data and header cells are inner parts of these cells. The grid window borders are provided by the default window procedure. You can compute them by retrieving grid window and client rectangle and finding differences between them.
|
|
Paul Cowan
|
Feb 1, 2007 - 2:45 PM
|
CExtGridCellNumber seems to be missing to very important methods, a Set and Get to initialize and read the numeric value in the cell. What am I missing, there must be a way of doing it.
|
|
Technical Support
|
Feb 2, 2007 - 5:06 AM
|
In additional, you can invoke the CEdit::SetLimitText() method for the cell inplace edit. You can do this by overriding the OnInplaceControlCreate() virtual method in your cell class: HWND CMyGridCell::OnInplaceControlCreate(
CExtGridWnd & wndGrid,
LONG nVisibleColNo,
LONG nVisibleRowNo,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType,
const RECT & rcCellExtra,
const RECT & rcCell,
const RECT & rcInplaceControl,
LONG nLastEditedColNo,
LONG nLastEditedRowNo
)
{
ASSERT_VALID( this );
ASSERT_VALID( (&wndGrid) );
DWORD dwCellStyle = GetStyle();
if( (dwCellStyle&__EGCS_NO_INPLACE_CONTROL) != 0 )
return NULL;
HWND hWndOuter =
wndGrid.OnGridCellInplaceControlCreate(
*this,
nVisibleColNo,
nVisibleRowNo,
nColNo,
nRowNo,
nColType,
nRowType,
rcCellExtra,
rcCell,
rcInplaceControl,
nLastEditedColNo,
nLastEditedRowNo
);
if( hWndOuter != NULL )
return hWndOuter;
CExtGridInplaceEdit * pEdit = NULL;
try
{
pEdit =
new CExtGridInplaceEdit(
wndGrid,
*this,
nVisibleColNo,
nVisibleRowNo,
nColNo,
nRowNo,
nColType,
nRowType,
rcCellExtra,
rcCell,
rcInplaceControl,
nLastEditedColNo,
nLastEditedRowNo
);
ASSERT_VALID( pEdit );
if( ! pEdit->Create() )
{
ASSERT( FALSE );
return NULL;
} // if( ! pEdit->Create() )
} // try
catch( CException * pXept )
{
ASSERT( FALSE );
pXept->Delete();
return NULL;
} // catch( CException * pXept )
catch( ... )
{
ASSERT( FALSE );
return NULL;
} // catch( ... )
ASSERT_VALID( pEdit );
pEdit-> SetLimitText( ... );
HWND hWnd = pEdit->GetSafeHwnd();
ASSERT( hWnd != NULL && ::IsWindow(hWnd) );
return hWnd;
}
|
|
Suhai Gyorgy
|
Feb 2, 2007 - 2:47 AM
|
You can use CExtGridCell::GetVariant to get and CExtGridCellVariant::_VariantAssign to set the value in your number cell. CExtGridCellNumber is derived from CExtGridCellVariant, so both methods are available for you.
|
|
Paul Cowan
|
Feb 1, 2007 - 12:42 PM
|
How can I set a limit to the number of characters that can be entered into a cell, specifically a CExtGridCellNumber cell?
|
|
Technical Support
|
Feb 2, 2007 - 4:29 AM
|
You can control this in the following two ways: 1) At the cell level. Override the CExtGridCell::OnInplaceControlTextInputVerify() method. 2) At the grid level. Overide the CExtGridWnd::OnGridCellInplaceControlTextInputVerify() method.
CExtGridCell::OnInplaceControlTextInputVerify() method of each cell calls the CExtGridWnd::OnGridCellInplaceControlTextInputVerify() method of the grid. So it is up to you which method to use.
|
|
Offer Har
|
Feb 1, 2007 - 10:00 AM
|
Dear Support,
We need a cell with text and an image to the left of it, much like the combo-box cell, but a normal string cell. I could not find any sample or implementation of such.
Best Regards, Ron.
|
|
Technical Support
|
Feb 1, 2007 - 11:32 AM
|
Any grid cell supports an icon. The grid window can keep an array of icon objects and a grid cell can keep the index of an icon in that array. Here is the list of relevant methods: INT CExtGridWnd::GridIconGetCount() const
CExtCmdIcon * CExtGridWnd::GridIconGetAt( INT nIdx )
const CExtCmdIcon * CExtGridWnd::GridIconGetAt( INT nIdx ) const
INT CExtGridWnd::GridIconInsert( // returns index or -1
CExtCmdIcon * pIcon,
INT nIdx, // = -1 // append
bool bCopyIcon // = true
)
INT CExtGridWnd::GridIconInsert( // returns index or -1
const CExtCmdIcon * pIcon,
INT nIdx, // = -1 // append
bool bCopyIcon // = true
)
INT CExtGridWnd::GridIconRemove(
INT nIdx, // = 0
INT nCountToRemove // = -1 // all
)
INT CExtGridCell::IconIndexGet() const
INT CExtGridCell::IconIndexSet(
INT nIconIndex // = -1 // -1 - remove icon
) If the icon index is less than zero (by default), no icon is displayed in the cell. BTW The same design is applicable for fonts.
|
|
Offer Har
|
Feb 1, 2007 - 1:41 PM
|
Dear Support,
Lets say i want to set an icon to a cell how do i do it? I would like the cell to keep showing the text i set to it.
I see that IconIndexSet in CExtGridCell does nothing, and m_nIconIndex is not used anywhere.
What cell type should i use to have an icon and a text?
Thanks, Ron.
|
|
Suhai Gyorgy
|
Feb 2, 2007 - 3:38 AM
|
I tried this in ProfUIS_Controls sample’s Grid page. I just had to add 2 lines of code: - In CPageGrid::OnInitDialog I added the line
m_wndGrid.GridIconInsert(g_CmdManager->CmdGetIconPtr(g_CmdManager->ProfileNameFromWnd(m_hWnd), ID_EDIT_COPY)); right after m_wndGrid.SiwModifyStyleEx(...) call. - In CPageGrid::_InitColumnText, where all the CExtGridCellString cells are inititalized, I added the line
pCellString0->IconIndexSet(0); right after pCellString0->TextSet( _T("Cell1") ); call. Compile and run, you can see the usual Copy icon in the first cell of the appropiate column, next to the text "Cell1". To use an image that you have in resource as ICON type, you can use the following code to insert it to the grid (again tried in ProfUIS sample): CExtCmdIcon icon;
icon.AssignFromHICON(LoadIcon(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_EDIT)), true);
m_wndGrid.GridIconInsert(&icon);
and the same code to assign the icon to the cell.
|
|
Offer Har
|
Feb 1, 2007 - 7:59 AM
|
Dear Support,
How do i set a column’s width in a grid from the code? I can’t find any ColumnWidthSet function.
Best Regards, Ron.
|
|
Technical Support
|
Feb 1, 2007 - 11:26 AM
|
There is a header row in each of three grids inside the property grid control. The header row is invisible because its its height set to zero. You should get the header cell in the first column and use its ExtentSet() method to specify the column’s width.
|
|
Vincent Lin
|
Feb 1, 2007 - 4:55 AM
|
I derive one CExtGridWnd class , and override it’s OnGridCellInplaceControlTextInputVerify(). but this member function don’t be called while edit the cell (derived from CExtGridCellString), why ?
and I also override OnGridCellInplaceControlTextInputComplete(), this function has be called, but the edit result always be saved whether the parameter bSaveChanges is true of false.
|
|
Technical Support
|
Feb 1, 2007 - 5:32 AM
|
Please check if the signature of the overridden method in scope of your class is correct and exactly the same as: virtual bool OnGridCellInplaceControlTextInputVerify(
const CExtGridCell & _cell,
HWND hWndInplaceControl,
LONG nVisibleColNo,
LONG nVisibleRowNo,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType,
__EXT_MFC_SAFE_LPCTSTR sTextInitial,
__EXT_MFC_SAFE_LPCTSTR sTextPrevious,
CExtSafeString & sTextNew,
bool bEndEdit
); After that, please note that adding virtual methods to the debug version of the project sometimes requires the project to be completely rebuilt. So rebuild your project completely and check again if the method is invoked while editing grid cell’s text value.
|
|
Vincent Lin
|
Jan 31, 2007 - 8:43 PM
|
I has create a CExtGridCellString-derived class, and override TextSet(). I want to get the Row/Column number while the cell is changed. How can I get the Row/Column number in my class member TextSet() ? thanks.
|
|
Technical Support
|
Feb 1, 2007 - 11:42 AM
|
A particular CExtGridCell object knows nothing about its location in the grid. The only one way is to traverse all the cells and compare these cell objects with this cell itself. If you need to know the cell location when the user changes its value, the TextSet() method is not good for this. There is an OnInplaceControlTextInputComplete() virtual method which notifies the cell object when the in-place editor gets closed. In this method the nColNo and nRowNo parameters allows you to get the cell’s coordinates. Please note that you can also override the CExtGridWnd::OnGridCellInputComplete() method which is invoked when a cell has been changed.
|
|
Gevork Odabashyan
|
Jan 31, 2007 - 10:56 AM
|
Hello
As far as I understand I must use CExtResourceManager::LoadBitmap to load image into CExtBitmap-object. What next?
|
|
Technical Support
|
Feb 1, 2007 - 4:51 AM
|
If you need to create the cursor from a bitmap, you can create a GDI bitmap handle and use it when calling the CreateIconIndirect() API (there is actually no difference between icons and cursors). If you need to load a cursor resource, simply use the LoadCursor() API.
|
|
Andrew Banks
|
Jan 30, 2007 - 5:35 PM
|
This code correctly puts an icon in the ribbon bar for the file button Ribbon_FileButtonGet() -> m_iconForLargeMode.m_bmpNormal. LoadBMP_Resource( MAKEINTRESOURCE( IDB_BITMAP_SMALL_ICON ) ) );
if I do anything to change the bitmap for IDB_BITMAP_SMALL_ICON in the ribbonbar example, the entire bitmap paints and there is not button.
I have tried Ribbon_FileButtonGet() -> m_iconForLargeMode.m_bmpNormal.AlphaColor( RGB(255,0,255), RGB(0,0,0), 0 );
and changed the bitmap to a 255,0,255 backgraound but that does not work.
I just want a new icon for the file button in bitmap format.
How can I do that?
|
|
Andrew Banks
|
Feb 3, 2007 - 8:35 AM
|
When you have time, please answer this. Any edit of the Ribbonbar file button bitmap causes it to paint incorrectly.
|
|
Technical Support
|
Feb 5, 2007 - 12:33 PM
|
The problem may have to do with the fact that not all image editing programs (e.g. S Paint and Adobe Photoshop) can correctly save images as Windows 32-bit bitmaps with alpha channel. The later format is needed for the AlphaBlend() and UpdateWindowLayer() Win32 APIs. We are aware at least of three software items that use 32-bit BMP files: the CExtBitmap and CExtCmdIcon classes in Prof-UIS, Axialis Icon Workshop and MS Office 2007 UI subsystem. The Axialis Icon Workshop provides a plugin for Adobe Photoshop which allows you to export an image to Icon Workshop so you can then save the valid 32-bit BMP file.
You can also use PNG images instead of 32-bit BMP images. The CExtSkinBitmap class in the ProfSkin library allows you to load PNG images. The CExtBitmap objects inside ribbon bar’s command nodes can be assigned from CExtSkinBitmap objects. The PNG image format is lossless (it is ZIPped data containing original bytes of image surface) and can be used to reduce the size of your application. But 32-bit BMPs are loaded faster.
|
|
Ian McIntosh
|
Jan 30, 2007 - 4:11 AM
|
Hi,
I am wanting to get a CExtControlBar to dock at the bottom of another at startup. I use: m_wndSelectionList.DockControlBarLTRB( &m_wndSystemTree, AFX_IDW_DOCKBAR_BOTTOM);
which seems to give me the positioning I am looking for but the contents of the bottom CExtControlBar does not get drawn (is just black). If I auto hide then redock it, it displays OK.
|
|
Ian McIntosh
|
Feb 15, 2007 - 4:08 AM
|
Thanks, thats done the trick.
|
|
Ian McIntosh
|
Feb 14, 2007 - 2:32 AM
|
I have now had confirmation that you have received the sample project and document with screenshots. Please can you now confirm if you are able to reproduce the problem & which version of Prof-UIS / VS you have used. Thanks.
|
|
Technical Support
|
Jan 30, 2007 - 12:03 PM
|
Could you show the code that initializes all the control bars in your main frame window. Typically it is in the CMainFrame::OnCreate() method?
|
|
Ian McIntosh
|
Jan 31, 2007 - 2:37 AM
|
It is System Tree & Selection list (underlined with a row of = below) that I am having a problem with. I would like them both docked to the left hand side, system tree at the top, selection list at the bottom.
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;
if (CExtNCW < CMDIFrameWnd >::OnCreate(lpCreateStruct) == -1) return -1;
VERIFY( g_CmdManager->ProfileWndAdd( __PROF_UIS_PROJECT_CMD_PROFILE_NAME, GetSafeHwnd() ) ); VERIFY( g_CmdManager->UpdateFromMenu( __PROF_UIS_PROJECT_CMD_PROFILE_NAME, IDR_MAINFRAME ) ); VERIFY( g_CmdManager->UpdateFromMenu( __PROF_UIS_PROJECT_CMD_PROFILE_NAME, IDR_MAINFRAME ) ); VERIFY( g_CmdManager->UpdateFromMenu( __PROF_UIS_PROJECT_CMD_PROFILE_NAME, IDR_GuiMdiTYPE ) //IDR_$$DOC$$TYPE ); //PROJTYPE_MDI if( ! m_wndRibbonBar.Create(NULL, this )) { TRACE0("Failed to create the m_wndRibbonBar toolbar\n"); return -1; // fail to create } m_wndRibbonBar.Init(); if( !m_wndToolBar.Create( NULL, // _T("Main Toolbar"), this, AFX_IDW_TOOLBAR, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_FLYBY | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_HIDE_INPLACE ) || !m_wndToolBar.LoadToolBar( IDR_MAINFRAME ) ) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create }
if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create }
// TODO: Delete these lines if you don’t want the dockable entity m_wndToolBar.EnableDocking( CBRS_ALIGN_ANY );
// Enable control bars in the frame window to be redocable //VERBOSE if( !CExtControlBar::FrameEnableDocking(this) ) { ASSERT( FALSE ); return -1; }
// Enable autohide feature for resizable control bars //VERBOSE if( !CExtControlBar::FrameInjectAutoHideAreas(this) ) { ASSERT( FALSE ); return -1; }
DockControlBar( &m_wndToolBar );
if( !m_wndMdiManager.Create( this, CRect( 0, 0, 0, 0 ), UINT( IDC_STATIC ), WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS, __ETWS_ORIENT_TOP |__ETWS_ENABLED_BTN_CLOSE |__ETWS_SHOW_BTN_CLOSE ) //PUIS_TABWINDOWFROMDI - $$__PROFUISAPPWIZ_KEY_ADF_MDITABS$$ ) { ASSERT( FALSE ); return -1; }
// Init System tree: // =========== m_wndSystemTree.SetInitDesiredSizeVertical( CSize( 200, 400 )); m_wndSystemTree.SetInitDesiredSizeHorizontal( CSize( 400, 200 )); if( !m_wndSystemTree.Create( "System Tree", // NULL, // _T("Optional control bar caption"), this, ID_SYSTEM_TREE, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER |CBRS_TOOLTIPS |CBRS_FLYBY |CBRS_SIZE_DYNAMIC |CBRS_HIDE_INPLACE ) ) { TRACE0("Failed to create m_wndSystemTree\n"); return -1; // fail to create } if( !m_wndSystemTreeCtrl.Create( WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL |TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT |TVS_INFOTIP |TVS_SINGLEEXPAND|TVS_SHOWSELALWAYS, CRect(0,0,0,0), &m_wndSystemTree, m_wndSystemTree.GetDlgCtrlID() ) ) { TRACE0("Failed to create m_wndSystemTreeCtrl\n"); return -1; // fail to create } m_wndSystemTree.SetFont( CFont::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT) )); m_wndSystemTree.EnableDocking( CBRS_ALIGN_ANY ); m_wndSystemTree.DockControlBar( AFX_IDW_DOCKBAR_LEFT, 1, this );
// Init Resource tree: m_wndResourceTree.SetInitDesiredSizeVertical( CSize( 200, 400 )); m_wndResourceTree.SetInitDesiredSizeHorizontal( CSize( 400, 200 )); if( !m_wndResourceTree.Create( "Resource Tree", // NULL, // _T("Optional control bar caption"), this, ID_RESOURCE_TREE, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER |CBRS_TOOLTIPS |CBRS_FLYBY |CBRS_SIZE_DYNAMIC |CBRS_HIDE_INPLACE ) ) { TRACE0("Failed to create m_wndResourceTree\n"); return -1; // fail to create } if( !m_wndResourceTreeCtrl.Create( WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL |TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT |TVS_INFOTIP|TVS_DISABLEDRAGDROP |TVS_SINGLEEXPAND|TVS_SHOWSELALWAYS, CRect(0,0,0,0), &m_wndResourceTree, m_wndResourceTree.GetDlgCtrlID() ) ) { TRACE0("Failed to create m_wndResourceTreeCtrl\n"); return -1; // fail to create } m_wndResourceTree.SetFont( CFont::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT) )); m_wndResourceTree.EnableDocking( CBRS_ALIGN_ANY ); m_wndResourceTree.DockControlBar( AFX_IDW_DOCKBAR_LEFT, 1, this ); m_wndResourceTree.AutoHideModeSet(true, true, true, false);
// Init Selection List: // ============ m_wndSelectionList.SetInitDesiredSizeVertical( CSize( 100, 200 )); // m_wndSelectionList.SetInitDesiredSizeHorizontal( CSize( 400, 200 )); if( !m_wndSelectionList.Create( "Selection List", // NULL, // _T("Optional control bar caption"), this, ID_SELECTION_LIST, WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER |CBRS_TOOLTIPS |CBRS_FLYBY |CBRS_SIZE_DYNAMIC |CBRS_HIDE_INPLACE ) ) { TRACE0("Failed to create m_wndSelectionList\n"); return -1; // fail to create } if( !m_wndSelectionListCtrl.Create( LVS_LIST, CRect(0,0,0,0), &m_wndSelectionList, m_wndSelectionList.GetDlgCtrlID() ) ) { TRACE0("Failed to create m_wndSelectionListCtrl\n"); return -1; // fail to create } m_wndSelectionList.SetFont( CFont::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT) )); m_wndSelectionList.EnableDocking( CBRS_ALIGN_ANY ); // m_wndSelectionList.DockControlBar( AFX_IDW_DOCKBAR_LEFT, 1, this ); m_wndSelectionList.DockControlBarLTRB( &m_wndSystemTree, AFX_IDW_DOCKBAR_BOTTOM); // m_wndSelectionList.AutoHideModeSet(true, true, true, false); /* CExtControlBar::ProfileBarStateLoad( this, pApp->m_pszRegistryKey, pApp->m_pszProfileName, pApp->m_pszProfileName, &m_dataFrameWP );
g_CmdManager->SerializeState( __PROF_UIS_PROJECT_CMD_PROFILE_NAME, pApp->m_pszRegistryKey, pApp->m_pszProfileName, false ); */ return 0; }
|
|
Technical Support
|
Feb 1, 2007 - 3:16 AM
|
Here is a new version of your CMainFrame::OnCreate() method with the fixed initialization sequence: int CMainFrame::OnCreate( LPCREATESTRUCT lpCreateStruct )
{
if( CExtNCW < CMDIFrameWnd > :: OnCreate( lpCreateStruct ) == -1 )
return -1;
/////////////////////////////////////////////////////////
// STEP 1: Initialize the command manager
/////////////////////////////////////////////////////////
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’) );
VERIFY(
g_CmdManager->ProfileWndAdd(
__PROF_UIS_PROJECT_CMD_PROFILE_NAME,
GetSafeHwnd()
)
);
VERIFY(
g_CmdManager->UpdateFromMenu(
__PROF_UIS_PROJECT_CMD_PROFILE_NAME,
IDR_MAINFRAME
)
);
VERIFY(
g_CmdManager->UpdateFromMenu(
__PROF_UIS_PROJECT_CMD_PROFILE_NAME,
IDR_MAINFRAME
)
);
VERIFY(
g_CmdManager->UpdateFromMenu(
__PROF_UIS_PROJECT_CMD_PROFILE_NAME,
IDR_GuiMdiTYPE
)
);
/////////////////////////////////////////////////////////
// STEP 2: Pre-initialize fixed size bars
// (menu bar, ribbon bar, toolbars)
/////////////////////////////////////////////////////////
if( ! m_wndRibbonBar.Create( NULL, this ) )
{
TRACE0("Failed to create the m_wndRibbonBar toolbar\n");
ASSERT( FALSE );
return -1; // fail to create
}
m_wndRibbonBar.Init();
if( (! m_wndToolBar.Create( NULL, this, AFX_IDW_TOOLBAR ) )
|| (! m_wndToolBar.LoadToolBar( IDR_MAINFRAME ) )
)
{
TRACE0("Failed to create toolbar\n");
ASSERT( FALSE );
return -1; // fail to create
}
/////////////////////////////////////////////////////////
// STEP 3: Pre-initialize resizable bars
/////////////////////////////////////////////////////////
HFONT hDefaultGuiFont = (HFONT) ::GetStockObject( DEFAULT_GUI_FONT );
if( hDefaultGuiFont == NULL )
{
hDefaultGuiFont = (HFONT) ::GetStockObject( SYSTEM_FONT );
ASSERT( hDefaultGuiFont != NULL );
}
// Init System tree (part 1):
m_wndSystemTree.SetInitDesiredSizeVertical( CSize( 200, 400 ) );
m_wndSystemTree.SetInitDesiredSizeHorizontal( CSize( 400, 200 ) );
if( ! m_wndSystemTree.Create( _T("System Tree"), this, ID_SYSTEM_TREE ) )
{
TRACE0("Failed to create m_wndSystemTree\n");
ASSERT( FALSE );
return -1; // fail to create
}
if( ! m_wndSystemTreeCtrl.Create(
WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL
|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT
|TVS_INFOTIP|TVS_SINGLEEXPAND|TVS_SHOWSELALWAYS,
CRect( 0, 0, 0, 0 ),
&m_wndSystemTree,
m_wndSystemTree.GetDlgCtrlID()
)
)
{
TRACE0("Failed to create m_wndSystemTreeCtrl\n");
ASSERT( FALSE );
return -1; // fail to create
}
m_wndSystemTree.SetFont( CFont::FromHandle( hDefaultGuiFont ) );
// Init Resource tree (part 1):
m_wndResourceTree.SetInitDesiredSizeVertical( CSize( 200, 400 ) );
m_wndResourceTree.SetInitDesiredSizeHorizontal( CSize( 400, 200 ) );
if( ! m_wndResourceTree.Create( _T("Resource Tree"), this, ID_RESOURCE_TREE ) )
{
TRACE0("Failed to create m_wndResourceTree\n");
ASSERT( FALSE );
return -1; // fail to create
}
if( ! m_wndResourceTreeCtrl.Create(
WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL
|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT
|TVS_INFOTIP|TVS_DISABLEDRAGDROP
|TVS_SINGLEEXPAND|TVS_SHOWSELALWAYS,
CRect( 0, 0, 0, 0 ),
&m_wndResourceTree,
m_wndResourceTree.GetDlgCtrlID()
)
)
{
TRACE0("Failed to create m_wndResourceTreeCtrl\n");
ASSERT( FALSE );
return -1; // fail to create
}
m_wndResourceTree.SetFont( CFont::FromHandle( hDefaultGuiFont ) );
// Init Selection List (part 1):
m_wndSelectionList.SetInitDesiredSizeVertical( CSize( 100, 200 ) );
if( ! m_wndSelectionList.Create( _T("Selection List"), this, ID_SELECTION_LIST ) )
{
TRACE0("Failed to create m_wndSelectionList\n");
ASSERT( FALSE );
return -1; // fail to create
}
if( ! m_wndSelectionListCtrl.Create(
LVS_LIST,
CRect( 0, 0, 0, 0 ),
&m_wndSelectionList,
m_wndSelectionList.GetDlgCtrlID()
)
)
{
TRACE0("Failed to create m_wndSelectionListCtrl\n");
ASSERT( FALSE );
return -1; // fail to create
}
m_wndSelectionList.SetFont( CFont::FromHandle( hDefaultGuiFont ) );
/////////////////////////////////////////////////////////
// STEP 4: Initialize status bar
/////////////////////////////////////////////////////////
if( (! m_wndStatusBar.Create( this ) )
|| (! m_wndStatusBar.SetIndicators( indicators, sizeof(indicators)/sizeof(UINT) ) ) )
{
TRACE0("Failed to create status bar\n");
ASSERT( FALSE );
return -1; // fail to create
}
/////////////////////////////////////////////////////////
// STEP 5: Enable re-docking feature only for those
// bars which need it
/////////////////////////////////////////////////////////
m_wndToolBar.EnableDocking( CBRS_ALIGN_ANY );
// Init System tree (part 2):
m_wndSystemTree.EnableDocking( CBRS_ALIGN_ANY );
// Init Resource tree (part 2):
m_wndResourceTree.EnableDocking( CBRS_ALIGN_ANY );
// Init Selection List (part 2):
m_wndSelectionList.EnableDocking( CBRS_ALIGN_ANY );
/////////////////////////////////////////////////////////
// STEP 6: Enable re-docking feature only for entire
// main frame window and, optionally, enable
// enable auto-hiding feature fore resizable
// bars
/////////////////////////////////////////////////////////
// Enable control bars in the frame window to be redocable
if( ! CExtControlBar::FrameEnableDocking( this ) )
{
ASSERT( FALSE );
return -1;
}
// Enable autohide feature for resizable control bars
if( ! CExtControlBar::FrameInjectAutoHideAreas( this ) )
{
ASSERT( FALSE );
return -1;
}
/////////////////////////////////////////////////////////
// STEP 7: Load command manager state if needed
/////////////////////////////////////////////////////////
// g_CmdManager->SerializeState(
// __PROF_UIS_PROJECT_CMD_PROFILE_NAME,
// pApp->m_pszRegistryKey,
// pApp->m_pszProfileName,
// false
// );
/////////////////////////////////////////////////////////
// STEP 8: Try to load state of all the bars and dock
// all of them initially if the state loading
// was failed
/////////////////////////////////////////////////////////
if( ! CExtControlBar::ProfileBarStateLoad(
this,
pApp->m_pszRegistryKey,
pApp->m_pszProfileName,
pApp->m_pszProfileName,
&m_dataFrameWP
)
)
{
DockControlBar( &m_wndToolBar );
// Init System tree (part 3):
m_wndSystemTree.DockControlBarInnerOuter( AFX_IDW_DOCKBAR_LEFT, true );
// Init Resource tree (part 3):
m_wndResourceTree.DockControlBarLTRB( &m_wndSystemTree, AFX_IDW_DOCKBAR_BOTTOM );
// Init Selection List (part 3):
m_wndSelectionList.DockControlBarInnerOuter( AFX_IDW_DOCKBAR_LEFT, true );
}
/////////////////////////////////////////////////////////
// STEP 9: Initialize other features. Embeddable controls
// such as MDI tabs should be initialized here
/////////////////////////////////////////////////////////
if( ! m_wndMdiManager.Create(
this,
CRect( 0, 0, 0, 0 ),
UINT( IDC_STATIC ),
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS,
__ETWS_ORIENT_TOP|__ETWS_ENABLED_BTN_CLOSE|__ETWS_SHOW_BTN_CLOSE
)
)
{
ASSERT( FALSE );
return -1;
}
return 0;
}
|
|
Ian McIntosh
|
Feb 1, 2007 - 6:06 AM
|
I have tried this and still get the same problem. I have emailed you screenshots.
|
|
Technical Support
|
Feb 1, 2007 - 11:18 AM
|
Please try RecalcLayout(); at the end of the CMainFrame::OnCreate() method. If it does not help, would you send us a project that reproduces the problem?
|
|
Ian McIntosh
|
Feb 2, 2007 - 4:04 AM
|
RecalcLayout() has made no difference. I have sent an email with a sample project and screen shots attached
|
|
Technical Support
|
Feb 2, 2007 - 11:26 AM
|
We are sorry by we have not yet received that email with your sample project. Would you send it again? We have an account at gmail (profuis at gmail.com) so you can also use it.
|
|
Ian McIntosh
|
Feb 12, 2007 - 3:09 AM
|
I have replied to your latest email with sample project and screenshots showing problem. Could you please confirm if you can reproduce the problem.
|
|
Technical Support
|
Feb 12, 2007 - 2:37 PM
|
No, we have not received it yet. Please try sending it to profuis at gmail.com
|
|
Ian McIntosh
|
Feb 13, 2007 - 3:33 AM
|
I replied to your e-mail and copied it to profuis@gmail.com . You should have it now. NB, I am using Prof-UIS 2.63 in VS 2005. Please let me know if you can reproduce the problem, & if not confirm if you are using Prof-UIS 2.63 in VS 2005.
|
|
Technical Support
|
Feb 13, 2007 - 4:04 AM
|
Not received it again. It seems it is filtered out somewhere. Would you send us a test email?
|
|
Ian McIntosh
|
Feb 13, 2007 - 4:24 AM
|
sent a reply to your email and forwarded it to the other address, did you get it?
|
|
Ian McIntosh
|
Feb 13, 2007 - 7:17 AM
|
I have replied to your last email with an ftp address from which I am told you should be able to download the files. Please let me know if you are able to access it ok.
|
|
Technical Support
|
Feb 14, 2007 - 11:20 AM
|
Thank you for the test project. The problem was caused by that you had not specified the WS_CHILD and WS_VISIBLE styles when creating the child list box: if( !m_wndSelectionListCtrl.Create(
WS_CHILD|WS_VISIBLE|LVS_LIST,
CRect(0,0,0,0),
&m_wndSelectionList,
m_wndSelectionList.GetDlgCtrlID()
)
)
{
TRACE0("Failed to create m_wndSelectionListCtrl\n");
return -1; // fail to create
}
|
|
Ian McIntosh
|
Jan 30, 2007 - 4:01 AM
|
after upgrading to the full version, I have noticed I dont seem to have options to create new ProfUI based projects. I reran the integration wizard and clicked the option to install the application wizard (vs 2005) but got the following error: /*******************************************************************/ REPORT FILE [1-30-2007, 10:45] /*******************************************************************/
Add Prof-UIS paths to Visual Studio environment variables (Win32 platform) - Succeeded.
Remove Prof-UIS Application Wizard from Visual Studio - Failed.
It appears to be trying to remove the app wizard rather than add it.
|
|
howard liu
|
Apr 30, 2008 - 2:05 AM
|
Hi, I am using ProfUI dll to color my MFC based applicatoion. What would be the procedure to attach the CExtScrollBar to any CWnd derived ctrl. Thanks Howard
|
|
howard liu
|
Apr 30, 2008 - 2:05 AM
|
Hi, I am using ProfUI dll to color my MFC based applicatoion. What would be the procedure to attach the CExtScrollBar to any CWnd derived ctrl. Thanks Howard
|
|
Technical Support
|
Apr 30, 2008 - 2:20 PM
|
The control bars never become attached to some already created HWND window handles. The control bars are always created as children of their parent window (most often it is an MFC frame window), then configured for re-docking etc. Please provide us with more details about your task.
|
|
Technical Support
|
Jan 30, 2007 - 12:04 PM
|
Could you send us a screenshot of the Integration Wizard displaying the checked items in the options tree before it generates the report described in your message?
|
|
Ian McIntosh
|
Jan 31, 2007 - 2:53 AM
|
I have emailed you the screenshots
|
|
Technical Support
|
Feb 1, 2007 - 3:27 AM
|
The Integration Wizard does install the Application Wizard versions into all the supported Visual Studio versions, but it simply displays "remove" instead of "install" and vice versa. This is an non-critical typing error in the Integration Wizard’s source code. You can download the fixed version from our website. Simply put the renewed IntegrationWizard.exe into the ../Prof-UIS/Support/ folder.
|
|
Ian McIntosh
|
Feb 1, 2007 - 3:37 AM
|
Regardless of the typing error, the action is failing - refer to my first post. From memory, I think I should be able to select from the IDE menu: File | New | Project and have a section for ProfUI under C++, alongside MFC, Win32 etc. I have no such section.
|
|
Technical Support
|
Feb 1, 2007 - 11:54 AM
|
Maybe you just cannot find it? You can find the Prof-UIS Application wizard in the Visual C++ section as it is shown in the screenshot.

|
|
Ian McIntosh
|
Feb 2, 2007 - 2:18 AM
|
As I explained in my previous post, that is where I looked and there is no prof-UIS section. I have also sent an e-mail with screenshot.
|
|
Technical Support
|
Feb 2, 2007 - 11:22 AM
|
Did you try to repeat the problem on other machines. It would be interesting to take a look at a screenshot of the Visual Studio’s about dialog box. We can send you the source code of the Integration Wizard width details where to check the integration code which simple unpacking of ZIP file into appropriate Visual Studio sub-folder. We can also help you connect to your desktop and clarify what’s wrong.
|
|
Ian McIntosh
|
Feb 8, 2007 - 4:20 AM
|
please do send this source code and in particular where I can find the sub folder and if you can which files should be in it.
info from help about dialog:
Microsoft Visual Studio 2005 Version 8.0.50727.42 (RTM.050727-4200) Microsoft .NET Framework Version 2.0.50727
Installed Edition: Professional
Microsoft Visual Basic 2005 77626-009-0000007-41890 Microsoft Visual Basic 2005
Microsoft Visual C# 2005 77626-009-0000007-41890 Microsoft Visual C# 2005
Microsoft Visual C++ 2005 77626-009-0000007-41890 Microsoft Visual C++ 2005
IndexedFind 1.0 Finds strings in files using Microsoft Indexing Service.
PowerToysMaster 1.0 Provides the Power Toys submenu.
|
|
Technical Support
|
Feb 10, 2007 - 11:58 AM
|
|
|
Ian McIntosh
|
Feb 12, 2007 - 3:15 AM
|
Thankyou. I have followed your instructions and the wizard now appears to be working.
I do notice that the ProfUI wizard appears only in the c++ section - there is no Prof-UIS directory as per your screenshot in a previous answer. I don’t necessarily need a fix for this, I just thought I would let you know.
|