Synchroniser les 2 scrollbars des deux richtextbox

Billyjijel Messages postés 12 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 1 juin 2009 - 27 mai 2009 à 16:05
cs_beg0 Messages postés 51 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 13 mars 2011 - 1 juin 2009 à 23:56
la question je pense seulement pour les experts en visual studio c++; comment Synchroniser les 2 scrollbars des deux richtextbox,
supposons qu'on a deux richtextbox comment si je scroll le premier le deux scroll automatiquement
et merci d'avance

9 réponses

cs_beg0 Messages postés 51 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 13 mars 2011 1
27 mai 2009 à 18:33
Salut
Heureusement, on peut faire des applications Windows avec des RichTextBox sans avoir besoin de VC++ ;)

L'idee est la suivante :
Soit hRTB1 et hRTB2 les HWND de tes deux textBox, et hParent le HWND de la fenetre parent.

Il faut que la fenetre parent sache quand la scrollbar de hRTB1 bouge, et qu'elle envoi un message en consequence a hRTB2.

Pour que hParent soit sache que la scrollbar de hRTB1 bouge, regarde du cote de EN_VSCROLL et EN_MSGFILTER (pour la molette de la souris)

http://msdn.microsoft.com/en-us/library/bb761689(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb787974(VS.85).aspx

(Attention, il faut changer le comportement par defaut de la RTB1, en envoyant un message EM_SETEVENTMASK, lit la remarque de la page de EN_VSCROLL )

Pour que hParent bouge la scrollbar de hRTB2, va voir EM_SETSEL ou EM_SETSCROLLSEL

http://msdn.microsoft.com/en-us/library/bb761661(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb774280(VS.85).aspx

Une autre bonne lecture est la page "Using Rich Edit Controls" de MSDN. Je suis parti de cette page pour te repondre ;)

http://msdn.microsoft.com/en-us/library/bb787877(VS.85).aspx
0
Billyjijel Messages postés 12 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 1 juin 2009
27 mai 2009 à 23:02
malheuresment j'ai pas comprends, je ne sais pas si tu peux m'ecrir un code, les deux rich sont dans la même fenètre
et merci
0
cs_beg0 Messages postés 51 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 13 mars 2011 1
28 mai 2009 à 01:26
Bha ca serait mieux de comprendre... moi j'suis la pour t'aider, te donner des pistes (et la, c'est pas une piste mais une autoroute que je t'ai filé!)
De plus, y'a des bouts de codes a mettre un peu partout (WM_COMMAND, WM_NOTIFY, ect...) et j'ai pas envi ce soir de faire un programme complet pour te montrer comment ca marche !
Alors soit tu programmes... soit tu oublies tes RTB...
0
Billyjijel Messages postés 12 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 1 juin 2009
28 mai 2009 à 10:28
ok merci dans tous les cas,
mais perte pour moi par ce que je connais pas les handle et les envois des messages, même j'ai pas les entendu en vc+2005
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_beg0 Messages postés 51 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 13 mars 2011 1
28 mai 2009 à 16:59
hum... t'utilises les MFC ? le DotNet ? autre chose ?
0
Billyjijel Messages postés 12 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 1 juin 2009
28 mai 2009 à 19:09
j'utilise DotNet vc2005
0
cs_beg0 Messages postés 51 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 13 mars 2011 1
1 juin 2009 à 21:42
Ce qui me rassure, c'est que quand je lis tes autres posts c'est que personne ne sais vraiment quelle technologie tu utilises.
Tu veux pas nous poster quelques lignes de ton code, je crois que ca sera le plus simple pour identifier ce que t'utilises. Quand je dis quelques lignes c'est plus d'une et moins de 20... par example le code de creation de tes RichEdit, ou ta fonction "main"

PS pour les autres: oui, je sais, demander du code pour ce genre de conneries, c'est moche, mais je crois que c'est la seule solution... sinon on va pas s'en sortir
0
Billyjijel Messages postés 12 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 1 juin 2009
1 juin 2009 à 23:36
salut
et merci d'avance
je ne sais pas si c'est suffisant si on dit visual c++ 2005 dotnet framework 2.0,mais je pense et selon mes expériences largement suffisant

#pragma once


namespace scroll {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Summary for Form1
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}

protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::RichTextBox^ richTextBox1;
protected:
private: System::Windows::Forms::RichTextBox^ richTextBox2;

private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
this->richTextBox1 = (gcnew System::Windows::Forms::RichTextBox());
this->richTextBox2 = (gcnew System::Windows::Forms::RichTextBox());
this->SuspendLayout();
//
// richTextBox1
//
this->richTextBox1->Location = System::Drawing::Point(9, 34);
this->richTextBox1->Name = L"richTextBox1";
this->richTextBox1->Size = System::Drawing::Size(62, 333);
this->richTextBox1->TabIndex = 0;
this->richTextBox1->Text = L"";
//
// richTextBox2
//
this->richTextBox2->Location = System::Drawing::Point(86, 31);
this->richTextBox2->Name = L"richTextBox2";
this->richTextBox2->ScrollBars = System::Windows::Forms::RichTextBoxScrollBars::ForcedVertical;
this->richTextBox2->Size = System::Drawing::Size(352, 335);
this->richTextBox2->TabIndex = 1;
this->richTextBox2->Text = L"";
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(548, 415);
this->Controls->Add(this->richTextBox2);
this->Controls->Add(this->richTextBox1);
this->Name = L"Form1";
this->Text = L"Form1";
this->ResumeLayout(false);

}
#pragma endregion
};
}
0
cs_beg0 Messages postés 51 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 13 mars 2011 1
1 juin 2009 à 23:56
faut croire que non ^^
Bon, je vais avoir du mal a t'aider... Le C++/CLI j'aime po ca... mais alors po du tout ! La preuve c'est qu'on comprend meme plus ce qu'on fait ! (En fait, le system de message existe toujours derriere, c'est lui qui fait vraiemnt tourner la machine, mais il est cache par la couche "managée" ... ... et du coup, on comprend plus rien a rien...)
Bref, merci quand meme d'avoir poster ton code, ca m'a servi ;)
0
Rejoignez-nous