Prometheus ts
09-02-2007, 19:41
Ciao a tutti , ho un problema con un programma windows che stavo facendo per esercizio per capre come funziona , ecco il codice .....
Header:
windows(1)
#include <windows.h>
source:
windows(1)
// Windows (1).cpp : definisce il punto di ingresso dell'applicazione console.
//
#include "Windows(1).h"
//prototipo della funzione callback messaggio loop
LRESULT CALLBACK fnMessageProcessor(HWND,UINT,WPARAM,LPARAM);
//Funzione aggiunta automaticamente quando parte il programma
int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wndclass;
// allestisce la classe di windows
wndclass.cbSize = sizeof(WNDCLASSEX);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc =fnMessageProcessor;
wndclass.cbClsExtra =0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon (NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wndclass.lpszClassName = "Window Class";
//Nome di Classe
wndclass.hIconSm =LoadIcon(NULL, IDI_APPLICATION);
//Registrazione della classe di Window
if (RegisterClassEx(&wndclass)==0)
{
// Se il programma fallisce esc
exit(1);
}
// Crea la finestra
hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,
"Window Class",// nome della classe
"Create Window Example",// testo della barra del titolo
WS_OVERLAPPEDWINDOW,
0,
0,
320,
200,
NULL,
NULL,
hInstance,
NULL);
//Mostra la Finestra
ShowWindow (hWnd,iCmdShow);
//processa i messaggi fino a che il programma non é terminato
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
//Messaggio funzione loop callback (Necessario per tutti i programmi windows)
LRESULT CALLBACK fnMessageProcessor (HWND hWnd,UINT iMsg,WPARAM wParam, LPARAM lParam)
{
switch (iMsg)
{
//Chiamata quando la funzione viene creata per la prima volta
case WM_CREATE:
return (0);
// Chiamata quando l'utente chiude la finestra
case WM_DESTROY:
PostQuitMessage(0);
return(0);
default:
return DefWindowProc(hWnd,iMsg,wParam,lParam);
}
}
Messaggi di errore in compilazione con visual studio 2005
1>d:\documenti\visual studio 2005\demo programmi\game\windows (1)\windows (1)\windows (1).cpp(24) : error C2440: '=': impossibile convertire da 'const char [13]' a 'LPCWSTR'
1> I tipi a cui si punta sono privi di relazioni. La conversione richiede reinterpret_cast, cast di tipo C o cast di tipo funzione
1>d:\documenti\visual studio 2005\demo programmi\game\windows (1)\windows (1)\windows (1).cpp(54) : error C2664: 'CreateWindowExW': impossibile convertire il parametro 2 da 'const char [13]' a 'LPCWSTR'
1> I tipi a cui si punta sono privi di relazioni. La conversione richiede reinterpret_cast, cast di tipo C o cast di tipo funzione
1>d:\documenti\visual studio 2005\demo programmi\game\windows (1)\windows (1)\windows (1).cpp(66) : warning C4244: 'return': conversione da 'WPARAM' a 'int'. Possibile perdita di dati.
1>Il log di generazione è stato salvato in 'file://d:\Documenti\Visual Studio 2005\Demo Programmi\Game\Windows (1)\Windows (1)\Debug\BuildLog.htm'
1>Windows (1) - 2 errore/i, 1 avviso/i
Potete spiegarmi cosa sbaglio?
PS sono partito dalla creazione di una applicazione consolle per evitare di avere il tutto già bello pronto .....
Header:
windows(1)
#include <windows.h>
source:
windows(1)
// Windows (1).cpp : definisce il punto di ingresso dell'applicazione console.
//
#include "Windows(1).h"
//prototipo della funzione callback messaggio loop
LRESULT CALLBACK fnMessageProcessor(HWND,UINT,WPARAM,LPARAM);
//Funzione aggiunta automaticamente quando parte il programma
int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wndclass;
// allestisce la classe di windows
wndclass.cbSize = sizeof(WNDCLASSEX);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc =fnMessageProcessor;
wndclass.cbClsExtra =0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon (NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wndclass.lpszClassName = "Window Class";
//Nome di Classe
wndclass.hIconSm =LoadIcon(NULL, IDI_APPLICATION);
//Registrazione della classe di Window
if (RegisterClassEx(&wndclass)==0)
{
// Se il programma fallisce esc
exit(1);
}
// Crea la finestra
hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,
"Window Class",// nome della classe
"Create Window Example",// testo della barra del titolo
WS_OVERLAPPEDWINDOW,
0,
0,
320,
200,
NULL,
NULL,
hInstance,
NULL);
//Mostra la Finestra
ShowWindow (hWnd,iCmdShow);
//processa i messaggi fino a che il programma non é terminato
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
//Messaggio funzione loop callback (Necessario per tutti i programmi windows)
LRESULT CALLBACK fnMessageProcessor (HWND hWnd,UINT iMsg,WPARAM wParam, LPARAM lParam)
{
switch (iMsg)
{
//Chiamata quando la funzione viene creata per la prima volta
case WM_CREATE:
return (0);
// Chiamata quando l'utente chiude la finestra
case WM_DESTROY:
PostQuitMessage(0);
return(0);
default:
return DefWindowProc(hWnd,iMsg,wParam,lParam);
}
}
Messaggi di errore in compilazione con visual studio 2005
1>d:\documenti\visual studio 2005\demo programmi\game\windows (1)\windows (1)\windows (1).cpp(24) : error C2440: '=': impossibile convertire da 'const char [13]' a 'LPCWSTR'
1> I tipi a cui si punta sono privi di relazioni. La conversione richiede reinterpret_cast, cast di tipo C o cast di tipo funzione
1>d:\documenti\visual studio 2005\demo programmi\game\windows (1)\windows (1)\windows (1).cpp(54) : error C2664: 'CreateWindowExW': impossibile convertire il parametro 2 da 'const char [13]' a 'LPCWSTR'
1> I tipi a cui si punta sono privi di relazioni. La conversione richiede reinterpret_cast, cast di tipo C o cast di tipo funzione
1>d:\documenti\visual studio 2005\demo programmi\game\windows (1)\windows (1)\windows (1).cpp(66) : warning C4244: 'return': conversione da 'WPARAM' a 'int'. Possibile perdita di dati.
1>Il log di generazione è stato salvato in 'file://d:\Documenti\Visual Studio 2005\Demo Programmi\Game\Windows (1)\Windows (1)\Debug\BuildLog.htm'
1>Windows (1) - 2 errore/i, 1 avviso/i
Potete spiegarmi cosa sbaglio?
PS sono partito dalla creazione di una applicazione consolle per evitare di avere il tutto già bello pronto .....