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