
Windows程序中Tab键是默认的切换输入焦点的按键,但用回车键切换输入焦点更符合人们的输入习惯。Delphi、VB中这个问题比较容易解决,VC++中却很少有资料提到。通过反复尝试,我找到了一种方法,或许对大家有所帮助。
1.VC++中appwizard生成一个基于对话框的程序。切换resourseview状态,在对话框中插入一个编辑框,同时修改其styles属性,选中multiline
、want
return两项。
2.
①在classwizard中选add
class增加一个新类,name定义为myedit,base
class选择edit。其余采用默认选项。
②在新生成的my-edit类中加入wm-keydown的消息映射函数,加入如下代码。
oid
Myedit::OnKeyDown(UINT
nChar,
UINT
nRepCnt,
UINT
nFlags){
//
TODO:
Add
your
message
handler
code
here
and/or
call
default
if
(nChar=
=
VK_RETURN)
//插入开始部分{
CDialog
Pwnd=(CDialog)GetParent()
;//取得对话框指针
Pwnd-NextDlgCtrl(
);
//切换到下一个输入焦点}
//插入结束部分
3.在classwizard中选择
member
variables
选项,class
name选择对话框类,control
ids中选择编辑框的id号,然后选择add
variable按扭。
在app的之前,SetVisible应该是可以实现窗口激活的,你的可能是顺序和释放有问题,大致应该是这样:
docsAdd(&tpl,&NewTemplate);//,&DocType,&Visble);// appSetVisible(TRUE); //可见 位置不对,先注销掉
doc = appGetActiveDocument();
sel = appGetSelection();
sel=appGetSelection();//获取文档的selection
InlineShapes inlineshapes = selGetInlineShapes();
selMoveDown(COleVariant((short)4),COleVariant((short)41),COleVariant((short)0));
inlineshapesAddPicture(BmpFilePath,COleVariant((short)FALSE),COleVariant((short)TRUE),&_variant_t(selGetRange()));//添加,并制定其位置为当前光标位置
inlineshapesReleaseDispatch();
selReleaseDispatch();
docReleaseDispatch();
appSetVisible(TRUE);//在这里可见试试
appReleaseDispatch();
记得word应该不需要其它 *** 作,但如果实在不行,也可以用个无奈的办法,就是FindWindow查找顶层窗口找到Word窗口句柄,再用这个窗口句柄SetForegroundWindow就可以了。
大致就是:
HWND hWord = ::FindWindow(NULL,窗口标题);
::SetForegroundWindow(hWord);
补充一下,在使用“无奈”办法之前,你可以去mswordh文件中找找App类的方法。我这里没有环境了,没法试,记得可能还有些方法,什么ShowThis或者ShowMe什么的,可以尝试一下。
QT控件获得焦点问题高手帮个忙啊,,,主窗口是QWidget 主窗口中有多个 QLineEdit 当点击QLineEdit d出虚拟键盘但是QLineEdit被重写了,, void LineEdit::focusInEvent(QFocusEvent event){
CTRL+D Taborder改为1,是有用的,只是不会有那个虚框。
按ENTER键也不是对这个按钮的 *** 作,在按钮属性上设置为默认按钮(default button)就可以了。
另外注意一下按钮属性中:tab stop是不是选中状态,如果这个没选中肯定不行。
以上就是关于如何在VC++中用回车键切换输入焦点全部的内容,包括:如何在VC++中用回车键切换输入焦点、用VC++生成个Word怎么使之成为当前的焦点窗口!、VC 控件 是否获得焦点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)