1 响应OnChar事件: 请看我注释的地方 该怎么写?
void CMDIProView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
dc.SetBkMode ( TRANSPARENT );
//dc无法显示成员变量 bool bchinese =false ;
char cTemp[3];
if(nChar==VK_RETURN)
{
HideCaret( this->GetSafeHwnd());
}
else if(nChar==VK_BACK)
{
if(m_nPos>0)
m_nPos--;
if(bchinese)
{
m_xPos=m_xPos-2*sizeof( char );
SetCaretPos( m_xPos, m_yPos );
}
else 
{
m_xPos=m_xPos-sizeof( char );
SetCaretPos( m_xPos, m_yPos );
SetCaretPos();
}
m_Str.Delete(m_nPos);
}
else 
{
CString sTemp;
//如何判断是否中文字符
cTemp[0]=nChar;
cTemp[1]='\0';
m_Str+=cTemp;
}
dc.TextOut(m_xPos , m_yPos ,m_Str); CView::OnChar(nChar, nRepCnt, nFlags);
}2 接第一个问题:为什么无法显示dc的成员变量? 我选择了自动成员列表的3 响应WM_FILE_Open消息: 请看注释部分:
void CMainFrame::OnFileOpen() 
{
// TODO: Add your command handler code here
LPCTSTR lpfilter="   ";  //如何过滤自定义文件 *.ncr
CFileDialog OpenDlg (true , NULL ,NULL ,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
lpfilter , NULL);
}
4 如何保存输入的内容 
  1) 如果是在这里: 怎么写入指定的文件 如: 指定的文件名是save1.ncr
 void CMDIProDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
//save input words // TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
5 一个基于MDI的和非MDI的应用在CView CFrameWnd CDocment上有什么区别?
  在非MDI用CreateView() 创建一个MyView 是否同时要创建CFrameWnd CDocment和CTemplate?并指定他们之间的关系? 而在MDI中是自动完成的?
分不多 问题不难 谢谢

解决方案 »

  1.   


    无法显示成员变量?
    ------------------
    你可以试把工程下的.clw 文件删了重建试,你最好装一个visual assist插件
    2
    判断中文字符参考
    http://search.csdn.net/Expert/topic/917/917219.xml?temp=.2552606
      

  2.   

    3
    LPCTSTR lpfilter="文件(*.ncr) | *.ncr|视频文件(*.bat) | *.bat |All Files (*.*) | *.* ||"上面就是在文件类型列表框的编辑框要显示“文件(*.ncr)”,而在它的下拉列表框中列出“视频文件(*.avi)、All Files(*.*)”内容
      

  3.   


    ncr是什么类型的文件,没有用过,在Serialize函数里就是根据文件的格式自己写代码类进行读写。
    5
    个基于MDI的和非MDI的应用在CView CFrameWnd CDocment上有什么区别?
    他们的框架和文档没有什么区别,只是在一个文档上对应有多个视图,你自己建立一个视图的时候如果是新的文档类型就要文档,文档摸班,不是的话就直接和当前的文件关联起来就可以。
      

  4.   

    error C2660: 'HideCaret' : function does not take 1 parameters
    error C2660: 'SetCaretPos' : function does not take 2 parameters
    error C2660: 'SetCaretPos' : function does not take 2 parameters
    我include 了winuser.h 但是还是出现这个错误?
      

  5.   

    CWnd::SetCaretPos
    static void PASCAL SetCaretPos( POINT point );ParameterspointSpecifies the new x  and y coordinates (in client coordinates) of the caret.指定了插字符的新的x和y坐标(客户坐标)
    这个不是包含的问题,是你的函数参数用错了。
      

  6.   


    ncr是什么类型的文件,没有用过,在Serialize函数里就是根据文件的格式自己写代码类进行读写。
    ---------------------------------------------------------------------
    比如我在视图CView里输入:foewiajfelkfjewif
    那么我如何把输入用 ar<< 。 存入文档? ar后面是什么? 不会直接写我输入的东东吧? 换句话说 就是我如何得到我输入的数据? 是CView ::???那个成员函数么?
      

  7.   

    汗~~~ msdn也过时了??
    BOOL SetCaretPos(
      int X,  // horizontal position
      int Y   // vertical position
    );
     
    Parameters

    Specifies the new x-coordinate of the caret. 

    Specifies the new y-coordinate of the caret. 
      

  8.   

    我如何得到我输入的数据? 是CView ::???那个成员函数么?
    ----------------------------------------------
    CView能直接输入数据吗?用CEditView  CRichEditView吧  你查查MSDN就明白了。
      

  9.   

    是这样的 我在CView::onChar里响应了输入事件的啊~~~ 不可以吗?