Skompilowało się raz a później już nie.

1

Wie ktoś co tu nie działa?

#include <windows.h>
#include <conio.h>
#include <iostream>

int main()
{
    
    MoveWindow(0, 500, 500, 700, 350,0);
  	

	return 0;
}
0

Dlaczego się nie skompilowało? Nie dostajesz żadnego komunikatu? Miejsca błędu? Czegokolwiek?

0

Konsola się pojawia ale nie w pozycji 500,500.....

0

Zdaje się, że pierwszy argument to HWND, a 0 to prawdopodobnie nie jest konsola.
Zrób tak:

MoveWindow(GetConsoleWindow(), 500, 500, 700, 350, TRUE);
0

To działa tylko z tym sztucznym kodem (jakimś modułem) a ja chcę żeby było "czysto".

#define _WIN32_WINNT 0x0500
0

Po pierwsze, #define _WIN32_WINNT przed <windows.h> należy traktować jako wymagane - inaczej wersja nagłówka której używamy może „chwycić” definicje dla nowszej wersji windowsa niż mamy i program z dziwnego powodu nie działa.

Makro to ma oznaczać, jakiej wersji Windowsa ma program minimalnie wymagać:

0x500 | 2000
0x501 | XP
0x600 | Vista
0x601 | 7
0x602 | 8
0x603 | 8.1
0xA00 | 10

Brak definicji pod Visualem oznacza „maksymalna wersja Windowsa przewidziana przez używaną wersję Windows SDK” (co może oznaczać wersję nowszą systemu niż zainstalowana), a pod jakimś GCC może na przykład oznaczać „wersja przedpotopowa Windowsa, w której wielu funkcji nie ma”.

Więc nie narzekaj, tylko daj to makro. Funkcja GetConsoleWindow pojawiła się w Win2000, więc nic dziwnego że wymagana jest wartość 0x500 - lub wyższa.

Zresztą nawet w dokumentacji masz jak wół:

To compile an application that uses this function, define _WIN32_WINNT as 0x0500 or later. For more information, see Using the Windows Headers.

Po drugie, użycie 0, czyli NULL, jako uchwytu okna do MoveWindow to gwarancja porażki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1