- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
case WM_DESTROY:
// Microsoft, you MORONS! Don't destroy stuff I create!
// Oh well, try to handle this as gracefully as possible so we
// don't send any commands to the now non-existent window:
tablet_close(hWnd);
if (window) window->destroy();
fl_prune_deferred_calls(hWnd);
break;
Тут даже не проверяеться, а вдруг сообщение пришло для другого hWnd, а не для того, что относиться к классу Window. Тоесть это типичное не верное смешение Си и Си++ логики программы.
Во-2, что здесь выходит за объект, или хотя бы нарушает логику?
Я вот, честно говоря, патылся в свое время запихнуть обработчик внутрь класса, но у меня не получилось. В итоге согласился, что эта реализация вполне сносна. Позже мне показали один из вариантов, как это можно сделать, однако это больше походило на секс с мозгом, причем он в этой фантазии оказался мужиком -- то есть ничего приятного. Это было очень криво, извращенно и уродливо.
Но мне до сих пор в принципе интересно, поделись если знаешь как можно.