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

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

Δημοσ. (επεξεργασμένο)

Καλησπέρα. Χρησιμοποιώ για μεταγλωττιστή το TDM-GCC 9.2.0 64bit σε λειτουργικό Windows 8.1 64bit.
Πρόκειται για ένα μικρό πρόγραμμα που εντοπίζει το όνομα του εκτελέσιμου αρχείου του ίδιου προγράμματος
και το προβάλει σε μήνυμα στα ελληνικά με τη MessageBox(). Στη συνέχεια ακολουθεί και μια δεύτερη MessageBox()
που εμφανίζει πάλι τα ελληνικά λανθασμένα. Πιο συγκεκριμένα το πρόβλημα είναι πως απ' τη μία η πρώτη MessageBox()
προβάλλει στο σώμα του μηνύματος σωστά τα ελληνικά, απ' την άλλη τα βγάζει στον τίτλο του μηνύματος ως σκουπίδια.
Η δε δεύτερη MessageBox() προβάλει τόσο τον τίτλο όσο και το σώμα του μηνύματος εντελώς ως σκουπίδια.
Έχω κάνει διάφορες δοκιμές όπως προσθήκη του L πριν τα αλφαριθμητικά, αλλά δε κατάφερα το κάνω να δουλέψει σωστά.

Για τη μεταγλώττιση χρησιμοποιώ την εντολή:

gcc -mwindows δοκιμές.c -o δοκιμές.exe

Επίσης χρησιμοποίησα και την παρακάτω εντολή:

 gcc -mwindows δοκιμές.c -o δοκιμές.exe -finput-charset=utf-8 -fexec-charset=cp737

αλλά με τα ίδια λανθασμένα αποτελέσματα.

Εδώ είναι ο κώδικας του προγράμματος:

/* 
   δοκιμές.c - Παίρνει το όνομα του εκτελέσιμου αρχείου
   του προγράμματος και το προβάλλει σε μήνυμα στα ελληνικά
*/

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    char szFileName[MAX_PATH];
    
    GetModuleFileName(hInstance, szFileName, MAX_PATH);
    MessageBox(NULL, szFileName, "Αυτό το πρόγραμμα είναι το:", MB_OK | MB_ICONINFORMATION);
    
    MessageBox(NULL, "Δοκιμές στα ελληνικά", "Μήνυμα", MB_OK | MB_ICONINFORMATION);
    return 0;
}

Εδώ είναι τα δύο μηνύματα όπως τα προβάλλει το πρόγραμμα μετά την εκτέλεση του:

msg1.PNG.abf01c0adf8cdd2bbdd2866cdb83aee3.PNG

msg2.PNG.65d19d8078864c962c911ab92a5c315d.PNG

Επεξ/σία από cvb~
Δημοσ.

Άλλαξα τον τύπο δεδομένων του πίνακα szFileName[] σε wchar_t και άλλαξα την GetModuleFileName()
σε GetModuleFileNameW(). Επίσης χρησιμοποίησα την MessageBoxW(), όπως μου γράψατε. Εμφανίζει τώρα σωστά
τα ελληνικά. Σας ευχαριστώ για την βοήθεια. Εδώ είναι ο διορθωμένος (θέλω να ελπίζω) κώδικας:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    wchar_t szFileName[MAX_PATH];
    
    GetModuleFileNameW(hInstance, szFileName, MAX_PATH);
    MessageBoxW(NULL, szFileName, L"Αυτό το πρόγραμμα είναι το:", MB_OK | MB_ICONINFORMATION);
	
    MessageBoxW(NULL, L"Δοκιμές στα ελληνικά", L"Μήνυμα", MB_OK | MB_ICONINFORMATION);
    return 0;
}

 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...