VS2010中MFC里面,选控件在右键点添加事件,里面怎么没消息了?点属性里的控件事情也没有了?

VS2010中MFC里面,选控件在右键点添加事件,里面怎么没消息了?点属性里的控件事情也没有了?,第1张

楼上的这位的方法不可取,因为他每次都是将菜单更换,太消耗资源。

我还是真服你了,你有没有仔细看我写的代码呢??

我使用MessageBox("开始了"),只是说这个地方可以放一些代码,实现一些功能,难道你的菜单只是个摆设没有功能吗?

pCmdUI->SetText 来改变时没有任何问题的。一个菜单项 只有2种处理事件一种是COMMAND,一种是 UPDATE_COMMAND_UI,,,pCmdUI->SetText 就是UPDATE_COMMAND_UI事件里的。

GetDlgItem(ID_START)->SetWindowText("开始")这种方法直接导致程序崩溃,因为 菜单不是 窗口控件,CMenu不是继承CWnd 类。

至于你说的 参数 2 从“const char [9]”转换为“LPCTSTR”,是因为vs2010默认使用的是“使用Unicode字符集”,解决方法有2中,一种是 修改 项目属性,在 常规里,“使用多字节字符集”,另一种方法是 在字符串前面加个L 也就是 L“开始”,L“结束”,L“字符串”

以VC++6.0为例,其他版本处理一样。

新加一个菜单项 ID 为:ID_START 名称为 “开始”

假如 你想在 主框架里 实现 对这个菜单的响应(其他类里处理相同)

在 CMainFrame类里定义一个 bool变量 bb;

class CMainFrame : public CFrameWnd

{

protected: // create from serialization only

CMainFrame()

DECLARE_DYNCREATE(CMainFrame)

// Attributes

public:

bool bb//这里是新添加的。

// Operations

public:

。。。。。。。。

在CMainFrame 的构造函数里 初始化 bb

CMainFrame::CMainFrame()

{

// TODO: add member initialization code here

bb=1//初始化bb

}

然后处理这个菜单事件

按Ctrl+W 调出 MFC 类管理器

Class name 里选择 CMainFrame (根据需求更改的。)

Object IDs 里选择 ID_START

Messages 里 有两个事件 COMMAND 和 UPDATE_COMMAND_UI

分别 添加 为OnStart()和OnUpdateStart()

实现代码:

//下面是菜单的COMMAND事件。

void CMainFrame::OnStart()

{

// TODO: Add your command handler code here

if(bb)

{

MessageBox("开始了")

bb=0

}

else

{

MessageBox("结束了")

bb=1

}

}

//下面是菜单的 UPDATE_COMMAND_UI事件。

void CMainFrame::OnUpdateStart(CCmdUI* pCmdUI)

{

// TODO: Add your command update UI handler code here

if(bb)

pCmdUI->SetText("开始")

else

pCmdUI->SetText("结束")

//其实pCmdUI还有其他功能,如:Enable(),SetRadio(),SetCheck()

}

Const int MessageNum = 0x0400

重载DefWndProc方法,

判断消息是否MessageNum

如果是自己定义的函数

DoSomething

否则交给系统处理

先 安装 Microsoft .NET Framework 4.0 win7 自带.NET Framework 3.5 低于 4.0 visual studio 2010 需要.NET Framework 4.0 支持 现了问题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11788257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存