在 从generic CWnd派生的类中显示CEdit的问题
想要实现功能:
从generic CWnd派生类CInput,CInput中包含一个CEdit, 在主程序中创建CInput的对象,当鼠标移动时,位置信息给CInput的对象,由CInput根据相应的消息管理CEdit的位置和状态等。
我是这样做的:
先新建一个MFC的单文档应用程序,然后从generic CWnd派生一个类CInput,Create函数如下:
LPCSTR CInputWnd::lpszClassName=NULL;
BOOL CInputWnd::Create( CWnd* pWndParent )
{
CRect rect( 0,0,0,0 );
if( pWndParent )
pWndParent->GetClientRect( &rect );
if(lpszClassName==NULL)
{
lpszClassName=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,::LoadCursor(AfxGetResourceHandle(),MAKEINTRESOURCE(IDC_NOCURSOR)));
//注册类;IDC_NOCURSOR为新建光标的ID,这个光标没有任何图案
}
BOOL bCreate = CreateEx( WS_EX_TRANSPARENT, lpszClassName, "", WS_VISIBLE|WS_CHILD,
rect, pWndParent, IDC_WND_INPUT );
if( bCreate )
{
m_edFirst.Create( WS_CHILD|WS_BORDER|WS_TABSTOP|ES_AUTOHSCROLL, CRect(10,10,100,100), this, IDC_EDIT_SHOW );
m_edFirst.ShowWindow( SW_HIDE );
}
return bCreate;
}
在CInput的头文件中包含一个CEdit m_edFirst;
在单文档程序中,OnCreate()中调用CInput的Create(this)进行创建。
当鼠标移动时在OnMouseMove中,调用CInput的ChangePos()函数,ChangePos如下:
void CInputWnd::ChangePos( CPoint ptPos )
{
m_edFirst.ShowWindow( SW_SHOWNA );
m_edFirst.MoveWindow( ptPos.x, ptPos.y, 100, 20 );
}
跟踪程序可以进入ChangePos,但是界面上看不到任何反应。
请问:怎样让CEdit显示出来?请指教,谢谢!