а конкретнее? 
например - в какой среде пишется прога...
в том же MFC - элементарно
(на дурацкие имена и надписи не обращай внимания - вырвал из проекта 

 )
	MENUITEMINFO mi;
	mi.cbSize=sizeof(mi);
	mi.fMask=MIIM_STATE;
	CMenu WSMenu;
	if(!WSMenu.CreatePopupMenu()) {... тут обработать ошибку ...};
	enum
	{
		id_Invalid,
		id_bCanQuit,
		id_bCanOpenPConf,
		id_bCanAskServerToEditBase,
		id_bCanReport
	};
//флаги здесь взяты от балды
	WSMenu.AppendMenu(  ..флаги..  ,id_bCanQuit,"Квитирование");
	WSMenu.AppendMenu(MF_SEPARATOR);
	WSMenu.AppendMenu(MF_CHECKED,id_bCanAskServerToEditBase,"Управление через лампочки");
	WSMenu.AppendMenu(0,id_bCanReport,"Создание отчётов");
	WSMenu.AppendMenu(0,id_bCanOpenPConf,"Доступ в Конфигуратор");
	WSMenu.AppendMenu(0,id_Invalid,"Выход (Esc)");
	UINT res;
	res=WSMenu.TrackPopupMenu(TPM_LEFTALIGN|TPM_TOPALIGN|TPM_LEFTBUTTON|TPM_RETURNCMD,x0,y0,this,0);
//смотрим выбор
	switch(res)
	{
		case id_Invalid:break;
		case id_bCanQuit:
		{
		}
		break;
		case id_bCanOpenPConf:
		{
		}
		break;
		case id_bCanAskServerToEditBase:
		{
		}
		break;
		case id_bCanReport:
		{
		}
		break;
	}