Bilindiği gibi API düzeyinde bir menü üç biçimde görüntülenebilir:
1) WNDCLASS yapısının lpszMenuName elemanına menü ismi girilir. CreateWindow fonksiyonunda bu sınıf kullanıldığında menü otomatik olarak görüntülenir.
2) LoadMenu fonksiyonu ile menü kaynağı yüklenir ve handle elde edilir. Sonra CreateWindow fonksiyonunun HMENU parametresine bu handle girilerek menü yaratılır.
3) Menü API fonksiyonlarıyla istenildiği zaman dinamik olarak yaratılır.
MFC’de bu üç yöntemle de menü oluşturulabilir. Ancak birinci yöntemde WNDCLASS yapısını biz oluşturmadığımız için işlemler zordur. Üçüncü yöntem de zahmetli bir yöntemdir. O halde en kolay yöntem ikinci yöntemdir.
CFrameWnd::Create fonksiyonunun altıncı elemanı LPCTSTR lpszMenuName biçimindedir. Bu parametreye doğrudan menü kaynağının ismi girilirse fonksiyon kendi içerisinde menü kaynağını yükleyerek ikinci yöntemi uygular.
Sınıf Çalışması
İskelet MFC programını kullanarak aşağıdaki menü sistemini oluşturunuz ve seçim yapıldığında seçilen elemanı message box ile yazdırınız.

//MENU.H

#ifndef _MENU_H_
#define _MENU_H_

class CGenericApp : public CWinApp {
public:
virtual BOOL InitInstance(void);
};

class CMainWnd : public CFrameWnd {
public:
CMainWnd(void);
public:
afx_msg void OnFileOpen();
afx_msg void OnFileSave();
afx_msg void OnFileExit();
afx_msg void OnFileCut();
afx_msg void OnFilePaste();
DECLARE_MESSAGE_MAP()
};
#endif
//MENU.CPP
#include
#include “menu.h”
#include “resource.h”

BEGIN_MESSAGE_MAP(CMainWnd, CFrameWnd)
ON_COMMAND(ID_FILE_OPENX, OnFileOpen)
ON_COMMAND(ID_FILE_SAVEX, OnFileSave)
ON_COMMAND(ID_FILE_EXITX, OnFileExit)
ON_COMMAND(ID_EDIT_CUTX, OnFileCut)
ON_COMMAND(ID_EDIT_PASTEX, OnFilePaste)
END_MESSAGE_MAP()

CGenericApp theApp;

BOOL CGenericApp::InitInstance(void)
{
m_pMainWnd = new CMainWnd();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}

CMainWnd::CMainWnd(void)
{
Create(NULL, “Sample”, WS_OVERLAPPEDWINDOW, rectDefault, NULL,
MAKEINTRESOURCE(IDR_MENU1));
}

void CMainWnd::OnFileOpen()
{
MessageBox(”Open seçildi”);
}

void CMainWnd::OnFileSave()
{
MessageBox(”Save seçildi”);
}

void CMainWnd::OnFileExit()
{
MessageBox(”Exit seçildi”);
}

void CMainWnd::OnFileCut()
{
MessageBox(”Cut seçildi”);
}

void CMainWnd::OnFilePaste()
{
MessageBox(”Paste seçildi”);
}