Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Win32 API: problema di tipi nella definizione della classe finestra.

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Cioè ? Cosa hai scritto esattamente con la LoadString ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    codice:
    //file: resource.h
    
    #define IDS_APP_TITLE                   103
    #define IDC_CPPWIN7DIRECT2D             109
    codice:
    //file: main.cpp
    
    TCHAR szTitle[MAX_LOADSTRING];
    TCHAR szWindowClass[MAX_LOADSTRING];
    
    ...
    
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_CPPWIN7DIRECT2D, szWindowClass, MAX_LOADSTRING);
    
    ...
    
    wcex.lpszClassName	= szWindowClass;
    
    ...
    
    hwnd=CreateWindow(szWindowClass,szTitle,WS_VISIBLE|WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, WIDTH, HEIGHT,NULL,NULL,hInstance,NULL);

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma i progetti che hai creato (o che utilizzi) usano stringhe Unicode o no ? (Esiste una voce tra le opzioni generali del progetto)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.