J'ai créé mon propre contrôle personnalisé et je souhaite définir ce contrôle personnalisé comme info-bulle pour les autres contrôles. Donc, j'ai ajouté des codes pour définir le contrôle personnalisé comme par infobulle sendMessage par le code ci-dessous,SendMessage ne parvient pas à définir la fenêtre de l'info-bulle
public class MyControl : Control
{
Dictionary<IntPtr, Component> m_tools;
TOOLINFO m_toolInfo;
public MyControl()
{
m_tools = new Dictionary<IntPtr, Component>();
m_toolInfo = new TOOLINFO();
}
string myTipText;
public string MyTipText
{
get
{
return myTipText;
}
set
{
myTipText = value;
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
SolidBrush brush = new SolidBrush(Color.Blue);
e.Graphics.DrawString(this.MyTipText, this.Font, brush, e.ClipRectangle.Location);
}
internal void AddControl(Component component)
{
if (component != null)
{
if (component is Control)
{
Control control = component as Control;
control.HandleCreated += control_HandleCreated;
if (control.IsHandleCreated)
{
control_HandleCreated(control, EventArgs.Empty);
}
}
}
}
void control_HandleCreated(object sender, EventArgs e)
{
Control control = sender as Control;
if(control!=null)
{
m_tools[control.Handle] = control;
m_toolInfo.hwnd = this.Handle;
m_toolInfo.uId = control.Handle;
**int result = WindowsAPI.SendMessage(this.Handle, (int)TTM.TTM_ADDTOOLW, 0, ref m_toolInfo);**
}
}
}
Mais les résultats de SendMessage en échec. Puis-je savoir, pourquoi le contrôle personnalisé ne parvient pas à définir comme Tooltip pour le contrôle.
Voici le SendMessage,
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError=true)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref TOOLINFO lParam);
Je ne pouvais pas trouver la raison de l'échec. S'il vous plaît, quelqu'un m'aidera à ce sujet.
Cordialement, Amal Raj U.