Problem z Dev c++ i kompilacją programu

0

Witam
Chcę zmienić program który zrobił kiedyś mój poprzednik, ale nie mogę skompilować. Kompilator krzyczy o jakieś pliki konfiguracyjne i nie wiem jak to ustawić.
Nigdy nie używałem tego Dev c++ i nie wiem jak to zrobić.
W pliku przesyłam ten program.

5

To wygląda jak aplikacja w czystym C/WinAPI, pozbądź się tego antycznego kompilatora i spróbuj to skompilować za pomocą MSVC/MinGW/Clanga.

1

Gówniana robota. To nie na Sleep powinno wszystko iść tylko na wątkach. Sleep(50), Sleep(20), Sleep(10). Ten Sleep powinien być w jednym kluczowym miejscu a nie jest. Jest wszędzie indziej. Bez sabklasowania wszystko? Ani jednego? Te uchwyty HWND powinny być częścią większych struktur obiektowych.

te else jest mocny

}else
			switch (LOWORD(wParam)) {
				case ID_UP: {
					char szText[50];
					GetWindowText(g_hCartridgeNumWnd, szText, 50);
					int i = atoi(szText);
					i++;
					sprintf(szText, "%i", i);
					SetWindowText(g_hCartridgeNumWnd, szText);

					EnableButtons();

					SetForegroundWindow(g_hImageWnd);
					ShowWindow(g_hImageWnd, SW_MAXIMIZE);

				}

To też mógł normalnie sformatować

BOOL CALLBACK FindChildWnd(HWND hwnd, LPARAM lParam) {
	int iID = GetDlgCtrlID(hwnd);

	if (lParam == iID) {
		g_hChildWnd = hwnd;
		return false;
	}

	return true;
}


HWND GetChildWNDByID(HWND hParent, int iID) {
	EnumChildWindows(hParent, FindChildWnd, iID);

	return g_hChildWnd;
}

na:

BOOL CALLBACK FindChildWnd(HWND hwnd, LPARAM lParam) {
                                                      int iID = GetDlgCtrlID(hwnd);

                                                      if (lParam == iID) {
                                                                          g_hChildWnd = hwnd;
                                                                          return false;}
                                                                         	
                                                      return true;}

                                                     
HWND GetChildWNDByID(HWND hParent, int iID) {
                                              EnumChildWindows(hParent, FindChildWnd, iID);
                                              return g_hChildWnd;}

Napisz to na porządnie od nowa najlepiej.

1

Tak się to robi

}else{
      switch (LOWORD(wParam)) {
                               case ID_UP: {
					                        char szText[50];
                                            GetWindowText(g_hCartridgeNumWnd, szText, 50);
					                        int i = atoi(szText);
                                            i++;
                                            sprintf(szText, "%i", i);
					                        SetWindowText(g_hCartridgeNumWnd, szText);

					                        EnableButtons();

					                        SetForegroundWindow(g_hImageWnd);
					                        ShowWindow(g_hImageWnd, SW_MAXIMIZE);}}}
0

@Daniel777: ogarniasz cmake ?

# plik CMakeLists.txt

cmake_minimum_required(VERSION 3.15.0)
project(RTG_Pomocnik VERSION 0.1.0 LANGUAGES C CXX)

add_executable(RTG_Pomocnik main.cpp)
target_link_libraries(RTG_Pomocnik PRIVATE Comctl32.lib)
1

W Dev-C++ 5.10 wszystko się ładnie kompiluje. Może w nowym coś zmienili z plikiem projektu. Najlepiej utwórz nowy projekt i dodaj sobie pliki źródłowe.

0

Czy to nie jest przypadkiem ten dev-c++ od bloodshed https://bloodshed.net/ ? Jak byłem na studiach to był powszechnie uznawany za przestarzały i zabugowany. To było piętnaście lat temu.

0

@several: ja to nawet nie wiem jak komentować uzycie "dev-c++" w obecnych czasach, wizualnie to wyglada jak stary program napisany gdzies za czasow delphi 5.0.
jak ktoś nie zna cmake to nie powinien uzywac c++ bo tylko go glowa rozboli i sie rozcchoruje

1
Marius.Maximus napisał(a):

@several: ja to nawet nie wiem jak komentować uzycie "dev-c++" w obecnych czasach, wizualnie to wyglada jak stary program napisany gdzies za czasow delphi 5.0.

To jest program napisany w Delphi, to po pierwsze, bez znaczenia jak wygląda, to po drugie, a po trzecie to chyba nie widziałeś ostatniej wersji: https://www.embarcadero.com/free-tools/dev-cpp

0
Marius.Maximus napisał(a):

jak ktoś nie zna cmake to nie powinien uzywac c++ bo tylko go glowa rozboli i sie rozcchoruje

A jakieś konkretne argumenty za taką tezą? Bo jednak trochę mocna ta teza. Nie zawsze trzeba zaprzęgać CMake. Często do małych programów starczy natywny plik projektu IDE którego używam. Przy dobrym IDE kompilacja nie będzie powodować takich objawów. Chyba, że ktoś jest masochistą i używa Vim'a który nie jest IDE ;)

1

@Mr.YaHooo: mi pasuje poziom abstrakcji cmake i czytelność tego rozwiazania, skupiam sie na przyjemności tworzenia.
Nawet jak program ma jeden plik cpp to wole dodac CMakeLists.txt i mieć w czytelny sposób opisane udokumentowane "co i jak"
Dla mnie przywiazanie do IDE to problem bo po paru latach zazwyczaj jest walka z otworzeniem projektu
Jezeli IDE obsługuje cmake to uważam że jest to dobre rozwiązanie (czasami używam QtCreatora jak chce wyklinać UI)

0
Marius.Maximus napisał(a):

Nawet jak program ma jeden plik cpp to wole dodac CMakeLists.txt i mieć w czytelny sposób opisane udokumentowane "co i jak"
@Mr.YaHooo: mi pasuje poziom abstrakcji cmake i czytelność tego rozwiazania, skupiam sie na przyjemności tworzenia.

Jeśli Ci to pasuje, to ja to rozumiem. Mnie z kolei odrzuca. Próbowałem korzystać z tego i jakoś średnio mi się podoba. Jednak pewnie to kwestia gustu oraz projektu. Jednak nie raz czytam sobie projektu na Githubie i jak widzę zagnieżdżone CMakeListst to nie podchodzi mi to.

Marius.Maximus napisał(a):

Dla mnie przywiazanie do IDE to problem bo po paru latach zazwyczaj jest walka z otworzeniem projektu
Jezeli IDE obsługuje cmake to uważam że jest to dobre rozwiązanie (czasami używam QtCreatora jak chce wyklinać UI)

Tylko jeśli tworzę cały projekt z użyciem Qt to moim zdaniem mała różnica. Zysk będzie co prawda jeśli chce się automatyzować całość, odpalać jakieś dodatkowe rzeczy jak tworzenie instalatora itp. Wtedy to rzeczywiście ma sens.

Nie to że uważam, że to jest bez sensu. Jednak na początku drogi programistycznej warto użyć natywnego pliku projektu, a przesiąść się na coś innego jak widzimy, że ten sposób nas po prostu ogranicza.

Każde narzędzie może być trudne na początku i mało zrozumiałe. Pewnie tutaj też tak jest i pewnych rzeczy nie dostrzegam. Jednak nie demonizowałbym drugiej metody. Zazwyczaj też da się tam wszystko wyklikać.

2

@Mr.YaHooo: im wiekszy projekt tym lepiej widać zalety cmake,
drzewiasta struktura bardzo sie przydaje jak chcesz ogarnąć modułowość swojego projektu i chcesz cos raz włączyć a raz nie

option(FUNKCJA_A "enable A" ON)

if(FUNKCJA_A)
  add_subdirectory(a)   # w stodku jest add_library(a ....)
endif()  


target_link_libraries(moj_target)
{
  $<$<BOOL:${FUNKCJA_A}>:a>
}

if(FUNKCJA_A)
  target_compile_definitions(moj_target PUBLIC FUNKCJA_A)
endif()  

i potem w kodzie c++

#ifdef FUNKCJA_A
#endif 
0
Marius.Maximus napisał(a):

@Mr.YaHooo: im wiekszy projekt tym lepiej widać zalety cmake,

Być może tak jest. Ja mam do czynienia ze średnimi projektami, więc zapewne nie mam okazji dostrzec jego zalet. A wydaje mi się, że jednak krzywa nauki CMake jest specyficzna i jak się z tym ruszy, to potem idzie gładko.

Marius.Maximus napisał(a):

i potem w kodzie c++

#ifdef FUNKCJA_A
#endif 

Akurat takich rzeczy to ja w kodzie staram się unikać jak tylko mogę. Jedyne ifdef jakie toleruję, to strażniki nagłówków. Jednak wygląda to dość sensownie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.