co prawda nie przeglądałem twojego dzieła, ale mam pytanie czy zrobiłeś może takie coś, że jak w okienku do podawania danych wpiszesz cokolwiek i zero (jako m_B), to czy funkcja podziel w menu robi się niedostępna? Ja byłem trochę leniwy i wyświetlanie wyniku zrobiłem za pomocą MessageBox(...) :P
spędziłem dwa wieczory na zrobienie tej komendy niedostępnej i się poddałem :(
nie składam jednak broni. Problem w tym, że
CWnd* pMain=AfxGetMainWnd(); CMenu* mmenu = pMain->GetMenu(); CMenu* submenu = mmenu->GetSubMenu(1); //nie działa także dla GetSubMenu(4) submenu->EnableMenuItem(ID_OBLICZ_PODZIEL,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
nie działa :( a wg MSDN powinno...
///
udało się :D wystarczyło dodać obsługę zdarzenia UPDATE_COMMAND_UI a dalej to już tylko:
if (m_b==0) pCmdUI->Enable(FALSE); else pCmdUI->Enable(TRUE);
i jak zwykle bywa drobny dodatek do kodu i życie staje się łatwiejsze
Ostatnio edytowany przez januszs (2011-04-10 00:24:33)
Offline
ja w 4 zadaniu sie nie bawilem w to.
ale gdybym mial robic to albo tak jak ty albo przy tworzeniu funkcji z case'ami zrobilbym tak:
void Clab04App::Oblicz(int d) { switch (d) { case '+':m_c=m_a+m_b; break; case '-':m_c=m_a-m_b; break; case '*':m_c=m_a*m_b; break; case '/':m_c=m_b ? m_a/m_b : 0; break; } }
czyli gdy bedzie robil dzielenie przez zero to zamiast pokazywac jakies krzaki pokaze wynik rowny 0.
Offline