2010-10-27 3 views
3

Мне было интересно, есть ли способ добавить (программно, конечно) значок/кнопку/независимо от обычного текста в окно (Microsoft Windows window ...) или рядом с кнопками minimize/maximize/close. Я мог бы сделать это сам и создать иллюзию, что это часть окна, но мне интересно, есть ли в user32 api такой метод.Как добавить пользовательскую кнопку в окно «Свернуть/увеличить/закрыть (x)

До сих пор я нашел способ отключить кнопки минимизации/максимизации/закрытия, но не способ добавить к ним пользовательский. Мне это кажется странным.

Вот что я пытаюсь достичь: alt text

Я задавался вопросом, как это делается здесь, так рисования кнопки для каждого окна с помощью GDI/GDI +, а затем обнаружения, если он перекрыт другое окно, а затем отображение только части, не перекрывающей друг друга, кажется мне маловероятным решением. Вероятно, кнопка была зарегистрирована в классе окна, так что каждое окно имеет эту кнопку. Любые указатели, что делать?

Кроме того, как я могу создать кнопку вообще, если я НЕ ВКЛЮЧЕН Юникод. Тогда в следующем фрагменте кода:

HWND hwndCommandLink = CreateWindow(
L"BUTTON", // Class; Unicode assumed. 
L"",  // Text will be defined later. 
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_COMMANDLINK, // Styles. 
10,   // x position. 
10,   // y position. 
100,  // Button width. 
100,  // Button height. 
hDlg,  // Parent window. 
NULL,  // No menu. 
(HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE), 
NULL);  // Pointer not needed. 
SendMessage(clHwnd, WM_SETTEXT, 0, (LPARAM)L"Command link"); 

SendMessage(clHwnd, BCM_SETNOTE, 0, (LPARAM)L"with note"); 

Я должен заменить все хорошие константы Windows, с их длинной эквивалент .... Тем не менее, когда я искать их, все я получаю это: http://msdn.microsoft.com/en-us/library/bb775951(v=VS.85).aspx

Любые указатели?

ответ

0

Это было обработано несколько раз в SO. До появления визуальных тем это было очень просто - вы просто нарисовали строку заголовка, когда сказали (WM_NCPAINT), и ответили на события в строке заголовка (WM_NCHITTEST, WM_NCLBUTTONDOWN и т. Д.). С Aero это намного сложнее. Но это возможно, и есть статьи об этом.

+0

Любые указатели означают на самом деле ссылку или кусок кода, к которому я могу добраться. Конечно, это было обработано в SO. Я пробовал много кода, но он все равно не будет делать то, что я хочу в Vista и XP. Кроме того, поскольку я использую Java Native Access, меня беспокоят и другие проблемы, такие как поиск способа переопределить некоторые вещи. Итак, опять же, какие-то указатели? –

+0

Я по-прежнему ищу ответ, кстати. Подводя итог: мне нужен способ добавить тему-независимую кнопку в строку заголовка выбранного окна ОС Windows. До сих пор мне удалось следовать учебному курсу, который добавляет кнопку (небольшое окно с классом «BUTTON» на самом деле) в заголовок, но изменение темы для Aero сделало вещи выглядят довольно уродливо. Кстати, я использую JNA. –

 Смежные вопросы

  • Нет связанных вопросов^_^