Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Kouřil
Tvůrce
Avatar
Petr Kouřil:28.11.2017 11:48

Je prosím možné u programu v Petrovi nějak nastavit pozici okna na obrazovce? Velikost okna lze změnit vytvořením nové plochy a nastavením jejích rozměrů, ale polohu okna/plochy na obrazovce se mi změnit nepodařilo. Chtěl bych spouštět vytvořený program v režimu roztažené plochy na více monitorech a zobrazovat okno na krajním pravém monitoru. Standardně se okno centruje v obou osách na střed obrazovky.

Odpovědět
28.11.2017 11:48
Cokoliv děláš má smysl i když to tak na první pohled nevypadá.
Avatar
Petr Balzer
Člen
Avatar
Petr Balzer:28.11.2017 17:59

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.

Nahoru Odpovědět
28.11.2017 17:59
Ono to ještě funguje?!?
Avatar
Petr Balzer
Člen
Avatar
Odpovídá na Petr Kouřil
Petr Balzer:28.11.2017 20:05

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.

multimonitor

Editováno 28.11.2017 20:06
Nahoru Odpovědět
28.11.2017 20:05
Ono to ještě funguje?!?
Avatar
Petr Kouřil
Tvůrce
Avatar
Petr Kouřil:29.11.2017 15:18

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.

Nahoru Odpovědět
29.11.2017 15:18
Cokoliv děláš má smysl i když to tak na první pohled nevypadá.
Avatar
Petr Kouřil
Tvůrce
Avatar
Petr Kouřil:29.11.2017 17:32

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ě.

Nahoru Odpovědět
29.11.2017 17:32
Cokoliv děláš má smysl i když to tak na první pohled nevypadá.
Avatar
Petr Balzer
Člen
Avatar
Odpovídá na Petr Kouřil
Petr Balzer:29.11.2017 18:50

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.

Nahoru Odpovědět
29.11.2017 18:50
Ono to ještě funguje?!?
Avatar
Petr Kouřil
Tvůrce
Avatar
Odpovídá na Petr Balzer
Petr Kouřil:29.11.2017 22:48

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 GetSystemMetric­s(SM_CXVIRTUAL­SCREEN). Č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.

Nahoru Odpovědět
29.11.2017 22:48
Cokoliv děláš má smysl i když to tak na první pohled nevypadá.
Avatar
Petr Balzer
Člen
Avatar
Odpovídá na Petr Kouřil
Petr Balzer:30.11.2017 18:37

ani mé programy v Petru nepadali a když už jo, tak na c0000005 = NullPointerEx­ception.
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).

Nahoru Odpovědět
30.11.2017 18:37
Ono to ještě funguje?!?
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.