Salve a tutti, quando creo una classe finestra, solitamente faccio così:
codice:
#include <windows.h>
#define WIDTH 800
#define HEIGHT 600
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);
HWND hwnd;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
WNDCLASSEX wc;
MSG Msg;
memset(&wc,0,sizeof(wc));
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "WindowClass";
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&wc);
hwnd=CreateWindow("WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, WIDTH, HEIGHT,NULL,NULL,hInstance,NULL);
e tutto va liscio.
Ultimamente mi sono interessato alle Direct2D, e per vedere come si usavano ho cercato un esempio già fatto su internet. In questo esempio però, il nome della classe e il titolo della finestra venivano assegnati tramite risorse (LoadString()) in due variabili TCHAR. Provando a cambiare questi dati assegnando loro delle semplice stringhe, però, mi dava quest'errore:
codice:
impossibile assegnare un valore di tipo "const char *" a un'entità di tipo "LPCWSTR"
pur essendo perfettamente identico in tutto e per tutto al modello da me sempre usato.
Ho "risolto" assegnando ai due TCHAR un TEXT(), ma se voglio cambiare il titolo tramite SetWindowText() con qualche dato (anche per fare delle prove) non posso farlo (a meno di non mettere qualche stringa predefinita tramite TEXT). Come posso risolvere questo problema?
Uso Microsoft Visual Studio Express 2012