none
添加不了消息处理函数,在Visual Studio 2010 RRS feed

  • 问题

  • (c++初学者)今天在学习c++加载位图时,需要向导生成消息处理函数OnPaint(),当我使用Class Wizard添加消息处理函数时,添加不了,

    只要一点击Add Handler (不知道是不是点这个)这个对话框就消失,当我点击下面的Add Custom Message 按钮最终也会弹出“There is no Message Map in this class”错误,当我右键对象的属性,用另一方式来添加消息响应函数如下图所示

    就会弹出对话框:Property value is not vaild,详细信息是:Operation SetValue on the component did not succeed, generating the error code 0x80004005.

    后来就只能自己手动的加入消息响应函数。

    部分代码:

    BEGIN_MESSAGE_MAP(GameWnd, CFrameWnd)
    ON_WM_PAINT()
    END_MESSAGE_MAP()


    void GameWnd::OnPaint()
    {
    //CPaintDC dc(this); // device context for painting
    CClientDC dc(this); 
    // TODO: Add your message handler code here

    dc.BitBlt(0,0,140,226,mdc,0,0,SRCCOPY);

    //dc.BitBlt(0,0,144,226,mdc,0,0,SRCCOPY);
    // Do not call CFrameWnd::OnPaint() for painting messages
    }

    期望有前辈能抽出时间顺便指点一下!

    2012年5月25日 21:19

答案

  • 非常感谢网友的回答,很抱歉,现在才回复:

    问题已找到了原因,是我的设置问题:

    这里要非常感谢各位网友对于一位C++初学者帮助,在知道上面,有位网友建议我把.cpp后缀换成.CC后缀是一下,结果还真的就可以了,添加Class出现的问题解决了,可是Class Wizard 还是不能添加消息函数,不过至此我终于开始有了一点方向了,我就在Options里查看有关文件后缀的相关设置,突然感觉有那么点记忆,就是我好像设置过Cpp后缀的相关设置,最终在Options->Text Editor->File Extension 如下图:

    图链接:https://skydrive.live.com/?cid=13fefa5d5cb4b09b&resid=13FEFA5D5CB4B09B!1577&id=13FEFA5D5CB4B09B%211577

    <iframe src=https://skydrive.live.com/?cid=13fefa5d5cb4b09b&resid=13FEFA5D5CB4B09B!1577&id=13FEFA5D5CB4B09B%211577"https://skydrive.live.com/embed?cid=13FEFA5D5CB4B09B&resid=13FEFA5D5CB4B09B%211577&authkey=ADP3bZX_IUZlKLk" width="165" height="128" frameborder="0" scrolling="no"></iframe>

    中有一个cpp文件手机是对应Resource Editor 的,当我试着Remove 时,然后上面所有的问题都在瞬间解决了,至此我终于恍然大悟,原来上面的错误都是由于我把扩展名为CPP文件的都作为Resource 文件来编辑了。

    这个问题终于解决了,困扰了我两天的问题,最终却是因为我的胡乱的设置问题。

    不过在找寻这个问题的过程中,又学到了很多不同的知识。如果没有自己的不懈坚持与执着的热情,这个问题可能对我来说永远都会是一个迷了。那么在我今后的学习中我就将带着这个问题的谜团越走越远了。最终我可能会发现,哦,原来我什么问题都没解决。


    2012年7月3日 19:11
  •        你好,

           首先,我这边没能够重现你的问题,你能提供重现方法吗?

           然后,我猜测你的Visual Studio可能有些问题,你可以试试重置Visual Studio的方法:

    1. 重置Visual Studio设置:打开你任意一个工程,在“工具”选项中找到“导入导出设置”,点选“重置所有设置”;然后再试试。
    2. 或者你可以,在安全模式下打开Visual Studio,试试试否会出现类似问题,这样做可以排除第三方VSPackages等的干扰。
    3. 或者试着重装下Visual Studio,由于你使用的是MFC,建议你付费使用:http://www.microsoft.com/visualstudio/en-us

          

           希望对你有帮助

    2012年5月28日 8:40
    版主

全部回复

  •        你好,

           首先,我这边没能够重现你的问题,你能提供重现方法吗?

           然后,我猜测你的Visual Studio可能有些问题,你可以试试重置Visual Studio的方法:

    1. 重置Visual Studio设置:打开你任意一个工程,在“工具”选项中找到“导入导出设置”,点选“重置所有设置”;然后再试试。
    2. 或者你可以,在安全模式下打开Visual Studio,试试试否会出现类似问题,这样做可以排除第三方VSPackages等的干扰。
    3. 或者试着重装下Visual Studio,由于你使用的是MFC,建议你付费使用:http://www.microsoft.com/visualstudio/en-us

          

           希望对你有帮助

    2012年5月28日 8:40
    版主
  • 非常感谢网友的回答,很抱歉,现在才回复:

    问题已找到了原因,是我的设置问题:

    这里要非常感谢各位网友对于一位C++初学者帮助,在知道上面,有位网友建议我把.cpp后缀换成.CC后缀是一下,结果还真的就可以了,添加Class出现的问题解决了,可是Class Wizard 还是不能添加消息函数,不过至此我终于开始有了一点方向了,我就在Options里查看有关文件后缀的相关设置,突然感觉有那么点记忆,就是我好像设置过Cpp后缀的相关设置,最终在Options->Text Editor->File Extension 如下图:

    图链接:https://skydrive.live.com/?cid=13fefa5d5cb4b09b&resid=13FEFA5D5CB4B09B!1577&id=13FEFA5D5CB4B09B%211577

    <iframe src=https://skydrive.live.com/?cid=13fefa5d5cb4b09b&resid=13FEFA5D5CB4B09B!1577&id=13FEFA5D5CB4B09B%211577"https://skydrive.live.com/embed?cid=13FEFA5D5CB4B09B&resid=13FEFA5D5CB4B09B%211577&authkey=ADP3bZX_IUZlKLk" width="165" height="128" frameborder="0" scrolling="no"></iframe>

    中有一个cpp文件手机是对应Resource Editor 的,当我试着Remove 时,然后上面所有的问题都在瞬间解决了,至此我终于恍然大悟,原来上面的错误都是由于我把扩展名为CPP文件的都作为Resource 文件来编辑了。

    这个问题终于解决了,困扰了我两天的问题,最终却是因为我的胡乱的设置问题。

    不过在找寻这个问题的过程中,又学到了很多不同的知识。如果没有自己的不懈坚持与执着的热情,这个问题可能对我来说永远都会是一个迷了。那么在我今后的学习中我就将带着这个问题的谜团越走越远了。最终我可能会发现,哦,原来我什么问题都没解决。


    2012年7月3日 19:11
  • 您好,

    感谢您的分享与回复。

    此致


    Elegentin Xie [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月4日 6:01
    版主