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