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

Windows Discussion :

[C] récupérer le numéro de la ligne


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Par défaut [C] récupérer le numéro de la ligne
    bonjour,

    je suis entrain de faire un bloc note en api win 32 et j'ai un problème pour dire à quelle ligne et quelle position se trouve le curseur,


    si vous avez des fonctions, des idées.. je suis preneur


    merci

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Bonjour,
    Tu devrais trouver ton bonheur avec le message EM_LINEFROMCHAR ...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Par défaut
    oui, mais j'ai un problème pour utiliser la fonction;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       lResult = SendMessage(hwnd,EM_LINEFROMCHAR, wParam,(LPARAM) lParam);
    .

    et j'ai déclarer plutôt lresult avec un int.


    mais je n'ai rien qui se passe.

    voilà en entier:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #include <windows.h>
    
    HINSTANCE hinst;
    
    LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
                                                      LPSTR lpCmdLine, int nCmdShow)
    {
        HWND hwnd;
        MSG msg;
        WNDCLASS wc;
    
        hinst = hinstance;
    
        wc.style = 0 ;
        wc.lpfnWndProc = MainWndProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hinstance;
        wc.hIcon = NULL;
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = NULL;
        wc.lpszMenuName =  NULL;
        wc.lpszClassName = "MaWinClass";
    
        if(!RegisterClass(&wc)) return FALSE;
    
        hwnd = CreateWindow("MaWinClass", "Titre", WS_OVERLAPPEDWINDOW,
                                       CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
                                                       NULL, NULL, hinstance, NULL);
        if (!hwnd)  return FALSE;
    
        ShowWindow(hwnd, nCmdShow);
    
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
    
    /******************************************************************************/
    
    LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        HWND hEdit;
        int lResult;
    
        switch (uMsg)
        {
            case WM_CREATE:
               hEdit =CreateWindow("edit", "Texte",
                  WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,
                                               10, 10, 200, 400, hwnd, NULL, hinst, NULL);
    
                lResult = SendMessage(hwnd,EM_LINEFROMCHAR, wParam,(LPARAM) lParam);
    
    
                return 0;
    
            case WM_SIZE:
                MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
                return 0;
    
            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
    
            default:
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
    }

    donc voilà si vous pouvez m'aidez,


    merci

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu codes au hasard, visiblement, non ?
    • hEdit n'est pas préservé d'un appel à l'autre, et ton EditBox n'a pas d'ID: Tu n'auras donc aucun moyen d'agir sur ton editbox par la suite.
    • Le SendMessage doit se faire sur l'EditBox
    • Et il ne se fait pas avec les WPARAM et LPARAM de la fenêtre : Il se fait avec ceux que TU veux lui passer. L'un d'eux devra sans doute être le résultat d'un message EM_GETSEL...
    • Et pour les trucs beaucoup moins importants:
      • Le style de code de ta WindowProc me déplait. Je suis plutôt un adepte du SESE (Single Entry, Single Exit) quand j'écris une WindowProc...
      • Et le code n'est pas TCHAR-compliant, non plus...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 95
    Par défaut
    sérieusement c'est la première fois que je suis en face de send message, je connais du tout pas la fonction, si y a pas un tutoriel qui l'explique ou ...

    je sais j'ai fait un peu au n'importe quoi :s ...

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est le genre de choses qui devrait être à la base de tout tutoriel sur WinAPI:
    • On donne la formule magique qui affiche une fenête "Hello World"
    • On explique la formule pour qu'elle ne soit plus magique:
      • On explique ce qu'est une WNDCLASS
      • On explique le système de messages de Windows
      • On explique la façon dont les fenêtres se dessinent.

    SendMessage() utilisé pour une fenêtre ou contrôle dans le même thread, ça ne fait rien de plus compliqué qu'un appel de fonction: Tout simplement, ça appelle la WindowProc du contrôle avec les paramètres que tu veux.
    Et la WindowProc des contrôles EDIT sait traiter le message EM_GETSEL, et elle le traite de la façon écrite dans la doc...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/05/2010, 20h30
  2. récupérer le numéro de la ligne courante d'un fichier txt en javascript
    Par developppez dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/06/2008, 18h29
  3. Réponses: 3
    Dernier message: 07/01/2008, 17h12
  4. Récupérer le numéro de la ligne sélectionnée dans une variable?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2007, 11h48
  5. [xml] Récupérer le numéro de la ligne d'erreur d'un fichier
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 7
    Dernier message: 20/03/2004, 19h09

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