В свое время я делал это на C, и я не уверен в том, что я знаю, как сделать это на Delphi, тем не менее: В Windows v3.1x, вам необходимо будет перекрыть сообщение WM_NCPAINT, использовать для определения размера кнопок и пр. функцию GetSystemMetrics, затем, после вызова унаследованного WM_NCPAINT, отрисовывать вашу кнопку. Вам также необходимо будет перекрыть WM_NCMOUSEDOWN и пр., для того, чтобы вы могли обрабатывать "сообщения щелчка". Таким образом можно рисовать и TButton и TSpeedButton, но это будет немного труднее. Для получения идентификатора системного меню необходимо вызвать GetSystemMenu(). После этого, для добавления собственных пунктов меню, используется AddMenuItem. Вероятно, для работы с элементами меню и пр., вам понадобится перекрывать WndProc... Все-же, сделать это с помощью Delphi намного проще. |