LINUX.ORG.RU

а зачем это делать с помощью Qt?

jtootf ★★★★★ ()

QT4

Вам под виндусью? Тогда вот

#include <windows.h>

int main (int argc, char *argv[])
{
    HDC dc;
    int st;

    dc = GetWindowDC (NULL);
    st = SaveDC (dc);

    MoveToEx (dc, 0, 0, NULL);
    LineTo   (dc, 100, 100);

    RestoreDC (dc, st);
    ReleaseDC (NULL, dc);

    return 0;
}

Под иксами - скорее всего иксовыми функциями. Вот тут люди что-то говорят

yoghurt ★★★★★ ()
Ответ на: комментарий от Valeriy_Onuchin

а зачем это делать с помощью Qt?

Вам под виндусью?

Мне под линукс, но хочется кроссплатформенности и сделать это именно на qt.

QWidget *pDesktop = QApplication::desktop()

Я так именно так и пытаюсь , дальше использую QPainter, но видимо что-то не так сделал.

http://qt.osdn.org.ua/screensaver.en.html

Спасибо, посмотрю.

nfirer ()
Ответ на: комментарий от Valeriy_Onuchin

http://qt.osdn.org.ua/screensaver.en.html

Там не совсем то. Наколько я понял они создают новое окно и в нем рисуют. Проблема в том чтобы заставить QPainter рисовать на экране, полученным с помощью QApplication::desktop()->screen(-1). Правда не знаю можно ли это. Все примеры на эту тему создают QWidget сами, и переопределяют для него paintEvent. Если предложить QPainter рисовать не в paintEvent, то он только ругается.

nfirer ()

>рисовать поверх всех окон на экране
меня в таких случаях всегда спасают 3 вопроса самому себе:
1) Зачем?
2) Зачем?
3) Зачем?
Рекомендую))

Кроме шуток: зачем?

xydo ★★ ()
Ответ на: комментарий от nfirer

>Просто досадно, что не получается так сделать)

Ради интереса много всего можно придумать, что никогда в практике не пригодится. А рисование одним приложением поверх всех окон на мой взгляд даже вредно.

trex6 ★★★★★ ()
Ответ на: комментарий от xydo

>Кроме шуток: зачем?

свистелка аля огонь в компизе?

Zhbert ★★★★★ ()
Ответ на: комментарий от nfirer

>Идея была в том, чтобы рисовать своего рода подсказки куда наживать на экране поверх чужих приложений.

Чтобы подсказывать сразу пов сем программам куда нажимать? Что-то я не понял смысла.

Zhbert ★★★★★ ()
Ответ на: комментарий от Zhbert

>Мб пояснишь? А то я аж заинтересовался. Ну по-моему это не так важно. Если интересно, то есть флэш игра цель в которой удалять цепочки шариков одинакового цвета. Цель: выделять на экране эти цепочки.

nfirer ()
Ответ на: комментарий от Zhbert

>А рисование поверх всех приложений тут зачем?

А какая альтернатива? Игра не моя и в ней не предусмотрено такое выделение.

nfirer ()
Ответ на: комментарий от nfirer

>Игра не моя и в ней не предусмотрено такое выделение.

Ну как вариант найти исходники и подправить. Ну или да, рисовать поверх... Так тогда надо сначала делать как бы скрин, с которого снимать рисунок цепочки и перерисовывать ее поверх нее же, но как бы поверх всех окон?

Так а чем не подходит создать прозрачное окно размерами с флешку, поместить туда рисунок этой флешки, но с переделанными цепочками, которые можно будет выделять? Ну и обновлять это дело при изменении флешки...

Zhbert ★★★★★ ()
Ответ на: комментарий от Zhbert

Придется или смотреть на это дополнительное окно, что уменьшает полезность всей затеи, или возникает проблема как передать щелчок мыши флешке.

nfirer ()
Ответ на: комментарий от nfirer

>Придется или смотреть на это дополнительное окно

Так если убрать его окантовку, и поместить строго над флешкой - заметно, что поверх нее что-то еще болтается будет сложно.

возникает проблема как передать щелчок мыши флешке.

Приходит в голову только запомнить координаты курсора и, убрав окно, съэмулировать щелчок в этих координатах. Правда если флешка, как ты говоришь, не поддерживает таких выделений, как нужны, то создание псевдовыделения в окне не поможет, даже если ты «передашь» щелчок флешке.

Zhbert ★★★★★ ()
Ответ на: комментарий от Zhbert

Цель игры как раз щелкать в нужном месте. Выделение только для удобства. Про эмуляцию щелчка согласен. Так и сделаю.

nfirer ()
Ответ на: комментарий от nfirer

Qt похоже этого тоже не может. Как эмулировать клик мыши на Xlib?

nfirer ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.