Diskuze: Nastavení pozice okna na více monitorech
Tvůrce
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Nastavíš jako aktivní prvek hlavní okno (kód 0).
V sekci ovládání -> dialogy -> společné funkce pro všechny
prvky.
Hned 1. a 2. příkaz použij.
Ok, takže jsem trochu experimentoval.
Přišel jsem s následujícím řešením.
Problém tkví v tom, že pokud máš pravý monitor nastaven jako hlavní, tak
musíš posunout okno o šířku monitoru (toho vlevo; odečítat od nuly!),
pokud máš tak nastaven levý monitor, tak teoreticky ti stačí nastavit
pozici x na nulu.
Dovolím si tvrdit, že stejný problém bude u monitorů ve vertikálním
nastavení...
V každém případě prozkoumej všechny 3. funkce.
Jen varuji - pokud budeš vytvářet okna prvkem Vytvořit okno (bez možnosti uzavření), tak vytvořené okno bude modální -> tedy zablokuje vstup do hlavního okna.
Děkuji moc za rychlou a účinnou pomoc. Už mi to funguje. Pořád objevuji v Petrovi nové věci, ale na tohle bych sám těžko přišel. Díky za bezva příklad.
Jenom jeden problém s tím mám. Ve Windows 8.1 mi to nevrací správně šířku virtuální roztažené plochy. Parametr "vnitřní šířka", u prvku s ID = -1, vrací šířku pouze jednoho obrazu. Takže jsem si horizontální polohu hlavního okna musel nastavit ručně, nikoliv výpočtem. Ale to zas tak nevadí. Testoval jsem to i na Windows XP ve VirtualBoxu a tam mi to vrací šířku virt. plochy správně.
Petr byl uvolněn v roce 1999 (na den dětí), není optimalizován na
Windows 7 a novější (ale asi má problémy již od Visty), má problémy s
kompozicí plochy.
Je to škoda, ale opravdu něco tak úžasného opravdu zanikne.
Jinak Petr má možnost pracovat s DLL knihovnami, doporučuji této výhody
využít.
A monitory zjišťovat za pomoci (vaší) externí DLL-ka, nebo rovnou pomoci
WinApi.
Jasně, on to vlastně "problém" ani není. Je to spíš vlastnost. Že to nevrací šířku celé virt. plochy. Kdysi jsem se s tím potýkal přímo ve WinAPI ve Visual C++. Tam je na to funkce GetSystemMetrics(SM_CXVIRTUALSCREEN). Čili vím jak na to a jednu vlastní DLL knihovnu už v Petrovi úspěšně využívám. Ale v tomto případě asi zůstanu u načítání polohy okna z ini souboru. Bude to flexibilnější. Jelikož obsluhu ini souboru už mám ve svém projektu implementovanou.
Petr je podle mě naprosto úžasný projekt, který umožňuje tvořit téměř cokoliv jednoduchým způsobem, bez nutnosti psát příkazy. Ideální API pro testování různých AI algoritmů. A hlavně ty výsledné programy nepadají. Alespoň ty moje ne. A zdroják je uložený přímo v exe a dá se rychle a jednoduše upravovat. To je prostě bomba. A co v Petrovi chybí, dá se doplnit těmi DLL knihovnami. Rozsah tohoto projektu mě fascinuje. Pan Němeček je geniální programátor, kterému za Petra děkuji a smekám nad tímto dílem. Myslím si, že dokud budou fungovat virtuály, tak Petr hned tak nezanikne. Mám otestovanou funkci Petra i ve Windows 10. Je to prostě nadčasový projekt, díky tomu, že pan Němeček nezůstal u MFC, ale napsal to z gruntu v čistém WinAPI.
ani mé programy v Petru nepadali a když už jo, tak na c0000005 =
NullPointerException.
Dle tebe to je tedy abnormální vlastnost WinAPI, tak to pak se není čemu
divit (mizerné základy = mizerný dům).
Tím pádem je problém vyřešen (opět práce MS).
Zobrazeno 8 zpráv z 8.