MFC о модели не отображаетсяC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 MFC о модели не отображается

Сообщение Anonymous »

Я создал приложение MFC и использовал формы для создания основного диалога управления. У него есть кнопки, редактировать элементы управления и т. Д. Все они работают нормально. Появится элемент меню «О» в главном меню, и все элементы управления/классы в коде, кажется, находятся там (ниже), но при выборе элемента меню «О», всплывающее окно не отображается. Я проделал некоторую отладку и обнаружил, когда называется onsystemcomand , значение NID составляет 0xf095 , то есть AFX_IDS_UNKNOWNTYPE от . Если я прокомментировал, как проверка значения, показанная моя поп, очень хорошо - так что все части есть - каким -то образом система не знает о «О меню»? Система? < /p>
void CguiDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
//the About menu item was selected and this should popup the About Dialog here
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}

here are bits of the code
CguiDlg::CguiDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_GUI_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CguiDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CguiDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, &CguiDlg::OnBnClickedButton1)
// ...other controls

//I added this to test but the sysCommand should see it, this is never called
ON_COMMAND(IDM_ABOUTBOX, &CguiDlg::OnAbout)
END_MESSAGE_MAP()

BOOL CguiDlg::OnInitDialog()
{
#include

//draw all the control/input buttons and boxes now
CDialogEx::OnInitDialog();

// Add "About" menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != nullptr)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

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

//A selection from the menu (Just "About" for now)
void CguiDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
//the About menu item was selected and this should popup the About Dialog here
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}

//separate method I experimented with
void CguiDlg::OnAbout()
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... displaying
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»