Je tente d'obtenir la solution TwainDotNet que j'ai trouvée ici (C# TWAIN interaction) pour compiler, et je suis à bout de nerfs.Comment implémenter les propriétés automatiques dans VS 2005 pour un rappel de délégué
Cette solution a bien évidemment été développée en VS 2008, et je travaille en 2005 (pas de choix pour l'instant). J'ai passé beaucoup de temps à compiler tout cela en 2005, et j'ai réduit mes erreurs à deux, les deux étant le même problème.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace TwainDotNet.WinFroms
{
/// <summary>
/// A windows message hook for WinForms applications.
/// </summary>
public class WinFormsWindowMessageHook : IWindowsMessageHook, IMessageFilter
{
IntPtr _windowHandle;
bool _usingFilter;
public WinFormsWindowMessageHook(Form window)
{
_windowHandle = window.Handle;
}
public bool PreFilterMessage(ref Message m)
{
if (FilterMessageCallback != null)
{
bool handled = false;
FilterMessageCallback(m.HWnd, m.Msg, m.WParam, m.LParam, ref handled);
return handled;
}
return false;
}
public IntPtr WindowHandle { get { return _windowHandle; } }
public bool UseFilter
{
get
{
return _usingFilter;
}
set
{
if (!_usingFilter && value == true)
{
Application.AddMessageFilter(this);
_usingFilter = true;
}
if (_usingFilter && value == false)
{
Application.RemoveMessageFilter(this);
_usingFilter = false;
}
}
}
public FilterMessage FilterMessageCallback
{
get;
set;
}
}
}
La compilation échoue sur la propriété accédant à l'instance de délégué.
ERROR: 'TwainDotNet.WinFroms.WinFormsWindowMessageHook.FilterMessageCallback.get' doit déclarer un corps parce qu'il est pas marqué abstraite ou extern
Voici l'interface IWindowsMessageHook que cette classe implémente:
using System;
using System.Collections.Generic;
using System.Text;
namespace TwainDotNet
{
public interface IWindowsMessageHook
{
/// <summary>
/// Gets or sets if the message filter is in use.
/// </summary>
bool UseFilter { get; set; }
/// <summary>
/// The delegate to call back when the filter is in place and a message arrives.
/// </summary>
FilterMessage FilterMessageCallback { get; set; }
/// <summary>
/// The handle to the window that is performing the scanning.
/// </summary>
IntPtr WindowHandle { get; }
}
public delegate IntPtr FilterMessage(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled);
}
J'avoue être un débutant délégué, et je suis à perte ici. Comment puis-je dupliquer cette fonctionnalité dans VS 2005?
Merci pour le temps.
Merci beaucoup les gars. Je ne savais pas ce que le compilateur VS 2008 pourrait faire sous le capot - je suppose qu'il fait une version de cette chose même? – Ducain
Oui, c'est exactement pareil. – tanascius