孙鑫MFC第七课输入焦点的传递

来源:互联网 发布:王者刷点卷的软件 编辑:程序博客网 时间:2024/04/27 20:49

1.对话框用户界面程序的编写(添加对话框)

2.如何在程序运行时产生和销毁控件。

3. 静态文本框上响应函数的编写

3.如何利用对话框类的成员函数向控件发送消息和获取对话框控件的类指针,

4.如何直接利用对话框控件类操纵对话框控件(发送消息和直接调用成员函数)。

5. 如何向对话框控件关联数据成员及其实现机理,

6.对话框控件的几种操作方式的优劣比较分析。

7.如何实现对话框的部分收缩和展开。

8.如何让对话框上的文本框在程序启动后立即获得焦点,

9如何利用SetWindowLong改变窗口的回调函数,通过改变文本框的默认回车处理方式进行演示。实现多个输入文本框间通过回车逐一向下传递焦点的另一种巧妙方法(用缺省按钮来处理)

输入焦点的切换,在控件上按回车切换

把原来对话框有的默认响应按钮onOK的函数覆盖掉

编辑框要接受回车按钮必须把属性里的multiline复选上

void CTestDlg::OnOK()

{

    // TODO: Add extra validation here

    // CDialog::OnOK();

}

WNDPROC prevProc;

LRESULT CALLBACK WinSunProc(

HWND hwnd,      // handle to window

UINT uMsg,      // message identifier

WPARAM wParam, // first message parameter

LPARAM lParam   // second message parameter

)

{

    if(uMsg==WM_CHAR && wParam==0x0d)

    {

        //::SetFocus(::GetNextWindow(hwnd,GW_HWNDNEXT));//三种方法

        //SetFocus(::GetWindow(hwnd,GW_HWNDNEXT));

        SetFocus(::GetNextDlgTabItem(::GetParent(hwnd),hwnd,FALSE));

        return 1;

    }

    else

    {

        return prevProc(hwnd,uMsg,wParam,lParam);

    }

}

BOOL CTestDlg::OnInitDialog()

{

    CDialog::OnInitDialog();

   

    // TODO: Add extra initialization here

    prevProc=(WNDPROC)SetWindowLong(GetDlgItem(IDC_EDIT1)->m_hWnd,GWL_WNDPROC,

        (LONG)WinSunProc);

    return TRUE; // return TRUE unless you set the focus to a control

                  // EXCEPTION: OCX Property Pages should return FALSE

}

利用缺省按钮来响应

需要有焦点的控件的tab-top属性必须复选上

想看tab即焦点序号,可以点击layout的taborder按钮查看到,也可以通过这进行改变控件焦点的序号;

注意:要想响应焦点的转移,必须先把缺省按钮响应给取消掉

如果新建的窗口没有ok按钮,可以自己添加一个IDOK的按钮,不要写成idc_ok

void CTestDlg::OnOK()

{

    // TODO: Add extra validation here

    //GetDlgItem(IDC_EDIT1)->GetNextWindow()->SetFocus();//跳转到edit1的下i个窗口,设置焦点,始终无法设置到第三个控件上

    //GetFocus()->GetNextWindow()->SetFocus();//再最后一个控件的时候再调用就会出错,因为没有下一个控件

    //GetFocus()->GetWindow(GW_HWNDNEXT)->SetFocus();//再最后一个控件的时候再调用就会出错,因为没有下一个控件

    GetNextDlgTabItem(GetFocus())->SetFocus();//可以一直循环切换焦点

// CDialog::OnOK();

}

原创粉丝点击