想做个AUTOCAD那样的编辑栏,再窗口中输入命令,但是不允许用户用去修改命令提示和之前的已经执行了的命令行。即,编辑完一行命令,程序执行他了,在编辑栏中显示下一个命令的编辑光标,而以上的所有内容显示在那里,但是都不能改变。我想是修改视图的OnChar函数但是不太行,
如,
void CmyView::OnChar(nChar,...)
{
if (nChar==VK_DELETE||VK_BACKSPACE)
return;
CEditView::OnChar(nChar,...);
}
高手们能说一下吗??还有什么高招吗???谢谢谢谢
如,
void CmyView::OnChar(nChar,...)
{
if (nChar==VK_DELETE||VK_BACKSPACE)
return;
CEditView::OnChar(nChar,...);
}
高手们能说一下吗??还有什么高招吗???谢谢谢谢
~~~~~~~~怎么能是CView的事件呢?应该是一个editbox的吧
屏蔽了
你需要定制一个edit然后对CEditView中的那个edit进行子类型化
if (nChar=='a')
return;
CEditView::OnChar(...)
还是可以不让字符a显示的
{
// TODO: Add your message handler code here and/or call default
switch(nChar)
{
case VK_UP:
return;
case VK_LEFT:
{
CEdit& edit=GetEditCtrl();
int FirstChar=edit.LineIndex();
CPoint pt=edit.GetCaretPos();
int CharCur=LOWORD(edit.CharFromPos(pt));
if(FirstChar==CharCur)
return;
}
default:
CEditView::OnKeyDown(nChar, nRepCnt, nFlags);
}
}void CEDITView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CEdit& edit=GetEditCtrl();
int LineClicked=HIWORD(edit.CharFromPos(point));
CPoint pt=edit.GetCaretPos();
int LineCur=HIWORD(edit.CharFromPos(pt));
if(LineClicked!=LineCur)
return;
CEditView::OnLButtonDown(nFlags, point);
}void CEDITView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CEdit& edit=GetEditCtrl();
int LineClicked=HIWORD(edit.CharFromPos(point));
CPoint pt=edit.GetCaretPos();
int LineCur=HIWORD(edit.CharFromPos(pt));
if(LineClicked!=LineCur)
return;
CEditView::OnLButtonDblClk(nFlags, point);
}
void CEDITView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(nChar=='\b')
{
CEdit& edit=GetEditCtrl();
int FirstChar=edit.LineIndex();
CPoint pt=edit.GetCaretPos();
int CharCur=LOWORD(edit.CharFromPos(pt));
if(FirstChar==CharCur)
return;
}
CEditView::OnChar(nChar, nRepCnt, nFlags);
}