Проблема не в TRUE или FALSE, а в том что после invoke SendDlgItemMessage, hWndOp, IDC_cbDraw, BM_GETCHECK, 0, 0 всегда eax=1
Я дико извиняюсь, тупая ошибка . Код (Text): mov eax, wParam .if lParam!=0 .if ax==[b]IDC_cbCoord ; здесь cbCoord[/b] invoke SendDlgItemMessage, hWndOp, [b]IDC_cbDraw[/b], BM_GETCHECK, 0, 0 ; а здесь cbDraw .if eax == BST_CHECKED mov (Points ptr [esi]).DrawCoord, TRUE .else mov (Points ptr [esi]).DrawCoord, FALSE .endif .endif .endif Хе, хе а никто не заметил. Вот рабочий код Код (Text): .if ax==IDC_cbCoord invoke SendDlgItemMessage, hWndOp, IDC_cbCoord, BM_GETCHECK, 0, 0 mov (Points ptr [esi]).DrawCoord, al .endif Если не ипользовать BST_INDETERMINATE, прокатывает без проблем.
q_q У меня так определено в windef.h: Код (Text): #ifndef FALSE #define FALSE 0 #endif #ifndef TRUE #define TRUE 1 #endif Поэтому ничто не мешает определить иначе: Код (Text): #define TRUE -1 #include <windows.h> Или вообще psdk не использовать, в смысле заголовки из psdk. Или после #include <windows.h> заюзать #undef и переопределить как хочешь. Зачем это менять? - Чтобы показать, что можно Иногда бывает нужно так извращаться для совместимости. Если ты считаешь это обсуждение неуместным, никто тебя не заставляет в нём участвовать. murtix Нужно было догадаться, что IDC_cbDraw != IDC_cbCoord
Quantum Иногда бывает нужно Дерзай. ты считаешь это обсуждение неуместным В рамках этой темы да. никто тебя не заставляет в нём участвовать Вынужден, т.к. ты обратился в мой адрес. Заведи свою тред на эту тему, тогда посмотрим. murtix Хе, хе а никто не заметил. Я уже писал, что показанного тобой кода не достаточно, чтобы делать выводы о логике работы программы. А то что ID'ы разные, так может ты реализовывал логику зависимости состояния одного checkbox'а от состояния другого.