VS2010中MFC里面,选控件在右键点添加事件,里面怎么没消息了?点属性里的控件事情也没有了?
3个回答
展开全部
楼上的这位的方法不可取,因为他每次都是将菜单更换,太消耗资源。
我还是真服你了,你有没有仔细看我写的代码呢??
我使用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()
}
我还是真服你了,你有没有仔细看我写的代码呢??
我使用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()
}
展开全部
pDTChange中有一个变量叫st
它的结构如下:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
存储的就是时间
它的结构如下:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
存储的就是时间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
右键 添加事件处理程序 消息类型里 选
更多追问追答
追问
右键添加事件处理消息类型里面什么都没有。2008有。2010不知道怎的没 有
追答
公司我没装2010
家里装的是2010
我回去给你看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询