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

Απλο προγραμμα Βοηθεια


ntaryl

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

Δημοσ.

καλησπερα

Παιδια χρειαζομαι βοηθεια απο καποιον που εχει γνωσεις 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++

ευχαριστω πολυ

Δημοσ.

>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;

Δημοσ.

Ευχαριστω πολυ

Μπορεις να το δημιουργησεις σε εκτελεσιμο και να το ανεβασεις εδω ?

λαθος . αλλα και παλι δουλευει

Δημοσ.

Σε 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.

Δημοσ.

Ορίστε φίλε μου. Το εκτελέσιμο με τον πηγαίο... Α, και το κολπάκι με το str και την messageboxa δεν δουλεύει στην Delphi. Πρέπει να κάνεις αυτό που λέει ο DirectX.

Project.zip

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

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

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