Воспользуемся проектом из прошлого шага. Единственное, что необходимо - это настроить диалоговое окно. При установке диалогового окна меню может и не быть, так же оно может быть, но значка в левом углу не будет. Сделайте, пожалуйста, как на картинке внизу.
Объявляем идентификатор меню.
.........
#pragma comment(lib,"shell32.lib") // подключили LIB файл.
#define IDM_MYMENU 102 // идентификатор нашего меню.
class CTestDlg : public CDialog // класс диалогового окна.
.........
Для настройки системного меню используется OnInitDialog(). Объявим ее.
class CTestDlg : public CDialog // класс диалогового окна
{
public:
........
void OnSend(); // функция реакции
BOOL OnInitDialog(); // функция настроки
protected:
........
};
И реализуем.
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // метод предка
CMenu* pSysMenu = GetSystemMenu(FALSE); // получить системное меню
if (pSysMenu != NULL) // если удалось все таки
{
pSysMenu->AppendMenu(MF_SEPARATOR); // добавить разделитель
pSysMenu->AppendMenu(MF_STRING, IDM_MYMENU, "MyMenu"); // добавить наш пункт
}
return TRUE;
}
Вот так работает наша программа.
Для работы с меню необходимо создать объект типа CMenu. Функция GetSystemMenu получает копию системного меню, с которым можно дальше работать. Получив копию можно добавлять в меню свои пункты. AppendMenu добавляет пункт меню. Здесь указывается тип пункта меню, идентификатор, и строка в меню. Естественно для разных типов меню набор разный. Первым делом я добавляю строку разделитель. Поэтому кроме типа пункта меню в остальном нет необходимости.
Создайте экземпляр пункта меню.
CMenu* pSysMenu = GetSystemMenu(FALSE); // получить системное меню
Добавьте пункты.
pSysMenu->AppendMenu(MF_SEPARATOR); // добавить разделитель