"Patch" špatného fullscreenu hry – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

"Patch" špatného fullscreenu hry – C / C++ – Fórum – Programujte.com"Patch" špatného fullscreenu hry – C / C++ – Fórum – Programujte.com

 

Farrell0
Newbie
15. 10. 2016   #1
-
0
-

Zdravím,

rád si zahraju starou, ale dobrou hru Hidden & Dangerous II, ale ta od Windows 8 se špatně spouští ve fullscreen režimu. Sice to je fullscreen i se správným rozlišením, ale jde vidět okraj okna + handler. Vím, že se to dá řešit tak, že v taskmanageru na to kliknu pravým a dám maximalizovat. Tak jsem si říkal, že udělám utilitku, která mi ulehčí práci, protože je to při každém spouštění otravné.

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
{
	HWND hWnd = FindWindow(_T("LS3D"), NULL);
	
	if( IsWindow(hWnd) ) {
		PostMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
	}
	
	return 0;
}

Tohle nefunguje vůbec - žádný efekt. Když místo SC_MAXIMIZE dám SC_RESTORE, přepne se to do hry, ale opět jde vidět rám. Zkoušel jsem i různé kombinace, i s malou časovou prodlevou, zkoušel jsem i funkci ShowWindow ale nic. Pokud to umí task manager, tak to přece nějak musí jít, ne? Budu vděčný za nějakou radu, díky

Nahlásit jako SPAM
IP: 86.49.45.–
www.farpc.eu
Mutagen
~ Anonymní uživatel
549 příspěvků
15. 10. 2016   #2
-
0
-

#1 Farrell
Co zkusit to nejdříve minimalizovat a pak maximalizovat?

Nahlásit jako SPAM
IP: 89.190.90.–
Farrell0
Newbie
15. 10. 2016   #3
-
0
-

Minimalizuje se, ale pak už se nemaxializuje.

Nahlásit jako SPAM
IP: 86.49.45.–
www.farpc.eu
Radek Chalupa
~ Redaktor
+1
Super člen
16. 10. 2016   #4
-
0
-

#1 Farrell
Pokud je vidět okraj a (čemu říkáš handler?) tak to asi fullscreen není... Zkus pomocí SetWindowPos nastavit to okno do rozměrů celé obrazovky (GetSystemMetrics(SM_CXSCREEN), resp. SM_CYSCREEN) a pak ještě na něj zavolat SetForegroundWindow

Radek Chalupa
- individuální konzultace, školení programování (C/C++, WinAPI, COM, ActiveX, ATL, C#, NET Framework, MFC)
- vývoj software na zakázku
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
Farrell0
Newbie
16. 10. 2016   #5
-
0
-

Hra nepodporuje větší rozlišení než 1280x960, což je méně než moje nativní rozlišení, proto si nejsem jist, jestli tohle bude fungovat. Rozlišení si hra upraví a správně, v tom není problém.

Připojen obrázek.

Připojen obrázek.


Takhle vypadá obrazovka, když to zapnu. Pak, když v task manageru dám maximalizovat, okraj zmizí.

EDIT: Tak jsem to zkusil, ale taky žádný úspěchPřipojen obrázek.

Nahlásit jako SPAM
IP: 86.49.45.–
www.farpc.eu
BDS+3
Věrný člen
16. 10. 2016   #6
-
0
-

#1 Farrell
Zkus to takto: 

#include <windows.h>
#include <stdio.h>

//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
	HWND hWnd = FindWindow(0, "Titulek okna");

	if( IsWindow(hWnd) )
	{
		SetForegroundWindow(hWnd);
		SetWindowLong(hWnd, GWL_STYLE, 0);
		SetWindowPos(hWnd, HWND_TOPMOST,
			0,0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
			SWP_SHOWWINDOW);
	}
	else
        {
         printf("okno nebylo nalezeno!\n");
	 getchar();
        }
	return 0;
}

ale nevím jestli to bude pro tvé okno fungovat (já jsem to testoval na aplikaci Notepad2 a fungovalo to). Musíš to zkusit.

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Farrell0
Newbie
17. 10. 2016   #7
-
0
-

Na tohle hra bohužel nereaguje... Zkusím asi ještě to PostMessage

Message: WM_GETMINMAXINFO(0x24) (0x0, 0x4ff794)
Message: WM_QUERYOPEN(0x13) (0x0, 0x0)
Message: WM_NCACTIVATE(0x86) (0x1, 0x440aac)
Message: WM_WINDOWPOSCHANGING(0x46) (0x0, 0x4ff79c)
Message: WM_WINDOWPOSCHANGED(0x47) (0x0, 0x4ff79c)
Message: WM_WINDOWPOSCHANGING(0x46) (0x0, 0x4ff79c)
Message: WM_GETMINMAXINFO(0x24) (0x0, 0x4ff374)
Message: WM_NCCALCSIZE(0x83) (0x1, 0x4ff774)
Message: WM_NCPAINT(0x85) (0x1, 0x0)
Message: WM_ERASEBKGND(0x14) (0x8012be9, 0x0)
Message: WM_WINDOWPOSCHANGED(0x47) (0x0, 0x4ff79c)
Message: WM_MOVE(0x3) (0x0, 0x170000)
Message: WM_SIZE(0x5) (0x2, 0x3db0690)
Message: UNKNOWN(0x281) (0x1, 0xc000000f)
Message: WM_SETFOCUS(0x7) (0x0, 0x0)
Message: WM_ACTIVATE(0x6) (0x1, 0x0)

To jsou zaznamenané zprávy, když v taskmanageru dám maximalizovat... tak snad mi to nějak pomůže.

Nahlásit jako SPAM
IP: 86.49.45.–
www.farpc.eu
BDS+3
Věrný člen
17. 10. 2016   #8
-
0
-

Ze zvědavosti jsem si tu hru nainstaloval, ale stejně to neotestuji, protože mě se spouští normálně ve fullsc. (Mám Windows 10, 64 bit. NVidia GeForce  GTX 560 1920x1080)

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Farrell0
Newbie
17. 10. 2016   #9
-
0
-

Tak to jste mi dal brouka do hlavy... Mám stejný systém, jen místo GTX 560 mám GTX 650 Ti, ale tady asi problém nebude. Možná to způsobují ovladače, protože jinak si to nejsem schopen vysvětlit... Nicméně ještě to zkusím přes to PostMessage, a pokud to nepůjde, tak holt asi budu muset dělat ručně

Nahlásit jako SPAM
IP: 86.49.45.–
www.farpc.eu
Radek Chalupa
~ Redaktor
+1
Super člen
18. 10. 2016   #10
-
0
-

#9 Farrell
Mimochodem, není to náhodou stará DOSová hra a to okno kolem je konzole? Taky pokud vím tak hry dělané v allegru jsou vlastně konzolovky, a pokud je špatně nastavený subsytém aplikace (tj. na konzoli) může to být také. Zkus se přes Spy++ podívat, které okno jsi tím FindWindow našel,zda to s tím rámečkem nebo přímo okno hry (pokud tedy to není celé jen jedno okno).

Radek Chalupa
- individuální konzultace, školení programování (C/C++, WinAPI, COM, ActiveX, ATL, C#, NET Framework, MFC)
- vývoj software na zakázku
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
BDS+3
Věrný člen
18. 10. 2016   #11
-
0
-
Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
BDS+3
Věrný člen
18. 10. 2016   #12
-
0
-

#9 Farrell
pokud jsi spustil můj kód, a nenapsalo ti to že "okno nebylo nalezeno!" tak nefunguje. V opačném případě by (jak píše Radek Chalupa) by mohl být problém v tom, že špatně identifikuješ to okno aplikace.

Stejně si ale myslím, že by jsi měl projít nastavení, zkusit aktualizaci ovladačů grafiky... Když to funguje mě, tak tobě by mělo taky. 

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
19. 10. 2016   #13
-
0
-

Po zkušenostech bych i zkusil starší ovladač. Několikrát se mi stalo, že nejnovější ovladač měl chybu. Naposledy jsem to zažil se síťovou kartou.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
BDS+3
Věrný člen
19. 10. 2016   #14
-
0
-

#13 hlucheucho
taky pravda, často nejspolehlivější bývají, ty z originálního CD, přibaleného k HW.

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
Farrell0
Newbie
10. 11. 2016   #15
-
0
-

No ale rozhodně nejsem jediný, co jsem tak projížděl diskuze. Okno je identifikováno správně. Napadlo mě ještě, jestli nejde podobným způsobem odstranit dekoraci (okraje) okna...?

Nahlásit jako SPAM
IP: 86.49.45.–
www.farpc.eu
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý