我的程序试图灰显(和禁用)子菜单项时遇到问题。
我正在寻找的是“禁用”运行项目,除非所需的.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以及为什么此代码无法达到预期的效果。
对此的任何帮助将不胜感激。
答案 0 :(得分:1)
你不能把它放在顶级的WndProc中。 WndProc进程事件,无论窗口是否已构造。由于许多不同的原因,它会被多次调用。
你的WndProc几乎肯定会像message
上的一个大开关。你想要的是WM_INITDIALOG
:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
// jump to a new function that reads the .ini
// and disables the control etc.
return OnInitDialog(hWnd, wParam, lParam);
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}