using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace Foo.ClientServices.ButtonWPForm
{
    /// <summary>
    /// Button Hook uses the IButtonForm Interface to call into ButtonFormCCW.
    /// This allows ButtonHook to communicate to us the state ButtonFormCCW should take.
    /// ButtonForm will handle the methods/Events below and respond as needed.
    /// ~We use the hParentWND to track which ButtonForm Instance we are talking with 
    ///  (this is why all calls below have it in the method call ~it works better that way in COM+)
    /// </summary>
    [Guid("2CF9E641-57B7-436f-80E1-EF3127CB5C0A")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [ComVisible(true)]
    public interface IButtonForm
    {   
        // Custom Events
        int W32BUTTONCLICKED();

        // Called when ButtonHook activates/deactivates the COM Object
        void WPFThreadProc_ButtonWPForm_Activated(int hParentWND, int hButtonWND);
        void WPFThreadProc_ButtonWPForm_Deactivated();        

        // Hooked Window Events
        void WindowEvent_MaximizeOccured(int nHeight, int nWidth);
        void WindowEvent_MinimizeOccured();
        void WindowEvent_WindowActivated();
        void WindowEvent_WindowDeactivated();
    }
}
