Προς το περιεχόμενο

Ζητώ βοήθεια για ένα νέο πρόγραμμα


Plutomania

Προτεινόμενες αναρτήσεις

Δημοσ.

Σκοπεύω να φτιάξω ένα νέο μικρό πρόγραμμα σε γλωσσα c++ με το Dev C++ που βασικά θα γράφω έναν αριθμό και αυτό σύμφωνα με έναν τύπο-συνάρτηση που θα του έχω προσδιορίσει θα μου βγάζει τον αντίστηχο αριθμό που θέλω να μου δείξει.Το πρόγραμμα θα είναι αρκετά μικρό και χρήσιμο.Σαφώς, ακόμα μαθαίνω και δεν ξέρω πως να το φτιάξω αλλα πιστεύω πως σε λίγο καιρό θα μπορώ.Αν κάποιος μπορεί να με βοηθήσει και προσφερθεί θα του είμαι ευγνώμων.Θα του δώσω οτι πληροφορία χρειάζεται αν θελήσει. Αυτό που θα ήθελα όμως ακόμη περισσότερο είναι να βάλω και λίγα γραφικά.Εννοώ πως δε θέλω το προγραμμα να δουλεύει στο command line.Θέλω αν γίνεται να φτιάξω ένα δικό μου graphical user interface(gui),ένα resource,ένα κουμπί που να λέει "υπολόγισε το","οκ" 'η "exit"....Αφού φτιάξω την εφαρμογή,αυτό πως το κάνω;;;Χρειάζομαι πολυ τη βοήθειά σας.ΕΥΧΑΡΙΣΤΏ!!!:shifty::shifty:

 

**Το πρόγραμμα μου θα μετατρέπει βαθμούς κελσιου C σε F και το αντιστροφο.

Δημοσ.

Έτσι για να δεις τη γλύκα του προγραμματισμού GUI σε C =P

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

HWND hMWnd;

LRESULT CALLBACK MyWndProc(HWND hTWnd,int msg,WPARAM wParam,LPARAM lParam) {
BOOL success;
signed long int num;
switch (msg) {
	case WM_COMMAND:
		switch (LOWORD(wParam)) {
			case 1000:
				num=GetDlgItemInt(hTWnd,3000,&success,1);
				if (!success) {
					SetWindowText(GetDlgItem(hTWnd,3000),"Not a Number");
					break;
				}
				SetDlgItemInt(hTWnd,3000,num*9/5+32,1);
				break;
			case 2000:
				num=GetDlgItemInt(hTWnd,3000,&success,1);
				if (!success) {
					SetWindowText(GetDlgItem(hTWnd,3000),"Not a Number");
					break;
				}
				SetDlgItemInt(hTWnd,3000,(num-32)*5/9,1);
				break;
		}
		break;
	case WM_CLOSE:
	case WM_DESTROY:
		DestroyWindow(hTWnd);
		ExitProcess(0);
}
return DefWindowProc(hTWnd,msg,wParam,lParam);
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrev,char *szCmd,int nShow) {
WNDCLASSEX wc;
MSG msg;
HFONT font;
memset(&wc,0,sizeof(wc));
wc.cbSize=sizeof(wc);
wc.hbrBackground=(HBRUSH)COLOR_WINDOW;
wc.hCursor=LoadCursor(0,IDC_ARROW);
wc.hInstance=hInstance;
wc.lpfnWndProc=(WNDPROC)MyWndProc;
wc.lpszClassName="myclass";
RegisterClassEx(&wc);
hMWnd=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,"myclass","Celsius - Fahrenheit converter",WS_OVERLAPPED|WS_MINIMIZEBOX|WS_CAPTION|WS_SYSMENU,0,0,310,200,0,0,hInstance,0);
ShowWindow(hMWnd,nShow);
font=CreateFont(0,0,0,0,FW_LIGHT,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_DONTCARE,"Times New Roman");
SendMessage(CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,"button","To Fahrenheit",WS_CHILD|WS_VISIBLE,30,100,100,30,hMWnd,(HMENU)1000,hInstance,(LPVOID)1000),WM_SETFONT,(WPARAM)font,0);
SendMessage(CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,"button","To Celsius",WS_CHILD|WS_VISIBLE,170,100,100,30,hMWnd,(HMENU)2000,hInstance,(LPVOID)2000),WM_SETFONT,(WPARAM)font,0);
SendMessage(CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,"edit","",WS_CHILD|WS_VISIBLE,90,50,110,30,hMWnd,(HMENU)3000,hInstance,0),WM_SETFONT,(WPARAM)font,0);
while (GetMessage(&msg,0,0,0)) {
	TranslateMessage(&msg);
	DispatchMessage(&msg);
}
}

Βέβαια γίνεται πολύ πιο εύκολα με MFC, αλλά εγώ προτιμώ το παλιό καλό Winapi.

Δημοσ.

Η αλήθεια είναι οτι δεν κατάλαβα τίποτα από τον κώδικα αυτό μιας και είμαι ακόμα καινούργειος.Παρ'ολα αυτά όταν προσπάησα να τον τρέξω με το Dev C++ δεν το τρέχει-φτιάχνει την εφαρμογή(compile).Λέει κάτω-κάτω αν έχετε το πρόγραμμα αυτό τα εξής:

 

1- C:\DOCUME~1\USER\LOCALS~1\Temp\ccQDaaaa.o : In function `WinMain':

2- _________________________________________:[Linker error] Undefined Reference to `CreateFontA@56'

3- C:\DOCUME~1\USER\LOCALS~1\Temp\ccQDaaaa.o ld : Returned 1 exit status.

 

Μήπως χρειάζομαι κανένα πρόγραμμα πιο μεγάλο και ολοκληρωμένο όπως η Microsoft Visual C++. Είμαι σίγουρος οτι έχει πολύ πιο πολλά πράγματα από το Dev C++, όπως ισως πιο πολλές libraries,functions...Καλά,δεν χρειάζονται πιστεύω ακόμα τα γραφικά, τουλάχιστον, σας ζητώ αν γίνεται να με βοηθήσετε να φτιάξω τον κεντρικό κώδικα του προγράμματος και τα γραφικά,μετα.

 

Βέβαια γίνεται πολύ πιο εύκολα με MFC, αλλά εγώ προτιμώ το παλιό καλό Winapi.

-->Τι είναι το MFC και το Winapi ???

 

Anyway,TNX...

Δημοσ.

Δηλαδή τη μετατροπή θέλεις; Αυτό είναι πολύ εύκολο. Ζητάς από το χρήστη να σου δώσει μια τιμή σε Φαρενάιτ ας πούμε. Κάνεις μετά μια μέθοδο που θα πάρει αυτή τη μεταβλητή και θα επιστρέψει την Κελσίου τιμή σύμφωνα με τον τύπο Φαρενάιτ = Κελσίου + 32. Κάνεις το αντίστοιχο για το ανάποδο που θέλεις.

Δημοσ.

OK,θα σας ενημερώσω μόλις θα έχω έτοιμο τον κώδικα για να τον εξετάσετε και εσεις.Μετά θα ασχολιθούμε με τα γραφικά αν γίνεται.Ευχαριστώ πολυ.

Δημοσ.
OK,θα σας ενημερώσω μόλις θα έχω έτοιμο τον κώδικα για να τον εξετάσετε και εσεις.Μετά θα ασχολιθούμε με τα γραφικά αν γίνεται.Ευχαριστώ πολυ.

 

Γιατί θες γραφικά σε ένα τόσο απλό πρόγραμμα?

Δημοσ.
Σαφώς, ακόμα μαθαίνω και δεν ξέρω πως να το φτιάξω αλλα πιστεύω πως σε λίγο καιρό θα μπορώ.Αν κάποιος μπορεί να με βοηθήσει και προσφερθεί θα του είμαι ευγνώμων.Θα του δώσω οτι πληροφορία χρειάζεται αν θελήσει. Αυτό που θα ήθελα όμως ακόμη περισσότερο είναι να βάλω και λίγα γραφικά.Εννοώ πως δε θέλω το προγραμμα να δουλεύει στο command line.Θέλω αν γίνεται να φτιάξω ένα δικό μου graphical user interface(gui),ένα resource,ένα κουμπί που να λέει "υπολόγισε το","οκ" 'η "exit"....

 

Μην πας να βάλεις δύο καρπούζια στην ίδια αμασχάλη. Αφού ξεκινάς τώρα, τρίψου αρκετά με τέτοια CLI προγραμματάκια μέχρι να μπορείς να σχεδιάζεις τη λύση κάθε τέτοιου καινούργιου προβλήματος νοερά και σχετικά αυτοματοποιημένα, πράγμα που θα σημαίνει πως έχεις πλέον ένα καλό επίπεδο αλγοριθμικής σκέψης. Μετά μελετάς και οπτικό/event driven προγραμματισμό σε συνδυασμό με ένα framework της επιλογής σου, για να φτιάχνεις και GUI frontends για τα προγράμματά σου...

Δημοσ.
Η αλήθεια είναι οτι δεν κατάλαβα τίποτα από τον κώδικα αυτό μιας και είμαι ακόμα καινούργειος.Παρ'ολα αυτά όταν προσπάησα να τον τρέξω με το Dev C++ δεν το τρέχει-φτιάχνει την εφαρμογή(compile).Λέει κάτω-κάτω αν έχετε το πρόγραμμα αυτό τα εξής:

 

1- C:\DOCUME~1\USER\LOCALS~1\Temp\ccQDaaaa.o : In function `WinMain':

2- _________________________________________:[Linker error] Undefined Reference to `CreateFontA@56'

3- C:\DOCUME~1\USER\LOCALS~1\Temp\ccQDaaaa.o ld : Returned 1 exit status.

 

Μήπως χρειάζομαι κανένα πρόγραμμα πιο μεγάλο και ολοκληρωμένο όπως η Microsoft Visual C++. Είμαι σίγουρος οτι έχει πολύ πιο πολλά πράγματα από το Dev C++, όπως ισως πιο πολλές libraries,functions...Καλά,δεν χρειάζονται πιστεύω ακόμα τα γραφικά, τουλάχιστον, σας ζητώ αν γίνεται να με βοηθήσετε να φτιάξω τον κεντρικό κώδικα του προγράμματος και τα γραφικά,μετα.

 

 

-->Τι είναι το MFC και το Winapi ???

 

Anyway,TNX...

Δοκίμασε να βάλεις αυτό κάτω από τα includes:

#pragma comment(lib,"Gdi32.lib")

MFC είναι κάποιες classes τις οποίες μπορείς να χρησιμοποιήσεις αντί του WinAPI για ευκολία. WinAPI είναι, εε, το API Windows, δηλαδή κάποιες functions με τις οποίες "επικοινωνούν" τα προγράμματα με τα Windows.

Και αυτό ήταν άλλωστε το ηθικό δίδαγμα του κώδικά μου: Αφού είσαι καινούριος ακόμα, καλύτερα μακριά από γραφικά και τέτοια για τώρα, ειδικά σε C. Ή αν θες μπορείς να φτιάξεις το GUI σε κάποια πιο εύκολη γλώσσα και ένα DLL σε C που να κάνει export κάποιες functions.

Δημοσ.

Εκτός από το Windows API, το οποίο δεν θα σε πάει μακριά όταν οι εφαρμογές σου θα αρχίσουν να μεγαλώνουν και να γίνονται πολύπλοκες και το MFC framework (μια C++ βιβλιοθήκη προγραμματισμού της MS), το οποίο διευκολύνει την ανάπτυξη εφαρμογών σε σχέση με το Windows API δίχως να την απλοποιεί περαιτέρω όμως, μπορείς να δοκιμάσεις και τον γρήγορο οπτικό προγραμματισμό (Rapid Application Developing ή RAD) με την βοήθεια εργαλείων όπως του CodeGear C/C++ Builder το οποίο σου επιτρέπει την σχεδίαση C/C++ εφαρμογών που μπορούν να εκμεταλλεύονται αν θες (ή χρειάζεσαι) και τις δυνατότητες του Windows API, με εξαιρετικά εύκολο και γρήγορο τρόπο, δηλαδή τοποθετώντας κοντρόλ επάνω σε μια φόρμα (παράθυρο δηλαδή) και γράφοντας ύστερα των κώδικα που θα τα διαχειρισθεί (ο οποίος είναι πολύ ευκολότερος, διότι χρησιμοποιεί την βιβλιοθήκη VCL σε σχέση με το MFC ή Windows API), όπως συμβαίνει σε άλλες γλώσσες όπως στην Delphi, την Visual BASIC ή το .NET framework.

 

Αν θες να δεις την ελεύθερη έκδοση του CodeGear C/C++ Builder, η οποία ονομάζεται CodeGear Turbo C++ Explorer ρίξε μια ματιά εδώ:

http://www.turboexplorer.com/cpp

 

Για να πάρεις ιδέα πως προγραμματίζουμε σε CodeGear C/C++ Builder ή CodeGear Turbo C++ ρίξε μια ματιά σε αυτό το βίντεο

http://www.youtube.com/watch?v=gBvtEG67NWw (αν η ποιότητα του βίντεο είναι χαμηλή πάτησε στο “watch in high quality”).

 

Όσον αφορά τα προβλήματα με το Dev-C++, αν και δεν το δουλεύω, κοίταξε αν έχει κάποιες ειδικές ρυθμίσεις για την δημιουργία Windows (Win32) project (όχι console project) και ύστερα κάνε paste των κώδικα του Aesmade.

Δημοσ.
Όσον αφορά τα προβλήματα με το Dev-C++, αν και δεν το δουλεύω, κοίταξε αν έχει κάποιες ειδικές ρυθμίσεις για την δημιουργία Windows (Win32) project (όχι console project) και ύστερα κάνε paste των κώδικα του Aesmade.

Αν ήταν αυτό το πρόβλημα θα έβγαζαν errors και τα CreateWindowEx, RegisterClassEx, TranslateMessage, DispatchMessage. Το έψαξα και τα προηγούμενα βρίσκονται στο user32.dll ενώ το CreateFont στο Gdi32.dll, οπότε λογικά το πρόβλημα είναι στο linking. Βέβαια ούτε εγώ χρησιμοποιώ τη Dev-C++ οπότε μια υπόθεση είναι.

Και μια τελείως άσχετη απορία: Προγραμματίζεις σε D3D? =P

Δημοσ.

Εντάξει η αλήθεια είναι πως βιάξομαι λιγάκι.Thanks πάρα πολυ Aesmade για τον κώδικα σου και πολύ ευχαριστώ το χρήστη DirectX.Έιχες δίκιο,είχα επιλέξει οι εφαρμογές να φτιάxνονται μόνο ως consol application.Το έσβησα αυτό και ο τρομερός-ακαταλαβίσικος για μένα μέχρι τώρα κωδικός του Aesmade λειτούργησε.:-):-):-):-D:-D:-D

 

**Modarator parsifal : και εσύ έχεις δίκιο.Βιάζομαι χωρίς λόγο.:eek::eek:

 

**

Γιατί θες γραφικά σε ένα τόσο απλό πρόγραμμα?

-->Για να μπορέσω να αποδείξω κι εγώ στον εαυτό μου και κυρίως στον αδελφό μου οτί δεν είμαι ένας άχρηστος πορομένος που δε ξερει να κάνει τίποτα.Το ξέρω,δε χρειάζονται γραφικά για ένα τόσο απλο προγραμματάκι.

 

**Αμα θέλετε Ελληνικά και Αγγλικά πάρα πολυ καλά tutorials-guides για C++ πηγαίντε εδώ,στο τελευταίο μου post μέχρι τώρα : http://www.insomnia.gr/forum/showthread.php?t=261053&page=2 με τον τίτλο : Ελληνικά Tutorial Για C++

 

**Τι λέτε για τα Microsoft Visual C++,Delphi 7,Codegear και Dev C++.

 

Ευχαριστώ πάρα πολυ....:mrgreen::mrgreen::mrgreen:

Τώρα θα προσπαθήσω να φτιάξω τον δικό μου σε command line-consol application κώδικα και θα σας ενημερώσω αμέσως μόλις τον ολοκληρώσω ή(που είναι το πιο πιθανό έτσι όπως τα βλέπω τα πράγματα) κολλήσω.

Δημοσ.

-->Για να μπορέσω να αποδείξω κι εγώ στον εαυτό μου και κυρίως στον αδελφό μου οτί δεν είμαι ένας άχρηστος πορομένος που δε ξερει να κάνει τίποτα.Το ξέρω,δε χρειάζονται γραφικά για ένα τόσο απλο προγραμματάκι.

Χρησιμοποιώντας τον κώδικα του aesmade?

Πες στον αδερφό σου ότι αν εντυπωσιάζεται από γραφικές applications, τότε δεν έχει την παραμικρή ιδέα από προγραμματισμό.

Αλλα αν είναι έτσι τότε μάθε flash, θα ξετρελαθεί ο αδερφός σου :)

Δημοσ.

**

Πες στον αδερφό σου ότι αν εντυπωσιάζεται από γραφικές applications, τότε δεν έχει την παραμικρή ιδέα από προγραμματισμό.

Αλλα αν είναι έτσι τότε μάθε flash, θα ξετρελαθεί ο αδερφός σου :)

 

-->Ξέρει και ίσως άριστο προγραμματισμό.Απλός θέλει να μου μάθει και εμένα.

-->ΔΕΝ ΕΙΜΑΙ ΚΛΕΦΤΗΣ ΚΩΔΙΚΩΝ,τον κώδικα του aesmade τον πήρα ως παράδειγμα για να μάθω μερικά πράγματα βασικά.Αφού το γράφω και εδώ:

Ευχαριστώ πάρα πολυ....Τώρα θα προσπαθήσω να φτιάξω τον δικό μου σε command line-consol application κώδικα και θα σας ενημερώσω αμέσως μόλις τον ολοκληρώσω ή(που είναι το πιο πιθανό έτσι όπως τα βλέπω τα πράγματα) κολλήσω.

 

...

Δημοσ.
[..]Και μια τελείως άσχετη απορία: Προγραμματίζεις σε D3D? =P

 

Μπα.. είμαι ρετρό τύπος οπότε 2D συνεπώς τα παιχνίδια που έχω γράψει είναι μερικά σε DD και κάποια άλλα σε GDI -ok, και ένα σε console :P

Δημοσ.

Ελπίζω να μη στο χαλάσω, αλλά με ό,τι θυμάμαι από C++ έκανα το μετατροπέα...

 

>
//Temperature Converter - 07/08/2008 10:53:35 AM

#include <iostream>

using namespace std;

double toFahr(double cel){
return (cel + 32);
}

double toCel(double fahr){
return (fahr - 32);
}

int main(){
cout << "Enter Celsius degrees: ";
double celsius;
cin >> celsius;
cout << celsius << " Celsius = " << toFahr(celsius) << " Fahreneit" << endl;

cout << "Enter Fahreneit degrees: ";
double fahreneit;
cin >> fahreneit;
cout << fahreneit << " Fahreneit = " << toCel(fahreneit) << " Celsius";
return 0;
}

Το έγραψα στο Code::Blocks και δουλεύει μια χαρά. Μπορείς να κάνεις μια "μαγκιά", εμφανίζοντας συνέχεια ένα μενού όπου ο χρήστης επιλέγει τί μετατροπή θέλει να κάνει και πατώντας q να τερματίζεται. Επίσης μπορείς να βάλεις κι άλλες μετατροπές για να γίνει πληρέστερο.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...