begin process at 2012 05 30 15:53:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

richedit bloquer la modification d'un document


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

richedit bloquer la modification d'un document

samedi 20 décembre 2008 à 00:04:41 | richedit bloquer la modification d'un document

babyboo1107

Bonjour j'aimerais savoir comment faire pour lorsque je fais fermer le document il me met une fenetre gisée(ca j'ai trouver) mais ou il ne soit pas possible de noter quoi que ce soit
merci beaucoup de votre aide

voici une partie de mon code
// FindEdit.c
// Une fenêtre d'édition (RichEdit) avec dialogue "Chercher" non-modal

#include "OnlineSpell.h"                       // les ID du menu et autres

#define TAILLENOMFICH 256                   // pour nom (et chemin) de fichier
#define TAILLETEXTE 30000                   // taille du buffer de texte


// Charge la fenêtre avec le contenu d'un fichier choisi par l'utilisateur
// Utilise une boîte de dialogue standard
//void ChargeFenetre(HWND hWnd);
BOOL DemandeNom(char* szNomFichier,HWND hWnd,BOOL ouvrir);
void ChargeFenetre(char* szNomFichier, HWND hWnd);

//BOOL DemanderNomEnregistrer(char* szNomFichier, HWND hWnd) ;
void enregistrer(char* szNomFichier, HWND hWnd);

void nouveauDoc(HWND hWnd);
void effacerTout(HWND hWnd);
void Chercher(HWND hWnd);                   // ouvrir le dialogue chercher

PSTR szProgName = "OnlineSpell";               // le nom du programme
char nomSansChem [TAILLENOMFICH];
char tampon[256];
char szNomFichier[TAILLENOMFICH];

LRESULT CALLBACK WndProc(HWND hWnd,         // handle de notre fenêtre
                         UINT nMsg,         // numéro du message
                         WPARAM wParam,     // 1ère info supplémentaire
                         LPARAM lParam) {   // 2ème info supplémentaire
  HINSTANCE hInst;                          // processus propriétaire
  static HWND hWndEdit;
  static BOOL EditNotChg = TRUE;
  char * rep;



  switch(nMsg) {                            // quel message ?
    case WM_CREATE :                        // on va créer une sous-fenêtre
                                            // le processus propriétaire
      hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
      LoadLibrary("RICHED32.DLL");          // librairie contenant RichEdit
     hWndEdit = CreateWindowEx(
                              0,            // style étendu (rien de particulier)
                              "RICHEDIT",   // nom de la classe
                              NULL,         // pas de titre
                              WS_CHILD |    // fenêtre fille
                              WS_VISIBLE |  // visible
                              WS_VSCROLL |  // avec défilement vertical
                              ES_NOHIDESEL| // texte sélectionné tj. visible
                              ES_MULTILINE, // édition sur plusieurs lignes
                              0, 0, 0, 0,   // dimension spécifiée ailleurs
                              hWnd,         // handle fenêtre parente
                              NULL,         // pas de menu
                              hInst,        // processus propriétaire
                              NULL);        // pas de data supplémentaires
       SendMessage(hWndEdit, EM_SETBKGNDCOLOR, 0, (LPARAM)RGB(100,100,100));

      return 0;                             // message traité
    case WM_SETFOCUS :                      // on reçoit la main
      SetFocus(hWndEdit);                   // la passer à la fenêtre fille
      return 0;                             // message traité
    case WM_SIZE :                          // dimension de fenêtre ajustée
                                            // redimensionner fenêtre fille
      MoveWindow(hWndEdit,                  // handle fenêtre fille
                 0,                         // bord gauche
                 0,                         // bord supérieur
                 LOWORD(lParam),            // largeur
                 HIWORD(lParam),            // hauteur
                 TRUE);                     // repeint la fenêtre fille
      return 0;                             // message traité


    case WM_CONTEXTMENU :
                {
                HMENU hmenu, hpopup;

                hmenu = LoadMenu(hInst,"OnlineSpell");
                hpopup = GetSubMenu(hmenu, 1);

                TrackPopupMenuEx(hpopup, 0, LOWORD(lParam), HIWORD(lParam), hWndEdit, NULL);

                DestroyMenu(hmenu);
                return 0;
                }

    case WM_COMMAND :
      /* if ((HWND)lParam == hWndEdit && HIWORD(wParam) == EN_IMECHANGE) {
          MessageBeep(-1);
          EnableMenuItem(GetMenu(GetParent(hWnd)),ID_FICHIER_ENREGISTRER,MF_BYCOMMAND);
         }*/

    // notification ou menu
      if((HIWORD(wParam) ==0)||(HIWORD(wParam) ==1)) {   // entrée du menu sélectionnée
                                                         //et racourcis clavier pas de notification
        switch(LOWORD(wParam)) {            // laquelle ?
        case ID_FICHIER_NOUVEAU :
          nouveauDoc(hWndEdit);
          break;
//*******************************
      case ID_FICHIER_FERMER:
                if(EditNotChg ||
                     (rep=MessageBox(hWnd,"Quitter sans enregistrer les modifications ?"
                    ,"Question ?",MB_YESNOCANCEL | MB_ICONQUESTION )) == IDYES)
                      DestroyWindow(hWnd);
                   else if (rep==IDNO){
                    enregistrer(hWnd, TRUE); // On enregistre.
                   //on met le truc griser et pas accessible on le rendra accessible avec nouveau et ouvrir
                   }
                  return 0;
        case ID_FICHIER_OUVRIR :
          if(DemandeNom(&szNomFichier, hWnd,TRUE))
                    { ChargeFenetre(szNomFichier,hWndEdit);
                          GetFileTitle(szNomFichier,nomSansChem,TAILLENOMFICH);
                          wsprintf(tampon,"%s [ %s ] ",szProgName,szNomFichier);
              SetWindowText(hWnd,tampon);
                  }

          break;
        case ID_FICHIER_ENREGISTRERSOUS :
          if(DemandeNom(&szNomFichier, hWnd,FALSE) ){
                          GetFileTitle(szNomFichier,nomSansChem,TAILLENOMFICH);
                          wsprintf(tampon,"%s [ %s ] ",szProgName,szNomFichier);
              SetWindowText(hWnd,tampon);
                      enregistrer(&szNomFichier, hWndEdit);
                    }
          break;

        case ID_FICHIER_ENREGISTRER :
                                    GetFileTitle(szNomFichier,nomSansChem,TAILLENOMFICH);
                                    wsprintf(tampon,"%s [ %s ] ",szProgName,szNomFichier);
              SetWindowText(hWnd,tampon);
              enregistrer(&szNomFichier, hWndEdit);
              break;
        case ID_FICHIER_QUITTER :           // fermer la fenêtre
          PostMessage(hWnd, WM_CLOSE,0, 0); // envoyer message WM_CLOSE
          break;
        //**************
        case ID_EDITER_COUPER :             // envoie WM_CUT
          SendMessage(hWndEdit, WM_CUT, 0, 0);
          break;
        case ID_EDITER_COPIER :             // envoie WM_COPY
          SendMessage(hWndEdit, WM_COPY, 0, 0);
          break;
        case ID_EDITER_COLLER :             // envoie WM_PASTE
          SendMessage(hWndEdit, WM_PASTE, 0, 0);
          break;
        case ID_EDITER_EFFACER :            // envoie WM_CLEAR
          SendMessage(hWndEdit, WM_CLEAR, 0, 0);
          break;
        case ID_EDITER_SELECTALL :
          SendMessage(hWndEdit,EM_SETSEL,0, -1);
          break;
        case ID_EDITER_ALLCLEAR :
          effacerTout(hWndEdit);
          break;
        //**************
        case ID_ORTHO :                  // ouvre le dialogue Chercher
          //Chercher(hWndEdit);
          break;
        }
        return 0;                           // message traité
      }
      break;                                // traitement par défaut

    case WM_DESTROY :                       // fenêtre en passe d'être détruite
      PostQuitMessage(0);                   // envoie WM_QUIT
      return 0;                             // message traité
  }
  // tous les messages non pris en charge
  return( DefWindowProc(hWnd, nMsg, wParam, lParam) );
}






Babyboo
dimanche 21 décembre 2008 à 00:58:25 | Re : richedit bloquer la modification d'un document

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Pour griser un controle on fait : EnableWindow(hwnd,0);
Pour le dégriser : EnableWindow(hwnd,1);
dimanche 21 décembre 2008 à 17:36:24 | Re : richedit bloquer la modification d'un document

babyboo1107

Merci beaucoup j'imaginais des choses plus compliquées ^^

Babyboo


Cette discussion est classée dans : case, wm, hwnd, hwndedit, sznomfichier


Répondre à ce message

Sujets en rapport avec ce message

Problème avec WM_KEYDOWN: [ par cognac ] Pourquoi est-ce que "j" est toujours égal à 2 lorsque je presse F1(même la première fois). Je pensais qu'à chaque fois que je presse F1 "j" augmente d Screenmate defectueux [ par anthraxx ] Anthrax ignisque -- Le charbon et le feu J'essaye de faire un screenmate (une petite bestiole se promenant sur les fenetres), mais n'etant pas tres ex CreateWindowEx [ par Galmiza ] Salut,J'ai fait une application en plein ecran en utilisant la fonction CreateWindowEx et directX. (pour l'instant j'ai desactivé les textures)L'appui Recuperer la notification EN_CHANGE [ par KinNoShishi ] Bonjour à tous, Je suis dans impasse depuis plusieurs heures maintenant... Je n'arrive pas à récupérer le message EN_CHANGE qui me permettrait de pou Probleme de socket [ par alphaone ] // tcp_client.cpp*: définit le point d'entrée pour l'appli eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT [ par piroman14 ] Bonjour je souhaiterais envoyer des messages au moyen de la fonction SendMessage dans la fenêtre déjà existante hEdit.L'aide n'est pas très fournie. J pb avec iwebbrowser2 C++ API Win 32 [ par spyto ] Bonjour,Je tourne en rond, je ne vois pas où ça buggue !!!Voilà, j'ai développé un truc en Win32 pur (j'utilise MSVS.NET C++ 2003)J'ai emprunté une so pb affichage ComboBox dans Dialog [ par Guillemouze ] Salut tout le monde,j'ai un souci d'affichage de mon combo dans un dialog. Quand je click sur la fleche pour afficher la liste, il ne m'affiche rien!P Récupérer les événements sur une frame dans C++ via JNI [ par PleoX ] Bonjour,(J'espère avoir mis mon sujet dans le bon thème. J'ai pas trouvé de thème plus aproprié.)Je suis en train de créer une application multi-touch tester une touche [ par pmolina ] bonjour,J'aimerai reussir a valider les données saisies dans une editBox par le bouton enter. J'ai utilisé la fonction GetKeyState() mais ca marche da


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales