将自定义控制器添加到DialogBox:Faillure on Create

时间:2016-01-14 13:11:54

标签: c++ winapi mfc

我必须制作一个自定义控制器" MyCEdit"继承自CEdit。我只是想在对话框中推送我的自定义控制器,但窗口在创建时崩溃。我看到了文件MSDN并做了一些调整:

在InitDialog上我有:

if (message == WM_INITDIALOG)
{
    CWnd* pWnd = CWnd::FromHandle(hwndDlg);

    MyCEdit* pEdit = new MyCEdit();
    pEdit->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
        CRect(10, 10, 100, 100), pWnd, IDC_CUSTOM_EDIT1); /* Failure here */
    return TRUE;
}

我检查指针pWnd,他不是NULL并指向好窗口。 pEdit不是NULL

我的自定义控制器看起来像(只覆盖PreTranslateMessage方法):

class MyCEdit : public CEdit
{
public:
    BOOL PreTranslateMessage(MSG* pMsg) override
    {
        if (pMsg->message == WM_KEYDOWN && ::GetKeyState(VK_CONTROL) != 0)
        {
            switch (pMsg->wParam)
            {
            case 'X': Cut(); return TRUE;
            case 'C': Copy(); return TRUE;
            case 'V': Paste(); return TRUE;
            case 'Z': Undo(); return TRUE;
            case 'A': SetSel(0, -1); return TRUE;
            }
        }
        return CEdit::PreTranslateMessage(pMsg);
    }
};

我错过了一个步骤,或者我做错了操作?

0 个答案:

没有答案