IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Openfilename et SDL2


Sujet :

C++

  1. #1
    Membre � l'essai
    Homme Profil pro
    Inscrit en
    D�cembre 2011
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 4
    Par d�faut Openfilename et SDL2
    Bonjour,

    J'ai �crit un programme utilisant la SDL2(SDL2.lib, SDL2main.lib, SDL2_image.lib et SDL2_ttf.lib) pour simuler un editBox. �a fonctionnait tr�s bien jusqu'au rajout d'une fonction pour ouvrir un fichier dans l'explorer.
    C'est pr�cis�ment apr�s avoir cliqu� sur Ouvrir que ma police LucidaSansRegular.ttf n'est plus reconnue: TTF_GetError() renvoi "couldn't open xxx.ttf".

    J'ai cherch� � r�soudre le probl�me par diverses mani�res : cr�er une nouvelle thread ex�cutant l'ouverture/s�lection du fichier, avec des events win32 et Sdl mais je n'ai pas r�ussi � r�soudre le probl�me.

    Voici la fonction qui me permet de r�cup�r� le nom du fichier ouvert et celle qui r�cup�re du texte � afficher :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    void CMain::changeDirectoryPath()
    {
    	OPENFILENAME ofn;
    	TCHAR szFile[MAX_PATH];
    	ZeroMemory(&ofn, sizeof(ofn));
    	ofn.lStructSize = sizeof(ofn);
    	ofn.lpstrFile = szFile;
    	ofn.lpstrFile[0] = '\0';
    	ofn.hwndOwner = NULL;
    	ofn.nMaxFile = sizeof(szFile);
    	ofn.lpstrFilter = TEXT("Text Files\0*.txt\0Any File\0*.*\0");
    	ofn.nFilterIndex = 1;
    	ofn.lpstrTitle   = TEXT("Select dictionary");
    	ofn.lpstrInitialDir = L"data\\dictionary";
    	ofn.Flags = OFN_DONTADDTORECENT | OFN_FILEMUSTEXIST;
    	if(GetOpenFileName(&ofn))
    	{
    		OutputDebugString(ofn.lpstrFile);
    		int cSize = WideCharToMultiByte (CP_ACP, 0, ofn.lpstrFile, wcslen(ofn.lpstrFile), NULL, 0, NULL, NULL);
    		string output(static_cast<size_t>(cSize), '\0');
    		WideCharToMultiByte (CP_ACP, 0, ofn.lpstrFile, wcslen(ofn.lpstrFile), reinterpret_cast<char*>(&output[0]), cSize, NULL, NULL);
    		cout<<output<<endl;
    	}
    	cdpOn = false;
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    bool CDictionary::loadFromRenderedText(std::string textureText)
    {
    	if(Message!=NULL)
    	{
    		SDL_DestroyTexture(Message);
    		Message = NULL;
    		TTF_CloseFont(font);
    	}
    	font = TTF_OpenFont(filePath.c_str(), policeSize);
    	if(!font)
    	{
    		cout<<"TTF_OpenFont: "<<TTF_GetError()<<endl;
    		return 0;
    	}
    	textSurface = TTF_RenderText_Solid(font, textureText.c_str(), textColor);
    	if(textSurface != NULL)
    	{
    		Message = SDL_CreateTextureFromSurface(renderer, textSurface);
    		if(Message==NULL)
    		{
    			printf("Unable to create texture from rendered text! SDL Error: %s\n", SDL_GetError());
    		}
    		else
    		{
    			position.x=50;
    			position.y=50;
    			position.w=textSurface->w;
    			position.h=textSurface->h;
    		}
    		SDL_FreeSurface(textSurface);
    	}
    	else
    	{
    		printf("Unable to render text surface! SDL_ttf Error: %s\n", TTF_GetError() );
    	}
    	return Message != NULL;
    }
    Est-ce que vous sauriez pourquoi je ne peux plus r�-ouvrir ma police apr�s avoir s�lectionn� un fichier et comment r�soudre le probl�me?
    Merci d'avance

  2. #2
    Membre �clair�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Sant�

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Par d�faut
    Salut,

    As-tu simplement essay� de d�buger ou au moins v�rifier le chemin de ta nouvelle font? Ne faut-il pas fermer la font pr�c�dente avant d'en ouvrir une autre?

    Sinon, il est plus pratique de ne mettre que le code concern� est pas toute tes diff�rentes m�thodes (inutiles pour ton probl�me).

  3. #3
    Membre � l'essai
    Homme Profil pro
    Inscrit en
    D�cembre 2011
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 4
    Par d�faut
    Merci pour ta r�ponse Darkman19320,
    J'ai �dit� mon premier message et r�duit le code.

    Oui... j'ai essay� de d�boguer mon programme, c'est bien pour �a d�ailleurs que j'�t� en mesure de dire que ma font ne se rouvre pas juste apr�s avoir cliqu� sur le bouton Open et que la fen�tre du CommonDialog se soit ferm�e. Je ferme puis rouvre la m�me font avec le m�me chemin absolu et la m�me taille de police. Non le chemin n'est pas alt�r� apr�s l'ouverture du fichier.


    EDIT : Quelqu'un m'a expliqu� la raison du dysfonctionnement alors je tenais � revenir ici pour partager son explication si quelqu'un avait le m�me soucis : si un fichier est ouvert avec GetOpenFileName, le programme change le r�pertoire de travail et le relocalise l� o� le fichier ouvert se trouve. J'ai donc pu r�soudre mon probl�me en impl�mentant SetCurrentDirectory() � la sortie de ma fonction changeDirectoryPath().

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Openfilename
    Par Fry dans le forum Windows
    R�ponses: 2
    Dernier message: 03/05/2006, 11h50
  2. OPENFILENAME
    Par Mat 74 dans le forum Windows
    R�ponses: 1
    Dernier message: 03/02/2006, 15h27
  3. [VB]Probl�me de focus fen�tre get.openfilename
    Par alexxx69 dans le forum VB 6 et ant�rieur
    R�ponses: 3
    Dernier message: 01/02/2006, 10h22
  4. [debutant VC++ et C++] Windows form et OPENFILENAME
    Par Le Scandinave dans le forum MFC
    R�ponses: 5
    Dernier message: 08/03/2005, 15h31
  5. [API] OpenFilename
    Par DelphiCool dans le forum API, COM et SDKs
    R�ponses: 2
    Dernier message: 24/08/2002, 18h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo