ntaryl Δημοσ. 8 Ιουλίου 2008 Δημοσ. 8 Ιουλίου 2008 καλησπερα Παιδια χρειαζομαι βοηθεια απο καποιον που εχει γνωσεις C++ ,Delphi etc . Προγραμματιζω εδω και πολυ καιρο σε VB 6.0 .Δεν εχω ιδεα απο αλλες γλωσσες εκτος κατανοηση συνταξης . Μπορει καποιος να υλοποιησει ενα απλο προγραμματακι το οποιο να αποτελειται απο Μια φορμα και την συναρτηση MessageBox παραθετω τον κωδικα σε VB6.0 > Option Explicit Private Declare Function MessageBoxA Lib "user32" ( _ ByVal hwnd As Long, ByVal Msg As String, ByVal title As String, ByVal style As Long _ ) As Long ----------------- Private Sub Command2_Click() Dim str As String str = MessageBoxA(0, "Welcome here ", "Let go", vbQuestion Or vbYesNo) End Sub παρακαλω καποιον ποθ μπορει να το υλοποησει σε Delphi ,c++ ευχαριστω πολυ
GCMH Δημοσ. 8 Ιουλίου 2008 Δημοσ. 8 Ιουλίου 2008 >function MessageBoxA(HWnd: Integer; Text, Caption: PChar; Flags: Integer): Integer; stdcall; external 'user32.dll' name 'MessageBoxA'; //Το παραπάνω δεν χρειάζεται, μιας και η MessageBoxA είναι δηλωμένη στο Windows.pas. //Μπήκε περισσότερο για να φανεί η αναλογία. ---------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); begin ΜessageΒoxA(0, 'Welcome here ', 'Let go', MB_ICONQUESTION or MB_YESNO); end; Κάτι τέτοιο κάνει; Και μια ερώτηση από μέρους μου: η MessageBoxA δεν επιστρέφει string αλλά Integer (Long). Προς τί η μεταβλητή str;
ntaryl Δημοσ. 8 Ιουλίου 2008 Μέλος Δημοσ. 8 Ιουλίου 2008 Ευχαριστω πολυ Μπορεις να το δημιουργησεις σε εκτελεσιμο και να το ανεβασεις εδω ? λαθος . αλλα και παλι δουλευει
Directx Δημοσ. 9 Ιουλίου 2008 Δημοσ. 9 Ιουλίου 2008 Σε CodeGear Turbo C++ το οποίο πρόκειται για την εκδοχή της Delphi σε C/C++ μπορεί να γίνει με δυο τρόπους: > // Πρώτος τρόπος (TApplication->MessageBox) Application->MessageBox("Welcome here ", "Let go", MB_ICONQUESTION | MB_YESNO); Χρησιμοποιούμε το function MessageBox της VCL class TApplication, το οποίο κρύβει την πρώτη παράμετρο (Window Owner) της τυπικής MessageBox αποδίδοντας την αυτόματα στην ενεργή φόρμα του προγράμματος μας. > // Δεύτερος τρόπος (MessageDlg) MessageDlg("Welcome here ", mtConfirmation, TMsgDlgButtons()<<mbYes<<mbNo, -1); Χρησιμοποιούμε την VCL function MessageDlg, όπως και στον πρώτο τρόπο, ο Owner του διαλόγου μας ορίζεται αυτόματα ενώ παράλληλα δεν χρειάζεται να ορίσουμε Caption (τίτλο μηνύματος), ούτε εικονίδιο διαλόγου (πχ. MB_ICONQUESTION), καθώς αυτά αποδίδονται αυτόματα από το mtConfirmation constant. Το κείμενο του διαλόγου μας είναι μορφής AnsiString (πρόκειται για ένα ευέλικτο VCL string class που μπορεί να θυμίσει λίγο το C++ string -μόνο που είναι περισσότερο ευέλικτο σε κάποια σημεία) πράγμα που διευκολύνει πολύ την άμεση εισαγωγή & συνδυασμό διαφόρων άλλων τύπων ως string. Επίσης σε αντίθεση με το WinAPI MessageBox τα πλήκτρα του διαλόγου καθορίζονται ως “TMsgDlgButtons()<<mbYes<<mbNo”, τέλος το -1 εξηγεί στην VCL πιο Help topic ID θα πρέπει να παρουσιάσει αν ο χρήστης πατήσει F1 κατά την προβολή του διαλόγου του. Η MessageDlg (και λιγότερο η MessageDlgPos που ορίζει την θέση εμφάνισης του διαλόγου) είναι οι πιο χρησιμοποιούμενες ρουτίνες για MessageBox της Delphi & C++ Builder/Turbo C++. > // Τρίτος τρόπος (C++ / WinApi) MessageBox(Handle, "Welcome here ", "Let go", MB_ICONQUESTION | MB_YESNO); Τέλος για Windows API σε C/C++ υπάρχει το κλασσικό MessageBox, το Handle είναι το HWND της φόρμας στην οποία ανήκει το MessageBox μας. Υ.Γ. Και οι 3 ρουτίνες όπως προείπε ο GCMH επιστρέφουν αριθμητική τιμή. Τώρα αν θες οπωσδήποτε την μετατροπή της σε string κάνεις απλά, πχ: > AnsiString strRely = Application->MessageBox("Welcome here ", "Let go", MB_ICONQUESTION | MB_YESNO); και το AnsiString κάνει όλη την δουλεία του int -> string conversion.
GCMH Δημοσ. 9 Ιουλίου 2008 Δημοσ. 9 Ιουλίου 2008 Ορίστε φίλε μου. Το εκτελέσιμο με τον πηγαίο... Α, και το κολπάκι με το str και την messageboxa δεν δουλεύει στην Delphi. Πρέπει να κάνεις αυτό που λέει ο DirectX. Project.zip
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.