Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Okno nebo nabídka, které jsou na více než jednom monitoru, způsobí přerušení vizuálu pro diváka. Aby se tento problém minimalizoval, systém zobrazí nabídky a nová a maximalizovaná okna na jednom monitoru. Následující tabulka ukazuje, jak je monitor zvolen.
| Objekt | Umístění |
|---|---|
| okno |
CreateWindow(Ex) zobrazí okno na monitoru, který obsahuje největší část okna. Maximalizuje na monitoru, který obsahuje největší část okna před minimalizací. Kombinace kláves ALT-TAB zobrazí okno na monitoru s aktuálně aktivním oknem. |
| vlastní okno | na stejném monitoru jako jeho majitel. |
| podnabídka | Zobrazí se na monitoru, který obsahuje největší část odpovídající položky nabídky. |
| kontextová nabídka | Zobrazí se na monitoru, kde došlo k kliknutí pravým tlačítkem myši. |
| rozevírací seznam | Zobrazí se na monitoru, který obsahuje obdélník pole se seznamem. |
| dialogové okno | Zobrazí se na monitoru okna, které ho vlastní. Pokud je definován pomocí DS_CENTERMOUSE stylu, zobrazí se na monitoru myší. Pokud nemá vlastníka a aktivní okno a dialogové okno jsou ve stejné aplikaci, zobrazí se dialogové okno na monitoru aktuálně aktivního okna. Pokud dialogové okno nemá žádného vlastníka a aktivní okno není ve stejné aplikaci jako dialogové okno, zobrazí se dialogové okno na primárním monitoru. |
| okno se zprávou | Zobrazí se na monitoru okna, které ho vlastní. |
Pokud okno překrývá dva monitory a jeden z monitorů je přesunut, systém umístí okno na ten monitor, který obsahuje největší část původního okna.
Aplikace také obvykle potřebuje umístit objekty. Například okno může být potřeba vytvořit na stejném monitoru jako jiné okno.
Jak umístit objekt na systém s více monitory
- Určete vhodný monitor.
- Získejte souřadnice k monitoru.
- Umístěte objekt pomocí souřadnic.
Obvykle umístíte objekt buď na primárním monitoru, nebo na monitoru, který už objekt obsahuje. Chcete-li určit monitor pro daný bod, obdélník nebo okno, použijte MonitorFromPoint, MonitorFromRecta MonitorFromWindow.
Chcete-li získat souřadnice pro monitor, použijte GetMonitorInfo, který poskytuje pracovní oblast i celý obdélník monitoru. Mějte na paměti, že SM_CXSCREEN a SM_CYSCREEN vždy odkazují na primární monitor, ale ne nutně na monitor, co zobrazuje vaši aplikaci. Vyhněte se také SM_xxVIRTUALSCREEN, protože tímto se vaše okno zacentruje na virtuální obrazovce, nikoli monitor.
Pokud chcete dialogová okna v pracovní oblasti okna zacentrovat, použijte styl DS_CENTER. Chcete-li zacentrovat dialogové okno do okna aplikace, použijte GetWindowRect. Systém Windows automaticky omezuje nabídky a dialogová okna na monitor. U vlastních nabídek, vlastních rozevíracích polí, vlastních palet nástrojů a umístění uložené aplikace ale může dojít k potížím.
Příklad, jak správně umístit objekty, viz Umístění objektů na nastavení s více displeji.
Použití SM_CXSCREEN a SM_CYSCREEN k určení umístění panelu nástrojů plochy aplikace (označovaného také jako appbar) omezuje panel aplikací na primární monitor. Pokud chcete, aby byl appbar na libovolném okraji jakéhokoli monitoru, použijte k výpočtu okrajů monitorů příslušné systémové metriky. Pomocí makra GET_X_LPARAM a makra GET_Y_LPARAM extrahujte souřadnice, jinak může být znaménko souřadnic chybné. Tato makra jsou součástí windowsx.h.
Velikost okna na celé obrazovce se musí změnit, když se pohybuje mezi monitory s různými rozlišeními. K tomu musí aplikace zkontrolovat, jaké okno je zapnuto, pomocí MonitorFromWindow nebo MonitorFromPoint a pak pomocí GetMonitorInfo získat velikost monitoru. Jako alternativu můžete použít HMONITOR z funkce DirectX DirectDrawEnumerateEx. Potom pomocí SetWindowPos umístěte a nastavte velikost okna pro pokrytí monitoru.
Maximalizované okno nepokrývá hlavní panel, který má vlastnost Always on top. Okno na celé obrazovce ale pokrývá hlavní panel – například v prezentacích a hrách v Microsoft PowerPoint.
Pokud chcete uložit a později obnovit umístění okna při ukončování aplikace, použijte funkce GetWindowPlacement a SetWindowPlacement. Než ji ale použijete, zkontrolujte, jestli je pozice stále platná, protože monitor mohl být přesunut nebo odstraněn ze systému. Aplikace zobrazí okno na primárním monitoru, pokud HMONITOR okna je neplatné.
Systém se pokusí spustit aplikaci na monitoru, kde je umístěn zástupce aplikace. Jedním ze způsobů, jak umístit aplikaci, je tedy mít její zástupce na požadovaném monitoru.
Pokud používáte ShellExecute nebo ShellExecuteEx , zadejte hWnd, aby systém otevřel všechna nová okna na stejném monitoru jako volající aplikace.
Všimněte si, že hodnoty pro MINMAXINFO struktury jsou mírně změněny pro systém s více monitory.