#c #wine
#c #Вино
Вопрос:
Если включена опция «Разрешить администратору Windows украшать окно». Какое имя функции в источнике wine, который знает, что пользователь нажимает эту кнопку X и отправляет WM_CLOSE в приложение? Спасибо
Комментарии:
1. Для какого класса окна? Все они имеют свой собственный WindowProc, который, в свою очередь, вызывает функции, внутренние для библиотеки DLL, в которой находится код. Чего вы на самом деле пытаетесь достичь? Это звучит как проблема X / Y, где у вас есть проблема, X. Думая, что Y является ответом, вы спрашиваете, как этого добиться, но, если бы люди знали, что проблема заключается в X, ответы, которые они дали бы, были бы совсем другими.
2. Я просто думаю, что где-то в источнике wine есть функция, назовем ее xButton() . И когда пользователь нажимает на «X» на верхней панели, чтобы закрыть окно, вызывается эта функция xButton() . Но я не знаю настоящего названия этого окна
3. На верхней панели расположены кнопки минимизации, максимизации и закрытия (X) . Мне нужно знать, какая функция wine вызывается, когда пользователь нажимает на X. Winecfg позволяет оконному менеджеру управлять окнами, поэтому верхняя панель украшена linux.Linux добавляет эту верхнюю панель, и я просто надеюсь, что linux вызовет функцию wine, когда пользователь нажмет на X
4.source.winehq.org/source/dlls/user32/defwnd.c#269 source.winehq.org/ident?_i=NC_HandleNCLButtonDown source.winehq.org/source/dlls/user32/defwnd.c#0264 source.winehq.org/source/dlls/user32/nonclient.c#1308
Ответ №1:
Оконный менеджер отправляет ClientMessage с типом WM_PROTOCOLS и значением протокола WM_DELETE_WINDOW. Это обрабатывается в dll/winex11.drv/event.c: X11DRV_ClientMessage() -> handle_wm_protocols().