windows_programming_notes.nbk: Home | Index | Next Page: CreateDialog | Previous Page: CommDlgExtendedError
//////////////////////////////////////////////////////////////////////////////////////
// Generate popup menu for editing RACL opcodes.
//////////////////////////////////////////////////////////////////////////////////////
void racl_win::opcode_popup_menu(HWND hwnd, int x_pos, int y_pos)
{
HMENU racl_menu;
MENUITEMINFO mii;
TCHAR buffer[100];
TCHAR buffer2[100];
POINT p;
racl_menu = CreatePopupMenu();
myassert(racl_menu > 0);
mii.cbSize = sizeof(MENUITEMINFO);
mii.dwTypeData = buffer2;
mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
mii.fType = MFT_STRING;
if (edit_m->is_standard()) {
mii.fState = MFS_GRAYED;
}
else {
mii.fState = MFS_DEFAULT;
}
mii.wID = IDM_RACL_ADD;
LoadString(g.hinstance, IDS_RACL_ADD, buffer, sizeof(buffer));
sprintf(buffer2, buffer, edit_s->opcode_text());
InsertMenuItem(racl_menu, IDM_RACL_ADD, FALSE, &mii);
// Disable this if the current statement is END
mii.wID = IDM_RACL_DELETE;
if ((edit_s->opcode() == OP_END) || edit_m->is_standard()) {
mii.fState = MFS_GRAYED;
}
else {
mii.fState = MFS_DEFAULT;
}
LoadString(g.hinstance, IDS_RACL_DELETE, buffer, sizeof(buffer));
sprintf(buffer2, buffer, edit_s->opcode_text());
InsertMenuItem(racl_menu, IDM_RACL_DELETE, FALSE, &mii);
mii.wID = IDM_RACL_INFO;
mii.fState = MFS_DEFAULT;
LoadString(g.hinstance, IDS_RACL_INFO, buffer, sizeof(buffer));
sprintf(buffer2, buffer, edit_s->opcode_text());
InsertMenuItem(racl_menu, IDM_RACL_INFO, FALSE, &mii);
p.x = x_pos;
p.y = y_pos;
ClientToScreen(hwnd, &p);
TrackPopupMenuEx(racl_menu, TPM_LEFTALIGN | TPM_TOPALIGN, p.x, p.y, hwnd, NULL);
DestroyMenu(racl_menu);
}
windows_programming_notes.nbk: Home | Index | Next Page: CreateDialog | Previous Page: CommDlgExtendedError
Notebook exported on Monday, 7 July 2008, 18:56:50 PM Eastern Daylight Time