Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem windows7,Visual Studio 2008 default font

[es] :: C/C++ programiranje :: Problem windows7,Visual Studio 2008 default font

[ Pregleda: 2086 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

amanteo
student,Pupin-Zrenjanin

Član broj: 168025
Poruke: 42
79.101.253.*



+1 Profil

icon Problem windows7,Visual Studio 2008 default font26.01.2010. u 23:21 - pre 173 meseci
Poštovani prijatelji,
nedavno sam instalirao VS 2008 na windows7,
instalacija uspešna,medjutim javio mi se problem
kada sam kreirao svoj prvi win32 projekat.

Title kreiranog prozora je ispisan kineskim slovima.
Kapiram da je problem u vezi sa pretpostavljam default-nim
unicode-om ili fontom ali nikako da nađem neke reference.

Naveo bih da je isti taj VS 2008 pričao engleski kada sam ga
svojevremeno instalirao na XP-u.

Ukoliko ste imali slična iskustva ili ste VS guru ili ni jedno ni drugo,
aman pomagajte,
Unapred sam zahvalan na bilo kakvoj referenci.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Problem windows7,Visual Studio 2008 default font27.01.2010. u 09:12 - pre 173 meseci
Pokaži nam komandu kojom kreiraš prozor. Verovatno nešto radiš pogrešno, ali nećemo znati šta dok ne pokažeš. Da li je naslov prozora jedino što nije u redu?
 
Odgovor na temu

amanteo
student,Pupin-Zrenjanin

Član broj: 168025
Poruke: 42
93.86.122.*



+1 Profil

icon Re: Problem windows7,Visual Studio 2008 default font28.01.2010. u 06:41 - pre 173 meseci
Kreirao Win32 projekat,zatim dodao izvorni .C fajl...
Preskočite skrolom ''Procedura prozora'' i ispod ''Polazna tačka Windows aplikacije'',
u bloku ''Kreiranje Prozora'' parametru lpWindowName dodeljen je string:
"ovo je naslovna linija prozora" koji specificira u ovom slučaju title bar,
ali nakon kreiranja aplikacije svaki ispis teksta u prozoru određen Windows procedurom
mi je ispisan kineskim slovima.Pokušajte da kompajlirate fajl ako ne nađete neku
očiglednu grešku,mada aplikacija je davala korektan ispis na xp-u i VS2005 na faksu,
hvala još jednom i još jednom....do kraja beskonačnog for loop-a !

Code:

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

// ime koje se koristi za registrovanje klase prozora
static char g_szClassName[] = "MyWindowClass";

// globalna promenljiva za cuvanje handle-a instance aplikacije
static HINSTANCE g_hInst = NULL;

// log file
char ime[80] = "wm.log";
FILE *pf;

/******************************************************************************
 Procedura prozora
 *****************************************************************************/


LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, 
             WPARAM wParam, LPARAM lParam)
{
    int ret;

    int xPos, yPos;
    char pozicija[80] = "";
    char greska[80]="";

    SYSTEMTIME now;
    char timestamp[11];

    switch(Message)
    {
        case WM_CREATE:
            pf = fopen(ime, "a");
            if (pf == NULL) 
            {
                sprintf(greska, "Otvaranje log datoteke %s nije uspelo.\n", ime);
                MessageBox(hwnd, 
                    greska,
                    "ERROR",
                    MB_OK | MB_ICONERROR);
                PostQuitMessage(0);
            }

            // log file opened
            GetLocalTime(&now);
            sprintf(timestamp, "[%d:%d:%d]",now.wHour, now.wMinute, now.wSecond);
            
            fprintf(pf, "\n");
            fprintf(pf, timestamp);
            fprintf(pf, " WM_CREATE: window created in memory");

            break;

        case WM_MOVE:
            xPos = (int)(short) LOWORD(lParam);    // horizontal position 
            yPos = (int)(short) HIWORD(lParam);    // vertical position 
            sprintf(pozicija, "pozicija prozora (%d,%d)", xPos, yPos);
            SetWindowText(hwnd, pozicija);

            // log file opened
            GetLocalTime(&now);
            sprintf(timestamp, "[%d:%d:%d]",now.wHour, now.wMinute, now.wSecond);
            
            fprintf(pf, "\n");
            fprintf(pf, timestamp);
            fprintf(pf, " WM_MOVE: moving window");
            break;

        case WM_LBUTTONDOWN:
            MessageBox(hwnd, 
                "pritisnuto levo dugme misa u klijentskoj oblasti",
                "Info: WM_LBUTTONDOWN",
                MB_OK | MB_ICONINFORMATION);
            break;

        case WM_CLOSE:
            DestroyWindow(hwnd);
            break;
        case WM_DESTROY:
            /* zatvori log fajl */
            fclose(pf);

            // fizicko oslobadjanje resursa i unistavanje prozora
            PostQuitMessage(0);
            break;
        default:
            // poziv podrazumevane Default Window Procedure
            // za sve poruke koje nisu obradjene.
            // pridruzuje im se podrazumevano ponasanje
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}

/******************************************************************************
 Polazna tacka Windows aplikacije
 *****************************************************************************/ 
int WINAPI WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszCmdLine,
    int nCmdShow )
{
    WNDCLASSEX WndClass;
    HWND hwnd;
    MSG Msg;

    g_hInst = hInstance;

    // kreiranje klase prozora
    WndClass.cbSize        = sizeof(WNDCLASSEX);
    WndClass.style         = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;;
    WndClass.lpfnWndProc   = WndProc;
    WndClass.cbClsExtra    = 0;
    WndClass.cbWndExtra    = 0;
    WndClass.hInstance     = g_hInst;
    WndClass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    WndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    WndClass.lpszMenuName  = NULL;
    WndClass.lpszClassName = g_szClassName;
    WndClass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

    // registrovanje klase prozora
    if(!RegisterClassEx(&WndClass))
    {
        MessageBox(NULL, "Klasa prozora nije registrovana!", 
            "GRESKA !!!",
            MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
        return 0;    // kraj programa
    }

    //=======================KREIRANJE PROZORA========================================
   
    hwnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,
        g_szClassName,
        "ovo je naslovna linija prozora", //   <<============POGLEDAJ ME
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 
        550, 240,
        NULL, NULL, g_hInst, NULL);

    if(hwnd == NULL)
    {
        MessageBox(NULL, "Kreiranje prozora nije uspelo!", 
            "GRESKA !!!",
            MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL);
        return 0;    // kraj programa
    }
        //==============================================================================

    // prikazivanje prozora
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    // petlja za poruke
    // prihvatanje i dispeciranje poruka namenjenih aplikaciji
    while(GetMessage(&Msg, NULL, 0, 0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}


 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Problem windows7,Visual Studio 2008 default font28.01.2010. u 10:28 - pre 173 meseci
Ajde da napravimo eksperiment: stavi jedan MessageBox kao prvu liniju u glavnoj funkciji odmah iznad WNDCLASSEX WndClass; da vidimo da li će i tu da se pojave kineska slova. Drugi eksperiment: stavi CreateWindowExA umesto CreateWindowEx. Uzgred, kako izgledaju ta "kineska slova"?

Nemam Windows 7, tako da ne mogu da probam, ali možda bi neko drugi mogao da proba ovaj kod kod sebe.
 
Odgovor na temu

amanteo
student,Pupin-Zrenjanin

Član broj: 168025
Poruke: 42
93.86.118.*



+1 Profil

icon Re: Problem windows7,Visual Studio 2008 default font29.01.2010. u 15:06 - pre 173 meseci
Kod ovog prvog te nisam baš razumeo,stavljanje message box-a na navedeno
mesto neće ništa promeniti na izlazu,molim te pojasni... Ovo drugo sam probao i ništa,
probao sam jošbrdo fajlova i opet ćorak. Na kraju sam malo izmenio fajl ka tome da samo
prikazuje naslov u prozoru i da se isti snimi u log.U logu je naravo pisalo "Ovo je naslov...",
Bedak!
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Problem windows7,Visual Studio 2008 default font29.01.2010. u 15:26 - pre 173 meseci
Eksperimentisanje nam pomaže da identifikujemo problem. Da bi rešio problem moraš prvo da ga otkriješ. U skladu s tim potrebno je i da budeš konkretan kad javljaš rezultate eksperimenta. Izraz "probao sam i ništa" mi ne govori mnogo. Ono što mi treba je kako se to "ništa" razlikuje od originalnog "tekst se ispisuje kineskim slovima". Probaj i sledeći eksperiment: stavi slovo L ispred stringa, ovako: L"ovo je naslov...".

Uzgred, nisi mi rekao, kako izgledaju ta kineska slova. Jesu li zaista kineska, ili su ti samo nerazumljiva? Jesu li sva slova kineska, ili samo po neko? Stavi ovde isečak slike ekrana gde se vide ta slova.
 
Odgovor na temu

amanteo
student,Pupin-Zrenjanin

Član broj: 168025
Poruke: 42
79.101.142.*



+1 Profil

icon Re: Problem windows7,Visual Studio 2008 default font31.01.2010. u 00:55 - pre 173 meseci
Eureka!
Rešio si problem stavljanjem L ispred stringa!
Hvala puno!
Šta nam to govori,postoji li način da ubuduće
ne moram da stavljam L ispred svakog stringa?
Poslaću i sličice koje si tražio samo da skapiram
kako se post-uju na forum.
Izvini zbog dosadašnjeg sporog odziva,
u sred sam ispitnog roka pa sam na sve strane.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Problem windows7,Visual Studio 2008 default font01.02.2010. u 11:16 - pre 173 meseci
Sve moderne aplikacije podržavaju Unicode, a pošto je Unicode mlađi od C/C++ onda je jezik morao malo da se prilagodi. To slovo L je prilagođavanje jezika, i označava da string koji sledi nije običan string (što je po defaultu) nego "wide string", to jest Unicode. Pošto je Unicode moderan (i poželjan) u Visual Studiu je uključen u svakom novom projektu. S te strane je sve u redu, i ne bi trebalo da izbegavaš slovo L.

Ono što mene zbunjuje je kako ti je kompajler uopšte dopustio da staviš običan string tamo gde se očekuje Unicode string. Originalni kod ne bi trebalo da može da se kompajlira. Nisu tu čista posla...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem windows7,Visual Studio 2008 default font

[ Pregleda: 2086 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.