1
我一直在试图灰化(和禁用)子菜单项的程序有问题。C++(不使用MFC)禁用/灰化菜单项
我在找的是“运行”项目被禁用,除非所需的.ini条目不为空。
我的代码
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HMENU hmenu = GetMenu(hWnd);
// Reading in ini
if (0 == strcmp(webLocation, "")){
EnableMenuItem(hmenu,ID_WEBSERVICES_RUN,MF_DISABLED | MF_GRAYED);
WritePrivateProfileString(_T("WEBSERVICES"), _T("Location"), _T("Tool Not Found"), WpathStr);
}
我不确知我是否正确地得到HMENU,为什么这个代码不工作了预期的效果。
任何帮助,这将不胜感激。
我使用paint而不是对话框(WM_PAINT)。我应该把我的代码放在这里吗? – L337BEAN 2012-04-19 12:33:03
也许你可能会再次调用WM_PAINT,每次窗口的任何部分都需要重新渲染,例如如果它不再被别的东西遮挡或者在被最小化后恢复。如果你把逻辑放在那里,那么你需要用一个标志来保护它,以便它只加载一次.ini文件。不过,我认为有更好的信息可以使用。 – Rup 2012-04-19 12:38:04
我还没有看过旗子。把一个菜单项变成灰色是我原本想的更复杂:/。感谢您的帮助Rup! – L337BEAN 2012-04-19 12:44:06