[ havramm @ 16.04.2005. 12:03 ] @
U jednom delu koda potrebno mi je da privremeno disable-ujem dugme. Prvo sto sam bio uradio bilo je da sam probao sa jednostavnim slanjem poruke WM_ENABLE sa wParam postavljenim na FALSE:

Code:
::SendDlgItemMessage(IDC_BUTTON1, WM_ENABLE, (WPARAM)FALSE, 0);

Medjutim, veoma sam se zacudio da to nije htelo da radi pa sam zamenio sa

Code:
HWND hWndBtn = NULL;

hWndBtn = GetDlgItem(hWnd, IDC_BUTTON1); // hWnd je dialog
::EnableWindow(hWndBtn, FALSE);

i to je naravno radilo.
E sada, to me je prilicno zaintrigiralo i, ne lezi vraze, pogledah u spy-u koje se poruke salju prilikom poziva ::EnableWindow i redosled je bio sledeci:

Code:
WM_CANCELMODE
WM_ENABLE, wParam=FALSE

OK, vratio sam se prvoj verziji i dodao jos jedno slanje poruke:

Code:
::SendDlgItemMessage(IDC_BUTTON1, WM_CANCELMODE, 0, 0);
::SendDlgItemMessage(IDC_BUTTON1, WM_ENABLE, (WPARAM)FALSE, 0);

Medjutim opet se nista nije dogodilo.

Uporedjivanjem dve razlicite verzije kompajliranog koda utvrdio sam da i ::EnableWindow i eksplicitno slanje pojedinacnih poruka rezultira u primanju istih poruka sa istim parametrima i u istom redosledu, medjutim ponasanje nije identicno.

Da li mozda neko zna o cemu se radi posto sam bas radoznao?