Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Polish
  4. [QT][C++] Flagi Windows7 okno zawsze na wierzchu ŁĄCZNIE z paskiem zadań Win7 (Nietypowy błąd)
QtWS25 Last Chance

[QT][C++] Flagi Windows7 okno zawsze na wierzchu ŁĄCZNIE z paskiem zadań Win7 (Nietypowy błąd)

Scheduled Pinned Locked Moved Polish
8 Posts 2 Posters 4.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    cvan997
    wrote on last edited by
    #1

    Znam kilka flag, które sprawiają że okno jest zawsze na wierzchu(np. Qt::ToolTip, Qt::WindowStaysOnTopHint, Qt::Popup), ale przy każdym sposobie jest ten sam problem.

    Klikając w menu start, obszar tray, puste pole między programami a trayem - okno i tak się ukrywa.

    Wszystko jest w porządku gdy przełączam się między różnymi aplikacjami i klikam wszędzie prócz wymienionych wyżej miejsc.

    Tak samo działają inne aplikacje które kiedyś używałem, więc być może jest to taka nieproszona funkcja Windowsa.

    Kodu nie ma sensu podawać, bo przy tym niema gdzie zrobić błędu, a zresztą flagi działają jak należy nie licząc tego "niewielkiego" problemu.

    1 Reply Last reply
    0
    • C Offline
      C Offline
      cvan997
      wrote on last edited by
      #2

      Na pewnym forum dostałem odpowiedź, że w WinApi ten efekt można osiągnąć za pomocą:
      SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);

      Teraz pytanie, jak to przenieść do QT?

      1 Reply Last reply
      0
      • A Offline
        A Offline
        ariwez
        wrote on last edited by
        #3

        Używasz Qt5? z Qt4 widzę podobne problemy jak Ty masz, a z piątką u mnie działa (wersje dla msvc 2010)

        1 Reply Last reply
        0
        • C Offline
          C Offline
          cvan997
          wrote on last edited by
          #4

          Qt Creator 2.7.0
          Based on Qt 5.0.2 (32 bit)

          Built on Apr 9 2013 at 09:32:03

          Z poprawki b6257ef735
          [quote author="ariwez" date="1372321498"]Używasz Qt5? z Qt4 widzę podobne problemy jak Ty masz, a z piątką u mnie działa (wersje dla msvc 2010)[/quote]

          Użycie: SetWindowPos(this->winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
          Zwraca błąd: invalid conversion from 'WId {aka unsigned int}' to 'HWND' [-fpermissive]

          1 Reply Last reply
          0
          • A Offline
            A Offline
            ariwez
            wrote on last edited by
            #5

            HWND hWnd = reinterpret_cast<HWND>(this->winId());

            1 Reply Last reply
            0
            • C Offline
              C Offline
              cvan997
              wrote on last edited by
              #6

              Takie coś działa:
              HWND hWnd = reinterpret_cast<HWND>(this->winId());
              SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
              Ale okazuje się, że dokładnie tak samo jak flagi z tematu. :(

              Wyjaśnienie w czym dokładnie jest problem:
              http://youtu.be/k5TCtr1hPKY

              1 Reply Last reply
              0
              • A Offline
                A Offline
                ariwez
                wrote on last edited by
                #7

                Ach, jeden film wart tysiąca słów :D

                możesz poeksperymentować z flagami wg dokumentacji:
                http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx

                I daj znać proszę jak się uda, bo to ciekawy przypadek ;)

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  cvan997
                  wrote on last edited by
                  #8

                  Rozwiązanie jest, cykliczne wykonywanie takiego czegoś:
                  @ if(this->isActiveWindow() == false} {
                  this->raise();
                  }@

                  Tylko przy zminimalizowanym oknie nie zawsze działa, ale mi jest to niepotrzebne.

                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved