还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

CreateWindow()动态创建一个EditBox

来源:清泛原创     2016-06-07 13:06:22    人气:     我有话说( 0 人参与)

在Win32代码或MFC代码中动态创建一个EditBox:在OnInitDialog()函数中: 创建EditBox HWND m_wndEdit = CreateWindow(_T("EDI...

在Win32代码或MFC代码中动态创建一个EditBox:

在OnInitDialog()函数中:

        // 创建EditBox
        HWND m_wndEdit = CreateWindow(_T("EDIT"), 0, WS_CHILD | WS_VISIBLE | ES_WANTRETURN, 
                70, 4, 60, 16, m_hWnd, 0, 0, 0);
        // 显示
        ::ShowWindow(m_wndEdit, SW_SHOW);

常见错误解决思路:
1.创建失败,不显示输入框等。DWORD errno = GetLastError() 查看错误代码。
2.不可在类的构造函数中创建Edit,因为此时主窗口还没有被创建出来,导致出现“Cannot create a top-level child window”错误。


-----------------------------------------------------------------------------------------
创建好了EditBox,需要处理其输入事件,如下:
先给它设置一个ID(可以在resource.h中指定)
        m_wndEdit = CreateWindow(_T("EDIT"), 0, WS_CHILD | WS_VISIBLE | ES_WANTRETURN, 
                70, 4, 60, 16, m_hWnd, (HMENU)IDC_EDIT_SEARCH, (HINSTANCE)GetWindowLong(m_hWnd, GWL_HINSTANCE), 0);
        //::SetWindowLong(m_wndEdit, GWL_ID, IDC_EDIT_SEARCH);  //效果和上面一样


BEGIN_MESSAGE_MAP(CMainDlg, CDialogEx)
        ...
        ON_EN_CHANGE(IDC_EDIT_SEARCH, OnSearchEditCommand)
END_MESSAGE_MAP()


void CMainDlg::OnSearchEditCommand()
{
        CString strSearch;
        GetDlgItemText(IDC_EDIT_SEARCH, strSearch);
        AfxMessageBox(strSearch);
}


这样,文本框中有输入后,消息框便会提示其输入的内容。

另外,如何设置输入框焦点,请参照:https://www.tsingfun.com/it/cpp/1538.html

CreateWindow 动态创建 EditBox

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: