MFC专注于我的输入框的第一个字段



我是MFC的初学者,我只想默认选择我的输入框,当输入框弹出时,可以用键盘输入文本。

这是我的类的C++.cpp文件:

testInputBox::testInputBox(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_INPUT_BOX, pParent)
, warning(_T(""))
{
}
testInputBox::~testInputBox()
{
}
void testInputBox::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_INPUT_BOX, editcedit);
DDX_Text(pDX, IDC_STATIC_MESSAGE, warning);
DDV_MaxChars(pDX, warning, 100);
}
BEGIN_MESSAGE_MAP(testInputBox, CDialogEx)
ON_EN_CHANGE(IDC_EDIT_INPUT_BOX, &testInputBox::OnEnChangeEdit1)
ON_BN_CLICKED(IDOK, &testInputBox::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &testInputBox::OnBnClickedCancel)
ON_STN_CLICKED(IDC_STATIC_MESSAGE, &testInputBox::OnStnClickedStaticMessage)
END_MESSAGE_MAP()

您需要覆盖CDialogEx类的OnInitDialog()成员,并在该覆盖中,将焦点设置为所需控件。然后,因为已经显式设置了焦点,所以覆盖函数应该返回零(或FALSE(。

假设你的editcedit是一个指向你想要焦点的控件的指针,那么你的覆盖将看起来像这样:

BOOL testInputBox::OnInitDialog()
{
CDialogEx::OnInitDialog(); // Always call base class function
// ... anything else you want to do here
editcedit->SetFocus(); // Or: GetDlgItem(IDC_EDIT_INPUT_BOX)->SetFocus();
return FALSE;
}

您的覆盖应该在类中声明如下:

class testInputBox : public CDialogEx
{
//...
protected:
BOOL OnInitDialog() override;
//...
};

CDialog::GotoDlgCtrl是您搜索的内容。

BOOL testInputBox::OnInitDialog()
{
CDialogEx::OnInitDialog(); 
// ... 
GotoDlgCtrl(&editcedit);  
// alternativ
CWnd* pWnd = GetDlgItem(IDC_EDIT_INPUT_BOX)
if(pWnd)
GotoDlgCtrl(pWnd)
// ...

}

相关内容

  • 没有找到相关文章

最新更新