|
Subject |
Author |
Date |
|
|
esraa khedr
|
Jan 28, 2010 - 5:57 AM
|
Dear
I have downloaded the trial version of Prof-Uis, and tried to use it but i didn’t find any of the ribbon contrrols at the toolbox. can’t i drag and drop ribbon controls to my dialog?!!
Allow me to ask another question; i tried to use a lib i have created in a ribbon project created by Prof-Uis, but there were always linking errors. (The dialog class that contains ribbon) doesn’t understand the lib. what is the problem?? How can i solve these linking errors?!
Expecting your answers Thanks
|
|
|
Technical Support
|
Jan 28, 2010 - 2:07 PM
|
All the Visual Studio versions support the following toolbox items for MFC dialog template resources: common controls and ActiveX controls. It’s not possible to insert custom C++ class into Visual Studio’s toolbox window. You should initialize Prof-UIS ribbon bar from code. The RibbonBar sample application can help you to do this fast. It contains the ribbon bar initialization code which is split into methods initializing ribbon button groups. You can take a look at the button groups you like and copy appropriate initialization functions into your project. Then you should change button texts, icons and/or command identifiers. Please show us the content of Visual Studio’s Output window displaying linker errors. If you are using Prof-UIS Trial version, then you can compile only MBCS and Unicode versions of your app and use both Prof-UIS and MFC as DLL. If you are using Prof-UIS Freeware or Full/Commercial version, then you should compile required Prof-UIS libraries before compiling sample apps and your Prof-UIS based projects. The compiler output displays text with the Prof-UIS library name to be linked with project automatically. The following article describes library naming conventions and Prof-UIS configuration names:
http://www.prof-uis.com/prof-uis/tech-support/feature-articles/prof-uis-build-configurations.aspx
|
|
|
Krustys Donuts
|
Jan 25, 2010 - 11:41 AM
|
Dear Support, I have a CExtPopupMenuWnd that consists of a menu caption and 0-5 menu items. The problem arises when the horizontal extent of the menu caption exceeds the extent of the widest menu item. In this case, the menu caption is truncated. Is there some way to adjust the width of the CExtPopupMenuWnd object such that the entire menu caption is always visible? Gil
|
|
|
Krustys Donuts
|
Feb 11, 2010 - 12:14 PM
|
Support, Will this change be encorporated in future versions, or will I need to make this change every time I upgrade to the latest version of Prof-uis. Thanks, Gil
|
|
|
Technical Support
|
Feb 13, 2010 - 11:28 AM
|
Yes, of course this improvement is part of nearest and all the future Prof-UIS versions.
|
|
|
Krustys Donuts
|
Jan 25, 2010 - 3:02 PM
|
Here is the code. I will send the image in a separate email.
In initialize routine:
//!Create the context menu shown when user right-clicks on a teachpoint.
HMENU oMenu;
m_contextMenu.Attach(oMenu); if((oMenu = LoadMenu(GlobalInstance,MAKEINTRESOURCE(IDR_menuTpContextMenu)))!=NULL)
Used when left click is detected:
void
{
VR3dRobot::ShowContextMenu(const CPoint& point, int tpId)CExtPopupMenuWnd* pPopup =
new CExtPopupMenuWnd;this->m_hWnd, &m_contextMenu, true, true, true);//!Get the current user selections for red and blue TPs.
string strTpRed = m_pDiags->GetSelTpRed();
string strTpBlue = m_pDiags->GetSelTpBlue();
//!Get the TP that the user clicked on. We store these two TPs
//!in member variables because the command handlers for this
//!context menu need this information.
VRTeachpointList& tpList = m_pDiags->GetTeachpointList();
m_tp1 = tpList.GetTeachpoint(strTpRed);
m_tp2 = tpList.GetTeachpoint(strTpBlue);
//!If the user is clicking on the blue TP.
VRTeachpoint tp = tpList.GetTeachpoint(tpId);
{
if (tp.GetName() == strTpBlue)//This is a bit of a kludge. Because the user is clicking
//on blue teachpoint, we want all commands to execute as if
//the blue teachpoint is the red teachpoint.
strTpRed = m_pDiags->GetSelTpBlue();
strTpBlue = m_pDiags->GetSelTpRed();
m_tp1 = tpList.GetTeachpoint(m_pDiags->GetSelTpBlue());
m_tp2 = tpList.GetTeachpoint(m_pDiags->GetSelTpRed());
}
//!Use the name of the red TP for the header of this context menu.
pPopup->MenuCaptionTextSet(strTpRed.c_str());
//!Put the name of the blue TP into the ’Transfer from’ and ’Transfer to’ commands.
string str = (boost::format(m_st.GetString( IDS_strTransferTo)) % strTpBlue).str();
pPopup->ItemSetPopupText(pPopup->ItemFindPosForCmdID(ID_TransferTp1toTp2), str.c_str());
str = (boost::format(m_st.GetString( IDS_strTransferFrom)) % strTpBlue).str();
pPopup->ItemSetPopupText(pPopup->ItemFindPosForCmdID(ID_TransferTp2toTp1), str.c_str());
//!If labware not selected, or the robot is busy, or the arm is disabled, or
//!all the AOs for this TP have errors.
m_oldStatus.GetRobotBusy() || (!m_oldStatus.GetArmPowerEnabled()) ||
(m_tp1.GetNumApproOrientations() <= m_tp1.GetNumAoErrors()))
{
if ((!m_pDiags->IsLabwareSelected()) ||//!Remove the following choices from the context menu.
pPopup->ItemRemove(pPopup->ItemFindPosForCmdID(ID_MoveToTp));
pPopup->ItemRemove(pPopup->ItemFindPosForCmdID(ID_PickFromTp));
pPopup->ItemRemove(pPopup->ItemFindPosForCmdID(ID_PlaceAtTp));
pPopup->ItemRemove(pPopup->ItemFindPosForCmdID(ID_TransferTp1toTp2));
pPopup->ItemRemove(pPopup->ItemFindPosForCmdID(ID_TransferTp2toTp1));
}
//!If the blue teachpoint is not defined or is <NoWhere>.
string strNoWhere = m_st.GetString( IDS_strNowhere);
(m_tp2.GetNumApproOrientations() <= m_tp2.GetNumAoErrors()))
{
if (strTpBlue.empty() || (strTpBlue == _T("")) || (strTpBlue == strNoWhere) ||//!If not already removed, remove the following choices from the context menu.
pPopup->ItemRemove(pPopup->ItemFindPosForCmdID(ID_TransferTp1toTp2));
pPopup->ItemRemove(pPopup->ItemFindPosForCmdID(ID_TransferTp2toTp1));
}
if (pPopup->ItemFindPosForCmdID(ID_TransferTp1toTp2) >= 0)if (pPopup->ItemFindPosForCmdID(ID_TransferTp2toTp1) >= 0)//!Show the menu
pPopup->_SyncItems();
pPopup->TrackPopupMenu( TPMX_CENTERALIGN, point.x, point.y);
}
pPopup->UpdateFromMenu(
|
|
|
Technical Support
|
Jan 26, 2010 - 1:53 PM
|
To make the menu caption completely displaying its text, please update the source code for the following method:
CSize CExtPopupMenuWnd::_CalcTrackSize()
{
ASSERT_VALID( this );
int nMenuShadowSize = OnQueryMenuShadowSize();
CRect rcMB = OnQueryMenuBorderMetrics();
int nXtraSzX = rcMB.left + rcMB.right + nMenuShadowSize;
int nXtraSzY = rcMB.top + rcMB.bottom + nMenuShadowSize;
CSize _size( m_sizeFullItems );
if( m_bExpandAvailable )
_size.cy += _GetSpecBtnHeight(); // expand button
_size += CSize( nXtraSzX + m_nLeftAreaWidth, nXtraSzY );
if( _size.cx < (nMenuShadowSize*2 + 10) )
_size.cx = nMenuShadowSize*2 + 10;
if( _size.cy < (nMenuShadowSize*2 + 10) )
_size.cy = nMenuShadowSize*2 + 10;
_size.cy += 1; // +/- 2.28
bool bFoundVisibleItem = false;
for( int nIndex = 0; nIndex != m_items_all.GetSize(); nIndex++ )
{
MENUITEMDATA & mi = ItemGetInfo( nIndex );
if( mi.IsDisplayed() )
{
bFoundVisibleItem = true;
break;
}
}
if( ! bFoundVisibleItem )
_size.cy += 1; // + 2.31
#if (!defined __EXT_MFC_NO_RIBBON_BAR)
CExtPopupMenuWnd * pParent = GetParentMenuWnd();
if( pParent != NULL
&& pParent->_IsTopLevelPopup()
&& (pParent->TrackFlagsGet()&TPMX_RIBBON_FILE_MENU) != 0
)
{
CExtRibbonGalleryPopupMenuWnd * pGalleryMenu =
DYNAMIC_DOWNCAST( CExtRibbonGalleryPopupMenuWnd, pParent );
if( pGalleryMenu != NULL )
{
CSize _sizeAdjust = pGalleryMenu->m_sizeChildControl;
_sizeAdjust.cx -= nMenuShadowSize;
_sizeAdjust.cy -= nMenuShadowSize;
_size.cx = max( _size.cx, _sizeAdjust.cx );
_size.cy = max( _size.cy, _sizeAdjust.cy );
}
}
#endif // (!defined __EXT_MFC_NO_RIBBON_BAR)
CSize _sizeCaption = MenuCaptionMeasure();
INT nCaptionMetric = _sizeCaption.cx + rcMB.left + rcMB.right;
_size.cx = max( _size.cx, nCaptionMetric ); // + 2.89
return _size;
}
|
|
|
Technical Support
|
Jan 25, 2010 - 1:48 PM
|
Could you provide a screen shot and code snippet initializing your popup menu?
|
|
|
Krustys Donuts
|
Jan 25, 2010 - 11:33 AM
|
Dear Support, I have multiple text-only CExtComboBox controls on my interface. When the drop-down list is displayed, any text items with extents greater than the width of the control are truncated. Is there any way to allow the drop-down list to grow in width such that the entire item is displayed? Gil
|
|
|
Technical Support
|
Jan 25, 2010 - 1:47 PM
|
Both CComboBox and CExtComboBox controls do not affect the width of a popup list box. You should invoke the CComboBox::SetDroppedWidth() method manually.
|
|
|
CompSys Engineer
|
Jan 25, 2010 - 7:25 AM
|
I have a custom class that inherits from CExtGridCellUpDown and have overridden the necessary functions. This custom class works correctly using ProfUIS 254. When I changed to ProfUIS 283, clicking the up/down spinner control arrows no longer trigger the OnValueIncrement()/OnValueDecrement() callbacks in my custom class. Can you please advise if this is a bug or if this code works differently in version 283? If this is not a bug, what do I need to change in my existing code to get this to work correctly with the new libraries? Regards.
|
|
|
Technical Support
|
Jan 26, 2010 - 1:44 PM
|
Most of grid cells use the decrement/increment enabled state checking methods provided by the CExtGridCell class:
bool CExtGridCell::OnQueryEnabledDecrement(
const CExtGridWnd & wndGrid,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType
) const
But the CExtGridCellVariant-based classes use the following version: bool CExtGridCellVariant::OnQueryEnabledDecrement(
LPCVARIANT pvarValue,
const CExtGridWnd & wndGrid,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType
) const
|
|
|
CompSys Engineer
|
Jan 27, 2010 - 8:22 AM
|
The previous reply is not clear. I already know which version is being used as the particular cells in this subject are derived from the CExtGridCellVariant class. The custom class definition is as follows: class CMyGridCellUpDown : public CExtGridCellUpDown
{
public:
DECLARE_DYNCREATE( CMyGridCellUpDown );
IMPLEMENT_ExtGridCell_Clone( CMyGridCellUpDown, CExtGridCellUpDown );
CMyGridCellUpDown(
CExtGridDataProvider * pDP = NULL
);
virtual bool OnQueryEnabledIncrement() const
{
// custom stuff
return false;
};
virtual bool OnQueryEnabledDecrement() const
{
// custom stuff
return false;
};
virtual bool OnValueDecrement()
{
// custom stuff
return true;
}
virtual bool OnValueIncrement()
{
// custom stuff
return true;
}
virtual void TextGet( CString &strCopy ) const
{
// custom stuff
}
virtual bool OnInplaceControlTextInputVerify(
HWND hWndInplaceControl,
CExtGridWnd & wndGrid,
LONG nVisibleColNo,
LONG nVisibleRowNo,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType,
LPCTSTR sTextInitial,
LPCTSTR sTextPrevious,
CString & sTextNew,
bool bEndEdit
) const
{
return true;
}
}; Why would these 2.54 callbacks no longer be called in 2.83?
|
|
|
Technical Support
|
Jan 27, 2010 - 1:09 PM
|
Here is the fixed version of your class:
class CMyGridCellUpDown : public CExtGridCellUpDown
{
public:
DECLARE_SERIAL( CMyGridCellUpDown );
IMPLEMENT_ExtGridCell_Clone( CMyGridCellUpDown, CExtGridCellUpDown );
CMyGridCellUpDown( CExtGridDataProvider * pDP = NULL ) : CExtGridCellUpDown( pDP ) { }
virtual bool OnQueryEnabledIncrement(
const CExtGridWnd & wndGrid,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType
) const
{
// custom stuff
return false;
}
virtual bool OnQueryEnabledDecrement(
const CExtGridWnd & wndGrid,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType
) const
{
// custom stuff
return false;
};
virtual bool OnValueDecrement(
CExtGridWnd & wndGrid,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType
)
{
// custom stuff
return true;
}
virtual bool OnValueIncrement(
CExtGridWnd & wndGrid,
LONG nColNo,
LONG nRowNo,
INT nColType,
INT nRowType
)
{
// custom stuff
return true;
}
virtual void TextGet( CExtSafeString & strCopy ) const
{
// custom stuff
}
virtual bool OnInplaceControlTextInputVerify(
HWND hWndInplaceControl,
CExtGridWnd & wndGrid,
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
) const
{
return true;
}
};
|
|
|
CompSys Engineer
|
Jan 27, 2010 - 1:40 PM
|
|
|
|
|
CompSys Engineer
|
Jan 26, 2010 - 5:48 AM
|
The cells are being initialized with _VariantAssign() in OnInitDialog. As I stated, the code works correctly using version 2.54. This unchanged code no longer works when using 2.83. In other words, something in 2.83 related to these classes has changed from 2.54, for good or bad, and is causing the problem. Please advise.
|
|
|
Technical Support
|
Jan 25, 2010 - 1:47 PM
|
The CExtGridCellUpDown class is a CExtGridCellNumber class with up-down buttons displayed. If the up-down buttons does not work, then you didn’t initialize the number cell with some numeric value. I.e. you didn’t invoke code like this:
CExtGridCellUpDown * pGridCellUpDown = . . .
pGridCellUpDown->_VariantAssign( 123, VT_I4 );
|
|
|
CompSys Engineer
|
Jan 26, 2010 - 5:49 AM
|
The cells are being initialized with _VariantAssign() in OnInitDialog. As I stated, the code works correctly using version 2.54. This unchanged code no longer works when using 2.83. In other words, something in 2.83 related to these classes has changed from 2.54, for good or bad, and is causing the problem. Please advise.
|
|
|
CompSys Engineer
|
Jan 26, 2010 - 6:34 AM
|
Additional info: The OnQueryEnabledIncrement() and OnQueryEnabledDecrement() callbacks are not triggered. These should be called just by moving or hovering the mouse over the grid or cell.
|
|
|
Gavin Weeks
|
Jan 21, 2010 - 8:48 AM
|
I am overriding OnGbwAnalyzeCellMouseClickEvent to catch a double click event, to copy the text from one cell to another cell, I am using TextGet after the hit test to get the value of the cell then I am trying to use TextSet to try to set the text in another cell, works fine when I running through it in debug and the grid is not displayed then re-displayed, what should I be using? is there a refresh for the cell data? Or should I be doing it some other way? CExtGridCell * pCell = this->GridCellGet(htInfo.m_nColNo,htInfo.m_nRowNo,0,0,RUNTIME_CLASS(CExtGridCellStringDM )); CString value; if(pCell) pCell->TextGet(value); pCell = this->GridCellGet(CORRELATE_COL,htInfo.m_nRowNo,0,0,RUNTIME_CLASS(CExtGridCellStringDM )); if(pCell) pCell->TextSet(value);
|
|
|
Technical Support
|
Jan 21, 2010 - 1:43 PM
|
The CExtGridBaseWnd::FocusGet() method returns the focused cell location. The full row selection grids use only row number (CPoint::y) and column number (CPoint::x) is ignored. The vice versa approach is applied for the full column selection grids. The negative row/column numbers mean there is no focused cell/column/row in the grid control. The CExtGridBaseWnd::FocusUnset() method unsets the focus from the currently focused cell. The CExtGridBaseWnd::FocusSet() method allows you to set focus to row and/or column and optionally scroll to this row/column and reset selection to them. You may also need to get client coordinates of the grid cell by its row/column indices. This may be needed for repainting some grid cell(s). The grid control can return client coordinates only for the grid cells which are visible in its client area. Here is how to compute the cell rectangle and redraw the cell:
CExtGridWnd & wndGrid = . . .
LONG nColNo = . . .
LONG nRowNo = . . .
INT nColType = . . .
INT nRowType = . . .
CRect rcInvalidate;
if( wndGrid.GridCellRectsGet(
nColNo,
nRowNo,
nColType,
nRowType,
NULL,
&rcInvalidate
)
)
wndGrid.InvalidateRect( &rcInvalidate );
|
|
|
Gavin Weeks
|
Jan 21, 2010 - 11:39 AM
|
Got it FocusUnset(); seems to work.
|
|
|
Gavin Weeks
|
Jan 21, 2010 - 8:58 AM
|
Seems to also update fine, when I change focus to another cell.
|
|
|
Krustys Donuts
|
Jan 20, 2010 - 11:21 AM
|
Support, In a CExtResizableDialog I am trying to override the default CExtButton behavoir on VK_SPACE message. Specifically, I don’t want the button with the focus to ’press’ when the user hits the space bar. I have overridden PreTranslateMessage in the dialog class. Although I get the desired result, I still get the default behavior. Any suggestions? Gil
BOOL CV11ExtResizableDialog::PreTranslateMessage(MSG* pMsg)
{
{
{
if (pMsg->message == WM_KEYDOWN)bool bShift = (GetAsyncKeyState(VK_SHIFT) & 0x8000) != 0;bool bControl = (GetAsyncKeyState(VK_CONTROL) & 0x8000) != 0;bool bAlt = (GetAsyncKeyState(VK_MENU) & 0x8000) != 0;switch(pMsg->wParam)//If the user has pressed CTRL+Shift+ALT+v
{
CWnd* pWnd = GetParent();
pWnd->SendMessage(WM_USER_CTRL_ALT_SHIFT_V_Pressed);
}
case ’V’:if (bShift && bControl && bAlt)if (pWnd != NULL)break;//If the user has pressed the space bar.
case VK_SPACE:
CWnd* pWnd = GetParent();
{
if (pWnd != NULL)//Let parent determine action.
pWnd->SendMessage(WM_USER_SpaceBarPressed);
//Don’t allow space on this control.
}
}
}
}
} return TRUE;break;return CExtNCW < CExtResizableDialog >::PreTranslateMessage(pMsg);
|
|
|
Technical Support
|
Jan 20, 2010 - 1:32 PM
|
You should handle the WM_KEYDOWN and WM_KEYUP messages with the WPARAM parameter set to the VK_SPACE value in the overridden PreTranslateMessage() virtual method in your CExtButton-derived class. Your PreTranslateMessage() virtual method should not invoke the parent class method for VK_SPACE key.
|
|
|
Gavin Weeks
|
Jan 19, 2010 - 2:22 PM
|
Not sure if the approach I am taking is right or not I derived a class from CExtGridWnd and I am trying to make certain cells read-only, as well as do other things with cell and text etc. the only thing that seems to be working is TextSet? what am I doing wrong?
CExtGridCell *pCell = this->GridCellGet(MASTER_COL,newRow,0,0,RUNTIME_CLASS( CExtGridCellStringDM )); if(pCell) { pCell->TextSet(masterVal.c_str()); pCell->ModifyStyle(CExtGridCell::__ECS_READ_ONLY); }
Also I have been converting the rest of the application over to prof-uis, dialogs are derived from CExtResizableDialog and I have been using SetAutoSubclassChildControls(); and converting over everything else when needed, however the title bar of my dialogs does not take on the current theme? any ideas? thanks,
|
|
|
Technical Support
|
Jan 20, 2010 - 1:31 PM
|
The CExtGridCell::__ECS_READ_ONLY enumeration value is provided by the CExtGridCell::e_cell_state_t enumeration type specifying the text/background color types for methods like CExtGridCell::TextColorSet() and CExtGridCell::BackColorSet(). The CExtGridCell::ModifyStyle() method uses __EGCS_*** preprocessor constants - not enumeration values. And the CExtGridCell::ModifyStyleEx() method uses __EGCS_EX_*** preprocessor constants. You can apply the __EGCS_READ_ONLY flag with the CExtGridCell::ModifyStyle() method to make any grid cell read only. The read only cells allow the in-place editor activation, but its activated in the read only mode. I.e. you can select text range and copy it to clipboard, but you cannot edit cell’s text. You can apply the __EGCS_NO_INPLACE_CONTROL flag to disable the in-place editor activation. The CExtResizableDialog class implements an extended version of MFC dialog. It provides themed background, gripper control at the right bottom corner (if dialog is defined in resources as resizable) and child control anchoring. It does not provide the skinned window non-client area. The CExtNCW template decorator class does this. I.e. you should use the CExtNCW < CExtResizableDialog > class as base of your dialog class. Please do not use this template type for invoking the parent class methods or simply use the __super keyword (available with Visual Studio .NET or later).
|
|
|
Il Hwan Jeong
|
Jan 19, 2010 - 1:17 AM
|
I had compiled static library with visual studio 2008, but filed to build dynamic library. When i tried to do an error message box appeared on screen. Additionally, i can’t create project with profuis template. Would you give me some idea to solve it. --------------------------------------------- devenv.exe - Application Error
The exception unknown software exception (0xe0434f4d) occured in the application at location 0x7c812a5b. --------------------------------------------- 

|
|
|
Technical Support
|
Jan 19, 2010 - 1:25 PM
|
This problem occurs when compiling Prof-UIS resources. The Prof-UIS library is translated into 40 languages. This means we have many resources containing text strings written in 40 languages. There is the bug in Visual Studio 2005 and 2008. If these versions of Visual Studio are running on the Asian versions of Windows or on the Windows system which uses Chinese, Korean or Japanese locale, and if you opening Visual C++ project with resources containing strings on many languages, then the Visual Studio does not compile the C++ projects or simply crashes. This bug was reported to Microsoft before release of Visual Studio 2008 but it was not fixed. If you need to develop with Prof-UIS on Asian Windows, then you should do the following:
- Switch Windows locale to English.
- Compile required configurations of Prof-UIS, ProfAuto and ProfSkin libraries.
- Restore you preferred Windows locale settings.
- Compile any Prof-UIS samples and develop your Prof-UIS based projects.
|
|
|
Il Hwan Jeong
|
Jan 19, 2010 - 1:26 AM
|
I had installed visual studio 2008 Feature Pack, before install ProfUIS 2.88 and installed service pack 1.
|
|
|
Oliver Rau
|
Jan 18, 2010 - 9:35 AM
|
Dear ProfUIS-Team,
how can I force the caption of a CExtRibbonNodeGroup control to become ’bold’ instead of the style-specific ’normal’ font weight?
Kind regards,
Martin
|
|
|
Oliver Rau
|
Jan 20, 2010 - 2:34 AM
|
Thanks a lot for your help - and again: great support! Best regards, Martin
|
|
|
Technical Support
|
Jan 19, 2010 - 1:13 PM
|
We are sorry but in fact we explained you how to make the text of tab item bold. But it’s also possible to make the text of ribbon button group caption bold. You should use the same approach. But you should create the CExtRibbonNodeGroup-derived and CExtRibbonButtonGroup-derived classes.
|
|
|
Oliver Rau
|
Jan 19, 2010 - 2:19 AM
|
Thank you for your quick reply! Though, I can’t see the relationship between a CExtRibbonNodeGroup (the one I meant in my question) and a CExtRibbonNodeTabPage. Or is my mistrust foundless?
Martin
|
|
|
Technical Support
|
Jan 18, 2010 - 1:36 PM
|
Step 1 is to create and use your CExtRibbonNodeTabPage-derived class. Override the CExtRibbonNodeTabPage::_OnRibbonGetButtonRTC() virtual method and return runtime class information of your tab button class (CExtRibbonButtonTabPage-derived). Step 2 is to create your CExtRibbonButtonTabPage-derived class. This class implements the tab button. You should override the CExtRibbonButtonTabPage::PaintCompound() virtual method, copy the source code from original method and make it using your preferred bold font.
|
|
|
Krustys Donuts
|
Jan 15, 2010 - 3:29 PM
|
Hi- We are currently on prof-uis v 2.84. I understand this version doesn’t claim Windows 7 compatibility, but it seems to work ok. I’d like to know what exactly the differences are (specifically pertaining to Windows 7) before we determine whether to upgrade. Thanks.
|
|
|
Technical Support
|
Jan 17, 2010 - 10:55 AM
|
Prof-UIS 2.84 should work OK on Windows 7. It’s tested with Vista and Vista is enough close to 7. We never tested 2.84 it on Windows 7. We tested only 2.85 and later versions. We cannot guarantee some bugs related to Windows 7 will never appear in your 2.84 based apps.
|
|
|
Borremans Pierre
|
Jan 15, 2010 - 3:59 AM
|
I want to always showed icon in a cexttreectrlnot only when the item is selected or expanded. How to do that ?
|
|
|
Technical Support
|
Jan 15, 2010 - 9:38 AM
|
The CExtTreeCtrl control supports two icons for each tree item: an icon displayed in expanded state and an icon displayed in collapsed state. The CExtTreeCtrl::TreeItemInfoGetPtr() method returns a pointer to a CExtTreeCtrl::TREEITEMINFO_t data structure describing tree item properties. The CExtTreeCtrl::TREEITEMINFO_t::m_nIconIndexCollapsed and CExtTreeCtrl::TREEITEMINFO_t::m_nIconIndexExpanded properties describe collapsed/expanded icon indices in the icons collection managed by the CExtTreeCtrl control. This icon collection can be accessed/modified using the CExtTreeCtrl::TreeIcon***() methods. As you can see, the CExtTreeCtrl control does not support tree item icons which are displayed dependently on the focused or selected state of the tree items. If some of the tree items in your app show or hide tree icons depending on their focused and/or selected state, then this visual effect is coded in scope of your app - such feature is not provided by Prof-UIS.
|
|
|
Borremans Pierre
|
Jan 14, 2010 - 2:48 AM
|
In my application I need to change the color of my CExtComboBox -> it works fine But when my CExtComboBox change to be disabled, it keeps is last color and I want that my CExtComboBox get the same color than other CExtComboBox. how to do that ?
|
|
|
Borremans Pierre
|
Jan 14, 2010 - 8:12 AM
|
|
|
|
|
Borremans Pierre
|
Jan 14, 2010 - 1:06 AM
|
I try to create a combobox with a second button near the arrow like the searching in outlook 2007. Is it possible ?
|
|
|
Technical Support
|
Jan 15, 2010 - 9:21 AM
|
The CExtComboBox class implements a skinned combo box common control with some additional features like text auto completion. But it uses the layout of combo box internal parts provided by original combo box common control. At this moment, it’s not possible to inject an additional button into the CExtComboBox control. That’s why the CExtDateTimeWnd and CExtDurationWnd controls containing more than one buttons are not combo box based: they are written from scratch. We can regard your message as a feature request. Right now you can try some temporarily solution. For instance, you can create some small push button near the combo box.
|
|
|
Cho jiyeon
|
Jan 11, 2010 - 7:07 PM
|
Hi, Happy New years. I can’t Enlglish, well.. I used CxtPPVW < CExtGridWnd > and connect ListCtrl. So, CExtGridWnd is Datatype of ListCtrl I want to have mouse click event. Usually, Mouse event of ListCtrl have NM_Click or NM_DClick. I want that When I click Grid, be showed clicked value of row or cloume by anoter Control .
|
|
|
Cho jiyeon
|
Jan 18, 2010 - 3:19 AM
|
Thank you for your answer. If when I get values of Grid, How is it? When I cliked (1,1) of GridCell, I want get value (1,1) of GridCell. Do I use Textget, member of CExtGridCellString?
|
|
|
Technical Support
|
Jan 18, 2010 - 1:35 PM
|
The CExtGridCell::TextGet() and CExtGridCell::GetVariant() methods work for all the cell classes excepting cells like CExtGridCellPicture. So, you can get cell value as text or as VARIANT data structure. If your code knows cell type for particular grid columns and rows, then you can use the DYNAMIC_DOWNCAST preprocessor function provided by MFC for converting the CExtGridCell * pointer into required cell type pointer and then invoke specific methods.
|
|
|
Cho jiyeon
|
Jan 18, 2010 - 3:21 AM
|
And Are nColType and nRowType number of Grid?
|
|
|
Technical Support
|
Jan 18, 2010 - 1:35 PM
|
The nColType and nRowType parameters should have -1, 0 or 1 value.
The nColType is: - -1 for outer header area at left - 0 for inner data area - 1 for outer header area at right
The nRowType is: - -1 for outer header area at top - 0 for inner data area - 1 for outer header area at bottom
This means the grid control is split into 9 areas: one central data area and 8 outer header areas (left, right, top, bottom and 4 corner areas). The nColType and nRowType parameters specify the area inside the grid control. The nColNo and nRowNo parameters are zero based grid cell indices inside the specified grid area.
|
|
|
Technical Support
|
Jan 13, 2010 - 11:08 AM
|
class CYourGrid : public CExtPPVW < CExtGridWnd >
{
public:
virtual bool OnGbwAnalyzeCellMouseClickEvent(
UINT nChar, // VK_LBUTTON, VK_RBUTTON or VK_MBUTTON only
UINT nRepCnt, // 0 - button up, 1 - single click, 2 - double click, 3 - post single click & begin editing
UINT nFlags, // mouse event flags
CPoint point // mouse pointer in client coordinates
)
{
ASSERT_VALID( this );
if( nChar == VK_LBUTTON && nRepCnt == 1 )
{ // if single left button click
CExtGridHitTestInfo htInfo( point );
HitTest( htInfo, false, true );
if( ( ! htInfo.IsHoverEmpty() ) || htInfo.IsValidRect() )
{ // if some grid cell is clicked, not an empty area
INT nColType = htInfo.GetInnerOuterTypeOfColumn();
INT nRowType = htInfo.GetInnerOuterTypeOfRow();
if( nColType == 0 && nRowType == 0 )
{ // if the clicked grid cell is the inner data cell, not header cell
//
//
// Inner data cell is clicked. Its location is htInfo.m_nColNo column and htInfo.m_nRowNo row.
// You can set focus to it using the FocusSet( CPoint( htInfo.m_nColNo, htInfo.m_nRowNo ) ); code.
// You can check whether it’s selected using the SelectionGetForCell( htInfo.m_nColNo, htInfo.m_nRowNo ) code.
// You can check which part of cell is clicked analyzing the htInfo properties.
// You should return true if your code handles this click event.
//
//
} // if the clicked grid cell is the inner data cell, not header cell
} // if some grid cell is clicked, not an empty area
} // if single left button click
return CExtPPVW < CExtGridWnd > :: OnGbwAnalyzeCellMouseClickEvent( nChar, nRepCnt, nFlags, point );
}
}
|
|
|
Cho jiyeon
|
Jan 12, 2010 - 6:14 PM
|
Hmm, I don’t understand. Do you have its exam? If you are ok, Can you show its exam or how use it?
|
|
|
Cho jiyeon
|
Jan 12, 2010 - 6:13 PM
|
Hmm, I don’t understand. Do you have its exam? If you are ok, Can you show its exam or how use it?
|
|
|
Technical Support
|
Jan 12, 2010 - 6:29 AM
|
The CExtGridWnd control uses virtual methods rather than messages. You should override the CExtGridBaseWnd::OnGbwAnalyzeCellMouseClickEvent() virtual method to catch any mouse clicks in the grid control.
|
|
|
Bart Kampers
|
Jan 11, 2010 - 4:45 AM
|
Hello, I declared a CExtPopupMenuTioWnd in a Dialog and call mTip.Show(this, tipRect, true) as soon as the dialog gets updated. I see a balloon appear in the dialog but it disappears immediately. How can I make the balloon stay until the user clicks on it? Thanks in advance, Bart.
|
|
|
Technical Support
|
Jan 11, 2010 - 12:29 PM
|
The CExtPopupMenuTipWnd control behaves like a standard Windows tooltip control. It hides itself automatically when the mouse is moved out of the specified range, mouse clicked or other application is activated on the desktop. You can create your CExtPopupMenuTipWnd-derived class and handle the WM_TIMER message in it. You can copy the source code from the CExtPopupMenuTipWnd::OnTimer() method and remove code lines related to the mouse click detection.
|
|
|
Oliver Rau
|
Jan 8, 2010 - 3:06 AM
|
Dear ProfUIS-Team,
the QuickAccessToolBar is of great value for users working with the RibbonBar.
A further-going idea would be to support a (one? or even more?) customizable RibbonTabGroup as an optional feature that allows being filled similarly to adding parts to the QuickAccessToolBar. The advantages are obvious: the user would be able to create his own "startup-menu" and finds everything together with reasonably sized controls that he needs for quick access.
What do you think about this idea? Would it be integratable in a common ProfUIS release? Or should we better make a customized thing? And if so, what would be the best way to go for it?
Thanks in advance and greetings from snowy-white Germany,
Martin
|
|
|
Technical Support
|
Jan 9, 2010 - 9:46 AM
|
Office 2010 introduces a new feature which allows users to change the ribbon: change default tab pages and construct new ones. The ribbon options includes one new tab page for that:
http://www.prof-uis.com/download/forums/tmp/Office2010RibbonCustomization.PNG
This dialog page represents ribbon structure in the tree control at right. You can add new tab pages, button groups and buttons into any existing tab page/button group and you can create new tab pages and button groups. This operations are exactly the same as code lines initializing the Prof-UIS ribbon bar during application startup. Unfortunately, we didn’t implemented this ribbon customization tab page yet. But we it’s in our TO-DO list.
|
|
|
Anil Siddhpura
|
Jan 7, 2010 - 5:22 AM
|
Hi,
I have created one dialog base application. Now is it possible to hide it?
I want to hide the dialog just as window’s taskbar autohide. And it appears again when we move cursor to top or bottom of screen(Just like taskbar’s autohide)
|
|
|
Technical Support
|
Jan 19, 2010 - 1:25 PM
|
|
|
|
|
Anil Siddhpura
|
Jan 20, 2010 - 12:06 AM
|
Hi,
Thanks for your support.
I used those two files. But it giving me compilation error while creating childview window(while calling m_ChildView.create function). Although I comment out that function and run the application and it work.
Also, can you provide me the sample project? And it’ll be better if the code is in dialog base application. As i have already developed my application in dialog base application.
Thanks in advance.
|
|
|
Technical Support
|
Jan 20, 2010 - 1:33 PM
|
Of course, you should replace the view window creation code with something specific for your project. I.e. You should create your view window instead. Which type of sample project you need? SDI? Dialog?
|
|
|
Technical Support
|
Jan 12, 2010 - 6:49 AM
|
Both links are OK in IE, Chrome, Chromium, Firefox and Safari. Both links are simple and do not contain long parameters. You can check it yourself by looking at the source code of the html page. There may be something wrong on your computer.
|
|
|
Anil Siddhpura
|
Jan 18, 2010 - 10:58 PM
|
Hi,
Yes, I saw that example. But that’s very old code and also very hard to reuse it.
Do you have any latest example of how to create appbar in MFC?
|
|
|
Technical Support
|
Jan 11, 2010 - 6:04 AM
|
Cannot confirm that. Which web browser are you using?
|
|
|
Anil Siddhpura
|
Jan 12, 2010 - 5:36 AM
|
Hi,
I have tried it with "Google Chrome" and "Internet Explorer"
|
|
|
Technical Support
|
Jan 9, 2010 - 9:45 AM
|
|
|
|
|
Anil Siddhpura
|
Jan 11, 2010 - 5:28 AM
|
Hi,
I tried to open the given links, but these links are not working
|
|
|
Fransiscus Herry
|
Jan 6, 2010 - 7:47 PM
|
Dear Support, I have created a dialog containing grid. I want to use drag and drop feature and try to override the OnGridOuterDragComplete(). However, every time i did a test drag and drop, the drag row info is accurate but the drop row info is not accurate, sometimes just not right. Would you be able to provide me some sample file so i can understand to implemented this to my application? At the moment i am using 2.64 version. Please help me to get it right. Here is the code: void CMyExtGridWnd::OnGridOuterDragComplete(
const CExtGridHitTestInfo &htInfoDrag,
const CExtGridHitTestInfo &htInfoDrop
)
{
CExtGridWnd::OnGridOuterDragComplete( htInfoDrag, htInfoDrop);
//Information of the position of the data first position to the final destination
CString fm;
fm.Format("Info Drag = %i, INfo Drop =%i", htInfoDrag.m_nRowNo, htInfoDrop.m_nRowNo );
}
best regards, Herry
|
|
|
Technical Support
|
Jan 9, 2010 - 9:45 AM
|
The <property>htInfoDrop.m_nRowNo</code> contains the row number where the mouse button is released. You should analyze the CExtGridHitTestInfo::m_dwAreaFlags property for presense of the __EGBWA_NEAR_CELL_BORDER_*** flags to detect whether the drop position is before or after the <property>htInfoDrop.m_nRowNo</code> row.
|
|
|
Anil Siddhpura
|
Jan 5, 2010 - 4:25 AM
|
Hi,
Can you tell me the procedure to create toolbar with 256 colors and >256 color in SDI and dialog base application?
Thanks in Advance!!!
|
|
|
Technical Support
|
Jan 6, 2010 - 9:21 AM
|
You should create a toolbar using the Visual Studio wizards. Then add the required initial set of buttons, find the toolbar’s bitmap in the res subfolder of your project and replace it with a high color bitmap.
|
|
|
Anil Siddhpura
|
Jan 7, 2010 - 5:18 AM
|
Hi,
Yes, i already done that. But when I replace the high color bitmap with that toolbar’s bitmap, the color of that bitmap lost and that high color bitmap becomes 4-bit image.
|
|
|
Technical Support
|
Jan 9, 2010 - 9:45 AM
|
The Visual Studio’s resource editor caches the resources you viewed or edited. We guess the Visual Studio simply overwrites your toolbar’s bitmap.
|
|
|
Anil Siddhpura
|
Jan 11, 2010 - 5:29 AM
|
Hi,
Yes, may be that could be the case. So is there any solution for that?
|
|
|
Technical Support
|
Jan 11, 2010 - 12:27 PM
|
You should not try to open toolbar editor in Visual Studio. You should edit toolbar bitmap using some external image editor program. You should change toolbar resource by editing text of .rc2 file.
|
|
|
Luis Alberto Pereira
|
Jan 3, 2010 - 7:06 PM
|
I created a new post because I could not reply the reply post for technical support. This post is continuationa of this: www.prof-uis.com/prof-uis/tech-support/general-forum/repositionbars-windows-xp-x-windows-vista-66570.aspx, Dear technical support, I did not understand your orientation. What exactly I need to do in my code do solve the problem with VS2008. Follow you post: Please take at the end of the code snippet from your .cpp file. The following line is the most interesting: RepositionBars( 0, 0xFFFF, nID );
The nID variable is the identifier of the window which should occupy the central space which is free of control bars occupying their paces near borders. If the nID variable is set to IDC_STATIC value, then the RepositionBars( 0, 0xFFFF, nID ); code will work well compiled with Visual Studio 2005 or earlier. It will position the central window correctly. But it will not work in Visual Studio 2008 or later. This is specific improvement introduced in Visual Studio 2008. That’s why Prof-UIS uses its own __EXT_MFC_IDC_STATIC value instead of MFC’s IDC_STATIC value.
|