This has nothing to do with the solution to your problem, as DavidCrow has already given you a clue. I'm just wondering if your compiler isn't giving you any warnings about your definition of main().
int main(int *op) definitely isn't one of the normal ways to define main() Normally it would be one of
int main(int argc, char *argv)
int main(int argc, char **argv)
On some systems you might also be able to use int main(int argc, char *arg, char *envp)
Note that as a function parameter char *arg and char **arg are equivalent.
You also have a type issues with op. It's declared as int *op, which is an array of pointer to int, but you are using it as a pointer to int. What you probably want to do is:
op = (int*)calloc(ct, sizeof *op);
If you're wondering why I used sizeof *op as the second argument to calloc(), consider what might happen if you decide you want to change op from an int to a long, and what might happen if you forget that you need change the call to calloc() too.
So, i right click inside my child view i see Option1, Option2, and when i click on either i can see message window popping up, meaning that they work.
However, if you noticed, when i click Option 1, it must disable this same option in menu (it must be grayed out) but that does not happen.
What is the proper way to get it to work?
to give additonal details, when i right click and select Option 1, i do see message about it, and as i mentioned above I do not see it grayed out, however when i click it again, no message appears, which means (i assume) that menu is already disabled, but not grayed out..so how to permanently disable/gray it out?
the CmEnableViewOption1 occurs only when i do View-> from top bar menu, there i see Option 1 and Option2 popping down.
However, when i mouse right click from inside ChildView window i do see |Option1,2 menu popping up but inside debugger it does not enter the CmEnableViewOption1, meaning that this function does not run.
In that case my question would be, why when i click directly inside top frame menu that function is called, but when i right click from child view window and properly getting that menu and can even run its commands, but CmEnableViewOption1 is not executed?
Have you checked that your ON_UPDATE_COMMAND_UI in the FrameWnd class gets called? It's a long time since I used MFC but I do not recall ever seeing this problem. Take a look at the area where you create and display the popup menu.
In the child window i can successfully do a MouseRight click and popup of some menu with its submenus from the main menu bar.
So you are using a popup (context) menu here and not the menu of the main frame (only the menu items / resources are re-used).
Then you should handle enabling/disabling when opening the popup menu and pass AfxGetMainWnd() as the owner window (see code comments):
CMenu *pMenu = new CMenu;
// Get the pop-up menu.
CMenu *pPopupMenu = pMenu->GetSubMenu(0);
// Enable disable an item by ID.
pPopupMenu->EnableMenuItem(CM_VIEW_OPTION1, CMViewOption1Enabled ? 0 : MF_GRAYED);
// Show context menu and wait for selection.// Advantages of passing AfxGetMainWnd():// - Calls provided OnUpdate() functions to determine state of items.// NOTE: Items can be only disabled using the OnUpdate handlers!// So there must be handlers for those items that may be disabled!// If no update handlers are present, items are enabled by default// (by existance of command handlers).// - Shows short info about items in status bar// - Processes F1 help
pPopupMenu->TrackPopupMenuEx(flags, x, y, AfxGetMainWnd(), NULL);
A dynamic update is not necessary here when the popup menu closes with the first click. Otherwise make pPopupMenu a member of your child view so that it can be used to change items and/or their state dynamically.