在嵌套CWND衍生的类中,不关注不改变选项卡键
Focus not changing upon tab key in a nested CWnd-Derived Class
环境:VS2013,MFC,C
我有一个带有2个静态按钮的cdialog派生对话框(OK,CANCAL),并使用对话框编辑器创建。此外,对话框应包含一个动态创建的CWND衍生类的实例,其中包含2个编辑框。
问题是,我无法通过编辑框之间的选项卡将焦点移动,并且在打开对话框时也无法使一个框具有初始焦点。当我点击"选项卡键"时,第一个编辑框将被焦点,但是从这一点上,我无法将焦点移开(单击鼠标工作)。
。我已经使用WS_EX_CONTROLPARENT样式创建了CWND,但仍无法移动焦点。那么问题在哪里?到目前为止,我做了什么:
//the CDialog-class which should be the container for the CWnd
//.h
class CDlgSelCatalogItem : public CDialog {
CListFilterInput _ctrlList; //CWnd-Derived, contains 2 Edit-Boxes
}
//.cpp
BOOL CDlgSelCatalogItem::OnInitDialog()
{
CRect rectList(10, 10, 100, 50);
_ctrlList.Create(rectList, this);
}
//the CWnd-derived class that contains 2 edit-boxes
//.h
class CListFilterInput : public CWnd {
BOOL Create(const RECT& rect, CWnd* pParentWnd);
//2 Edit-Boxes
CEdit _ctrl1;
CEdit _ctrl2;
}
BOOL CListFilterInput::Create(const RECT &rect, CWnd *pParentWnd)
{
BOOL bRetVal;
bRetVal = CWnd::CreateEx(WS_EX_CONTROLPARENT, NULL, _T(""), WS_CHILDWINDOW | WS_VISIBLE,
rect, pParentWnd, CTRL_ID_THIS);
if (bRetVal == TRUE){
//1st box
CRect rectTextbox = ...; //calculate rect fox box
bRetVal = _ctrl1.Create(
WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_LEFT | ES_AUTOHSCROLL,
rectTextbox, this, CTRL_ID_TEXTBOX);
//2nd box above 1st
rectTextbox.MoveToY(rectTextbox.top - rectTextbox.Height());
bRetVal = _ctrl1.Create(
WS_CHILDWINDOW | WS_VISIBLE | WS_TABSTOP | ES_LEFT | ES_AUTOHSCROLL,
rectTextbox, this, CTRL_ID_TEXTBOX+1);
//set input-focus initially on 1st textbox - doesnt work
_ctrl1.SetFocus();
}
return bRetVal;
}
菜单 ->格式 -> TAB订单(ctrl d)这件事提供了对话框的标签顺序。设置订单后,请单击对话框。我希望它会有所帮助
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- 变量没有改变?通过向量的函数调用
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 如何改变c++应用程序的视觉效果
- C++在不同线程中改变向量
- 如何传递多个 std::文件系统选项?
- 如何访问和改变存储在矢量C++中的对象
- 基于编译器选项的编译二进制路径
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- 如何应用 libcurl 的持久连接选项
- 文件中.dat Dlib 选项
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 在嵌套CWND衍生的类中,不关注不改变选项卡键
- 是否有任何优化选项,可以改变结构的对齐在VS2012