Article: Q270029
Product(s): Microsoft C Compiler
Version(s): 3.0,6.0
Operating System(s):
Keyword(s): kbETK kbOSWinCEsearch kbDSupport kbGrpDSETK kbCodeSnippet
Last Modified: 11-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Windows CE Toolkit for Visual C++ 6.0
- Microsoft eMbedded Visual C++ version 3.0
-------------------------------------------------------------------------------
SYMPTOMS
========
When you use the COleControl::SetControlSize function from within a Windows CE
(WCE) Microsoft Foundation Classes (MFC) ActiveX ControlWizard generated ActiveX
control, the ActiveX control does not resize properly.
RESOLUTION
==========
To solve the problem, in addition to calling the COleControl::SetControlSize
function, also call the SetWindowPos Win32 API function to resize the parent
window of the control as shown in the following code example:
BOOL gfTest = FALSE;
void CMYCONTROLCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
if (gfTest) {
gfTest = FALSE;
((CWnd*)this)->GetParent()->SetWindowPos(NULL, 0, 0, 100, 100, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE);
SetControlSize(100, 100);
}
else {
gfTest = TRUE;
((CWnd*)this)->GetParent()->SetWindowPos(NULL, 0, 0, 200, 200, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE);
SetControlSize(200, 200);
}
COleControl::OnLButtonDown(nFlags, point);
}
STATUS
======
Microsoft has confirmed this to be a bug in the Microsoft products listed at the
beginning of this article.
MORE INFORMATION
================
Steps to Reproduce Behavior
---------------------------
1. Create a new ActiveX control by using the eVC WCE MFC ActiveX Control Wizard
and accept all the default settings.
2. Use the ClassWizard to add a handler for the WM_LBUTTONDOWN message.
3. Within the message handler add the following code, which does resize the
control when you left-click the control:
BOOL gfTest = FALSE;
void CMYCONTROLCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (gfTest) {
gfTest = FALSE;
SetControlSize(100, 100);
}
else {
gfTest = TRUE;
SetControlSize(200, 200);
}
COleControl::OnLButtonDown(nFlags, point);
}
4. Compile, link and deploy the ActiveX control.
5. Host the control within an eVB or eVC application.
RESULT: The control does not resize when you left-click the control.
Additional query words: SetControlSize ActiveX wince
======================================================================
Keywords : kbETK kbOSWinCEsearch kbDSupport kbGrpDSETK kbCodeSnippet
Technology : kbVCsearch kbAudDeveloper kbWinCETKVCSearch kbWinCESearch kbVCeMb kbWinCETK600VC
Version : :3.0,6.0
Issue type : kbbug
Solution Type : kbpending
=============================================================================