sternocera
asked on
MFC, C++: Preventing a splitter window from being resized
Hello,
I am working on an MFC splitter frame application. I want to prevent the user from resizing the splitter window.
I've followed this old article on MSDN, which covers this:
http://msdn.microsoft.com/msdnmag/issues/01/02/c/
I can't even get the demo project to build in visual studio 2005 (I converted the VC 6 project). I get the following errors:
1>c:\documents and settings\user\desktop\msdn splitter\n osize\main frm.cpp(22 ) : error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CMainFrame::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint)'
1> Cast from base to derived requires dynamic_cast or static_cast
1>NoSize.cpp
1>StatLink.cpp
1>c:\documents and settings\user\desktop\msdn splitter\n osize\stat link.cpp(2 7) : error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CStaticLink::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint)'
1> Cast from base to derived requires dynamic_cast or static_cast
1>c:\documents and settings\user\desktop\msdn splitter\n osize\stat link.cpp(1 23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>View.cpp
1>Generating Code...
1>Build log was saved at "file://c:\Documents and Settings\User\Desktop\msdn splitter\N oSize\Debu g\BuildLog .htm"
1>NoSize - 3 error(s), 0 warning(s)
Could someone help me build the application, so that I can apply the same principle to my own application, or could someone suggest another way that I could prevent splitter resizing?
Regards,
Sternocera
I am working on an MFC splitter frame application. I want to prevent the user from resizing the splitter window.
I've followed this old article on MSDN, which covers this:
http://msdn.microsoft.com/msdnmag/issues/01/02/c/
I can't even get the demo project to build in visual studio 2005 (I converted the VC 6 project). I get the following errors:
1>c:\documents and settings\user\desktop\msdn
1> Cast from base to derived requires dynamic_cast or static_cast
1>NoSize.cpp
1>StatLink.cpp
1>c:\documents and settings\user\desktop\msdn
1> Cast from base to derived requires dynamic_cast or static_cast
1>c:\documents and settings\user\desktop\msdn
1>View.cpp
1>Generating Code...
1>Build log was saved at "file://c:\Documents and Settings\User\Desktop\msdn
1>NoSize - 3 error(s), 0 warning(s)
Could someone help me build the application, so that I can apply the same principle to my own application, or could someone suggest another way that I could prevent splitter resizing?
Regards,
Sternocera
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I'm not sure, it seems there's a difference between the implementation and the MSDN description of ON_WM_NCHITTEST and OnNcHitTest
In MSDN for MFC8.0 they're both described to use a function which returns UINT:
MSDN:
ON_WM_NCHITTEST( ) afx_msg UINT OnNcHitTest( CPoint );
afx_msg UINT OnNcHitTest(
CPoint point
);
In code for MFC this differs:
#define ON_WM_NCHITTEST() \
{ WM_NCHITTEST, 0, 0, 0, AfxSig_l_p, \
(AFX_PMSG)(AFX_PMSGW) \
(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(CPoint) > (&ThisClass :: OnNcHitTest)) },
class CWnd
...
afx_msg LRESULT OnNcHitTest(CPoint point);
UINT is an 'typedef unsigned int'
LRESULT is 'typedef LONG_PTR' which is a 'typedef _W64 long' (for 32-bit build)
So they differ too ...
I don't know why this is, sorry ...
The missing 'BOOL' even was no problem in VC6
Regards,
ZOPPO
In MSDN for MFC8.0 they're both described to use a function which returns UINT:
MSDN:
ON_WM_NCHITTEST( ) afx_msg UINT OnNcHitTest( CPoint );
afx_msg UINT OnNcHitTest(
CPoint point
);
In code for MFC this differs:
#define ON_WM_NCHITTEST() \
{ WM_NCHITTEST, 0, 0, 0, AfxSig_l_p, \
(AFX_PMSG)(AFX_PMSGW) \
(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(CPoint) > (&ThisClass :: OnNcHitTest)) },
class CWnd
...
afx_msg LRESULT OnNcHitTest(CPoint point);
UINT is an 'typedef unsigned int'
LRESULT is 'typedef LONG_PTR' which is a 'typedef _W64 long' (for 32-bit build)
So they differ too ...
I don't know why this is, sorry ...
The missing 'BOOL' even was no problem in VC6
Regards,
ZOPPO
ASKER
That works, thanks. Whats going on here? Why was this necessary?
Regards,
Sternocera