我做的一个作业,要求根据键盘的输入来改变输出的图像。
问题是:用cin根本就没用。

解决方案 »

  1.   

    win32 console可以用cin
    include iostream.h 就行了
      

  2.   

    当然不是win32 console 啦。是MFC Appwizard(exe),这个玩艺儿实在没怎么用过!恳请过来人指点。
      

  3.   

    重载这个消息
    BOOL CDiaDlg::PreTranslateMessage(MSG* pMsg) 
    {   
      if(pMsg->message==WM_KEYDOWN)
       {
           if(pMsg->wParam == 0x43 || pMsg->wParam == 0x63)
            //wParam这个参数对应你输入的按键来处理就好了 
            ......
        }
    }
    你说用cin 你建立的是win32  console application吗
      

  4.   

    这样啊,那么cin当然不好使了,在win32 console application里才可行的
      

  5.   

    朋友你好,可是我找不到
    BOOL CDiaDlg::PreTranslateMessage(MSG* pMsg) 这里只有CAboutDlg,CMainFrame,CxxxApp,CxxxDoc,CxxxView,
      

  6.   

    那就CMainFrame也可以啊
    BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
      

  7.   

    I see it. I will try it.
      

  8.   

    重载虚拟函数PreTranslateMessage,这样可以拦截消息WM_KEYDOWN
    BOOL CThreadDlg::PreTranslateMessage(MSG* pMsg) 
    {
        if (pMsg->message == WM_KEYDOWN)
    {
        CString s = "";
    s.Format("%d",pMsg->wParam);
    AfxMessageBox(s);
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    应该是你想要的吧
      

  9.   

    还是不行,我是在class CxxxView::OnDraw(CDC *pDC)里面写上代码,让它画图。
    然后我试着在class CAboutDlg : public CDialog里面重载BOOL CDiaDlg::PreTranslateMessage(MSG* pMsg),在里面我却没办法传递pDC给他,也就画不了图。不知该怎么办。
    另外,关于重载问题:我直接在CAboutDlg中加入bool CDiaDlg::PreTranslateMessage(MSG* pMsg),编译就报这样的错:   \zhengfang.cpp(105) : error C2555: 'CAboutDlg::PreTranslateMessage' : overriding virtual function differs from 'CDialog::PreTranslateMessage' only by return type or calling convention
     然后我把bool去掉就没这个错了,我把bool改成BOOL也没这个错了,为什么?
      

  10.   

    怎么在CAboutDlg中?
    重画用Invalidate()
      

  11.   

    我用了OnKeyDown就可以了。谢谢大家。没真正学过vc,惭愧都大四了。