我必须制作一个自定义控制器" 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);
}
};
我错过了一个步骤,或者我做错了操作?