私は少し困惑Edit Control
していますRich Edit Control
. だから私はしました。これでRich Edit Control
、ダイアログ ボックスに があるときはいつでも、機能がRich Edit Control
変わりIDOK
ますIDCANCEL
。しかし、ダイアログボックスのどこかに がある場合、ダイアログボックスのボタンをクリックする前にRich Edit Control
、常に 以外の何かを返しますIDOK
。ダイアログボックスはまったく作成されていないようです。
メッセージ ハンドラは次のとおりです。
INT_PTR CALLBACK MyDialogBox(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){
switch(message){
case WM_INITDIALOG: {
SetDlgItemText(hDlg, IDC_EDIT1, (LPCTSTR)some_string.c_str());
return (INT_PTR)TRUE;
}
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDOK: case IDCANCEL: {
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
}
break;
}
return (INT_PTR)FALSE;
}
そして、ここに私がダイアログボックスを使用するコードがあります:
if(DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, MyDialogBox) == IDOK){
// without rich edit control it goes here or below depending on the user choice.
}else{
// with rich edit it always goes here.
}
したがって、ここでの究極の質問は次のとおりです。これを通常のように機能させるにはどうすればよいEdit Control
ですか?
編集:失敗した場合の値は、DialogBox() の場合は -1、GetLastError() の場合は 0 です。
Edit2: antinome のリンクによって解決された問題:ウィンドウメッセージを含めafxwin.h
て呼び出します。AfxInitRichEdit2()
WM_CREATE