/* Miranda IM: the free IM client for Microsoft* Windows* Copyright 2000-2008 Miranda ICQ/IM project, all portions of this codebase are copyrighted to the people listed in contributors.txt. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef M_MESSAGE_H__ #define M_MESSAGE_H__ 1 //brings up the send message dialog for a contact //wParam=(WPARAM)(HANDLE)hContact //lParam=(LPARAM)(char*)szText //returns 0 on success or nonzero on failure //returns immediately, just after the dialog is shown //szText is the text to put in the edit box of the window (but not send) //szText=NULL will not use any text //szText!=NULL is only supported on v0.1.2.0+ #define MS_MSG_SENDMESSAGE "SRMsg/SendCommand" #define MS_MSG_SENDMESSAGEW "SRMsg/SendCommandW" #ifdef _UNICODE #define MS_MSG_SENDMESSAGET MS_MSG_SENDMESSAGEW #else #define MS_MSG_SENDMESSAGET MS_MSG_SENDMESSAGE #endif #define ME_MSG_WINDOWEVENT "MessageAPI/WindowEvent" //wparam=0 //lparam=(WPARAM)(MessageWindowEventData*)hWindowEvent; //Event types #define MSG_WINDOW_EVT_OPENING 1 //window is about to be opened #define MSG_WINDOW_EVT_OPEN 2 //window has been opened #define MSG_WINDOW_EVT_CLOSING 3 //window is about to be closed #define MSG_WINDOW_EVT_CLOSE 4 //window has been closed #define MSG_WINDOW_EVT_CUSTOM 5 //custom event for message plugins to use (custom uFlags may be used) #define MSG_WINDOW_UFLAG_MSG_FROM 0x00000001 #define MSG_WINDOW_UFLAG_MSG_TO 0x00000002 #define MSG_WINDOW_UFLAG_MSG_BOTH 0x00000004 typedef struct { int cbSize; HANDLE hContact; HWND hwndWindow; // top level window for the contact const char* szModule; // used to get plugin type (which means you could use local if needed) unsigned int uType; // see event types above unsigned int uFlags; // used to indicate message direction for all event types except custom void *local; // used to store pointer to custom data HWND hwndInput; // input area window for the contact (or NULL if there is none) HWND hwndLog; // log area window for the contact (or NULL if there is none) } MessageWindowEventData; #define MS_MSG_GETWINDOWAPI "MessageAPI/WindowAPI" //wparam=0 //lparam=0 //Returns a dword with the current message api version //Current version is 0,0,0,4 #define MS_MSG_GETWINDOWCLASS "MessageAPI/WindowClass" //wparam=(char*)szBuf //lparam=(int)cbSize size of buffer //Sets the window class name in wParam (ex. "SRMM" for srmm.dll) typedef struct { int cbSize; HANDLE hContact; int uFlags; // see uflags above } MessageWindowInputData; #define MSG_WINDOW_STATE_EXISTS 0x00000001 // Window exists should always be true if hwndWindow exists #define MSG_WINDOW_STATE_VISIBLE 0x00000002 #define MSG_WINDOW_STATE_FOCUS 0x00000004 #define MSG_WINDOW_STATE_ICONIC 0x00000008 typedef struct { int cbSize; HANDLE hContact; int uFlags; // should be same as input data unless 0, then it will be the actual type HWND hwndWindow; //top level window for the contact or NULL if no window exists int uState; // see window states void *local; // used to store pointer to custom data } MessageWindowData; #define MS_MSG_GETWINDOWDATA "MessageAPI/GetWindowData" //wparam=(MessageWindowInputData*) //lparam=(MessageWindowData*) //returns 0 on success and returns non-zero (1) on error or if no window data exists for that hcontact #define ME_MSG_WINDOWPOPUP "MessageAPI/WindowPopupRequested" // wParam = 0 // lParam = (MessageWindowPopupData *)&MessageWindowPopupData; // Fired to allow plugins to add items to the msg window popup menu // Always fired twice: once with MSG_WINDOWPOPUP_SHOWING and once with MSG_WINDOWPOPUP_SELECTED. // This is done to allow cleaning of resources. #define MSG_WINDOWPOPUP_SHOWING 1 #define MSG_WINDOWPOPUP_SELECTED 2 #define MSG_WINDOWPOPUP_INPUT 1 #define MSG_WINDOWPOPUP_LOG 2 typedef struct { int cbSize; unsigned int uType; // see popup types above unsigned int uFlags; // used to indicate in which window the popup was requested HANDLE hContact; HWND hwnd; // window where the popup was requested HMENU hMenu; // The handle to the menu POINT pt; // The point, in screen coords int selection; // The menu control id or 0 if no one was selected } MessageWindowPopupData; // status icons - HICONs will be automatically destroyed when removed or when miranda exits #define MBF_DISABLED 0x01 #define MBF_HIDDEN 0x02 typedef struct { int cbSize; char *szModule; // used in combo with the dwId below to create a unique identifier DWORD dwId; HICON hIcon, hIconDisabled; // hIconDisabled is optional - if null, will use hIcon in the disabled state int flags; // bitwize OR of MBF_* flags above char *szTooltip; } StatusIconData; #define MBCF_RIGHTBUTTON 0x01 // if this flag is specified, the click was a right button - otherwize it was a left click typedef struct { int cbSize; POINT clickLocation; // click location, in screen coordinates char *szModule; DWORD dwId; int flags; // bitwize OR of MBCF_* flags above } StatusIconClickData; #define MS_MSG_ADDICON "MessageAPI/AddIcon" // lParam = (StatusIconData *)&StatusIconData #define MS_MSG_REMOVEICON "MessageAPI/RemoveIcon" // lParam = (StatusIconData *)&StatusIconData // only szModule and szId are used #define MS_MSG_MODIFYICON "MessageAPI/ModifyIcon" // wParam = (HANDLE)hContact // lParam = (StatusIconData *)&StatusIconData // if hContact is null, icon is modified for all contacts // otherwise, only the flags field is valid // if either hIcon, hIconDisabled or szTooltip is null, they will not be modified #define ME_MSG_ICONPRESSED "MessageAPI/IconPressed" // wParam = (HANDLE)hContact; // lParam = (StatusIconClickData *)&StatusIconClickData; // catch to show a popup menu, etc. #endif // M_MESSAGE_H__