MFC按钮怎么设置为快捷键
比如一个确定按钮,在属性那里改ID为:确定(&**),那么**里可以加哪些,系统热键怎么加??比如Alt+s是这样写吗:确定(&Alt+s),回车键呢?ID为:确定(&e...
比如一个确定按钮,在属性那里改ID为:确定(&**),那么**里可以加哪些,系统热键怎么加??比如Alt+s是这样写吗:确定(&Alt+s),回车键呢?ID为:确定(&enter),好像不对啊,所有快捷键是加什么的,详细说下
展开
3个回答
展开全部
不是所有的按钮都能加快捷。
Accelerator 里的,例如 IDR_MAINFRAME 里的 东西可以。
选一个 ID, 打开 Accel Properties,
你可以在 Modifiers 里选 Ctrl 或 Alt 或 Shift
在Type 里选 ASCII 键 或 VirtKey 键
然后在 Key 的 下拉窗里选 具体的键
------------------------------------------
如果你直接写 .rc 文件,写法:
IDR_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&New\tCtrl+N", ID_FILE_NEW
MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN
MENUITEM "&Close", ID_FILE_CLOSE
....
END
END
IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE
BEGIN
"N", ID_FILE_NEW, VIRTKEY, CONTROL
.....
VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT
VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT
....
END
END
===============
回车键可能是: VK_RETURN。 你要查虚拟键表。一般不用它 做快捷。
Accelerator 里的,例如 IDR_MAINFRAME 里的 东西可以。
选一个 ID, 打开 Accel Properties,
你可以在 Modifiers 里选 Ctrl 或 Alt 或 Shift
在Type 里选 ASCII 键 或 VirtKey 键
然后在 Key 的 下拉窗里选 具体的键
------------------------------------------
如果你直接写 .rc 文件,写法:
IDR_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&New\tCtrl+N", ID_FILE_NEW
MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN
MENUITEM "&Close", ID_FILE_CLOSE
....
END
END
IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE
BEGIN
"N", ID_FILE_NEW, VIRTKEY, CONTROL
.....
VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT
VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT
....
END
END
===============
回车键可能是: VK_RETURN。 你要查虚拟键表。一般不用它 做快捷。
展开全部
按钮添加成员
ACCEL m_accel;
HACCEL m_hAccel;
#define WM_MYBUTTON (WM_USER+1000)
CMybutton::CMybutton()
{
m_accel.fVirt = FVIRTKEY|FCONTROL;
m_accel.key = 'A';
m_accel.cmd = WM_MYBUTTON ;
m_hAccel = ::CreateAcceleratorTable( &m_accel , 1 );
}
CMybutton::~CMybutton()
{
DestroyAcceleratorTable( m_hAccel );
}
这样按 Ctrl + A button就会收到 WM_MYBUTTON ;
再
BEGIN_MESSAGE_MAP(CTEdit, CODrawEdit)
ON_COMMAND( WM_MYBUTTON , OnMyButton )
END_MESSAGE_MAP()
void CMybutton::OnMyButton ()
{
//do Customized Operation
}
ACCEL m_accel;
HACCEL m_hAccel;
#define WM_MYBUTTON (WM_USER+1000)
CMybutton::CMybutton()
{
m_accel.fVirt = FVIRTKEY|FCONTROL;
m_accel.key = 'A';
m_accel.cmd = WM_MYBUTTON ;
m_hAccel = ::CreateAcceleratorTable( &m_accel , 1 );
}
CMybutton::~CMybutton()
{
DestroyAcceleratorTable( m_hAccel );
}
这样按 Ctrl + A button就会收到 WM_MYBUTTON ;
再
BEGIN_MESSAGE_MAP(CTEdit, CODrawEdit)
ON_COMMAND( WM_MYBUTTON , OnMyButton )
END_MESSAGE_MAP()
void CMybutton::OnMyButton ()
{
//do Customized Operation
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里有人说的比我详细 我就不班门弄虎了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询