From 7aff1e4cb053394db57c2814d5fe1e6493e0cc75 Mon Sep 17 00:00:00 2001 From: watcherhd Date: Sat, 26 Nov 2011 14:19:43 +0000 Subject: Project folders rename part 2 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@214 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- floatingcontacts/main.cpp | 1331 --------------------------------------------- 1 file changed, 1331 deletions(-) delete mode 100644 floatingcontacts/main.cpp (limited to 'floatingcontacts/main.cpp') diff --git a/floatingcontacts/main.cpp b/floatingcontacts/main.cpp deleted file mode 100644 index 9246e6f..0000000 --- a/floatingcontacts/main.cpp +++ /dev/null @@ -1,1331 +0,0 @@ -/* -Miranda Floating Contacts plugin, created by Iavor Vajarov ( ivajarov@code.bg ) -http://miranda-icq.sourceforge.net/ - -Miranda fonts and colors settings by Ranger. -Extended bonts and backgrounds settings by Oleksiy Shurubura - - -This file is placed in the public domain. Anybody is free to use or -modify it as they wish with no restriction. - -This plugin has been tested to work under Windows ME, 2000 and XP. - -No warranty for any misbehaviour. -*/ - -#include "stdhdr.h" -#include "shlwapi.h" - -#include "version.h" - -#pragma comment ( lib, "comctl32.lib" ) -#pragma comment ( lib, "shlwapi.lib" ) - -#pragma warning ( default : 4201 ) - -//#define DB_POS_GETX(pos) LOWORD(pos) -//#define DB_POS_GETY(pos) HIWORD(pos) -//#define DB_POS_MAKE_XY(x, y) MAKELONG(x, y) - -BOOL (WINAPI *pSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD); -BOOL (WINAPI *pUpdateLayeredWindow) - (HWND hwnd, HDC hdcDST, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, - COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags); - -// Globals - -// TODO: move to some more approriate place, probably part of Thumbs manager -static void LoadContacts ( void ); -static void LoadContact ( HANDLE hContact ); - -// Internal funcs -static void RepaintWindow ( HWND hwnd, HDC hdc ); -static void LoadMenus (); -static void CreateThumbWnd ( TCHAR *ptszName, HANDLE hContact, int nX, int nY ); -static void RegisterWindowClass ( void ); -static void UnregisterWindowClass ( void ); -static void CleanUp ( void ); -static BOOL GetOSPlatform ( void ); -static void LoadDBSettings ( void ); -static void CreateThumbsFont ( void ); -static void CreateBackgroundBrush ( void ); -static int GetContactStatus ( HANDLE hContact ); -static void GetScreenRect ( void ); -extern void SetThumbsOpacity ( BYTE btAlpha ); -static int ClcStatusToPf2 ( int status ); - -static LRESULT __stdcall CommWndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); -static LRESULT __stdcall newMirandaWndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); - -static int OnContactDeleted ( WPARAM wParam,LPARAM lParam ); -static int OnContactIconChanged ( WPARAM wParam, LPARAM lParam ); -static int OnContactDrag ( WPARAM wParam, LPARAM lParam ); -static int OnContactDrop ( WPARAM wParam, LPARAM lParam ); -static int OnContactDragStop ( WPARAM wParam, LPARAM lParam ); -static int OnSkinIconsChanged ( WPARAM wParam, LPARAM lParam ); -static int OnContactSettingChanged ( WPARAM wParam, LPARAM lParam ); -static int OnStatusModeChange ( WPARAM wParam, LPARAM lParam ); -static int OnModulesLoded ( WPARAM wParam, LPARAM lParam ); -static int OnPrebuildContactMenu ( WPARAM wParam, LPARAM lParam ); - -static int OnContactMenu_Remove ( WPARAM wParam,LPARAM lParam ); -//static int OnContactMenu_HideAll ( WPARAM wParam,LPARAM lParam ); -static int OnMainMenu_HideAll ( WPARAM wParam,LPARAM lParam ); -static int OnHotKey_HideWhenCListShow( WPARAM wParam,LPARAM lParam ); -static VOID CALLBACK ToTopTimerProc ( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime); - -WNDPROC oldMirandaWndProc; - - -HINSTANCE hInst = NULL; -HMODULE hUserDll = NULL; -PLUGINLINK *pluginLink = NULL; -LIST_INTERFACE li = {0}; -HFONT hFont[FLT_FONTIDS] = {NULL}; -COLORREF tColor[FLT_FONTIDS] = {0}; -HIMAGELIST himl = NULL; -HANDLE hevContactIcon = NULL; -HANDLE hevContactDrop = NULL; -HANDLE hevContactDragStop = NULL; -HANDLE hevSkinIcons = NULL; -HANDLE hevContactDrag = NULL; -HANDLE hevContactSetting = NULL; -HANDLE hevContactDeleted = NULL; -HANDLE hevOptionsInit = NULL; -HANDLE hevStatusMode = NULL; -HANDLE hevModules = NULL; -HANDLE hevPrebuildMenu = NULL; -HANDLE hNewContact = NULL; - -HPEN hLTEdgesPen = NULL; -HPEN hRBEdgesPen = NULL; -HBRUSH hBkBrush = NULL; -DWORD bkColor = 0; -HBITMAP hBmpBackground = NULL; -WORD nBackgroundBmpUse = CLB_STRETCH; - -HWND hwndMiranda = NULL; -BOOL bVersionOK = FALSE; -BOOL bNT = FALSE; -BOOL bDockHorz = TRUE; -//UINT nStatus = 0; -HMENU hContactMenu = NULL; -HANDLE hMenuItemRemove = NULL; -HANDLE hMenuItemHideAll = NULL; -HANDLE hMainMenuItemHideAll = NULL; -RECT rcScreen; -DWORD dwOfflineModes = 0; -BOOL bEnableTip = FALSE; -UINT_PTR ToTopTimerID = 0; -BOOL bIsCListShow = TRUE; - -HANDLE hRemoveThumb = NULL; -HANDLE hMainHideAllThumbs = NULL; -HANDLE hHideWhenCListShow = NULL; - -//Options - -FCOptions fcOpt = {0}; - -static void InitOptions(){ - fcOpt.thumbAlpha = 255; - fcOpt.bHideOffline = FALSE; - fcOpt.bHideAll = FALSE; - fcOpt.bHideWhenFullscreen = FALSE; - fcOpt.bMoveTogether = FALSE; - fcOpt.bFixedWidth = FALSE; - fcOpt.nThumbWidth = 0; - fcOpt.bShowTip = TRUE; - fcOpt.TimeIn = 0; - fcOpt.bToTop = TRUE; - fcOpt.ToTopTime = TOTOPTIME_DEF; - fcOpt.bHideWhenCListShow = FALSE; - fcOpt.bUseSingleClick = FALSE; - fcOpt.bShowIdle = TRUE; -} - - -PLUGININFO pluginInfo ={ - sizeof(PLUGININFO), - __PLUGIN_NAME, - 0, - __DESC, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - 0 -}; - -// {53C715A8-EB01-4136-A73C-441868610074} -#define MIID_FLTCONT { 0x53c715a8, 0xeb01, 0x4136, { 0xa7, 0x3c, 0x44, 0x18, 0x68, 0x61, 0x0, 0x74 } } - -static const MUUID interfaces[] = {MIID_FLTCONT, MIID_LAST}; - -extern "C" __declspec(dllexport) const MUUID * MirandaPluginInterfaces(void) -{ - return interfaces; -} - -PLUGININFOEX pluginInfoEx ={ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - 0, - __DESC, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - 0, - MIID_FLTCONT -}; - -_inline unsigned int MakeVer(int a,int b,int c,int d) -{ - return PLUGIN_MAKE_VERSION(a,b,c,d); -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) { - - if( mirandaVersion < MakeVer(MINIMAL_COREVERSION) ) return NULL; - pluginInfoEx.version=MakeVer(PRODUCT_VERSION); - return &pluginInfoEx; -} - - -/////////////////////////////////////////////////////// -// Load / unload -BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) -{ - hInst = hinstDLL; - - switch ( fdwReason ) - { - case DLL_PROCESS_ATTACH: - break; - - case DLL_PROCESS_DETACH: - break; - } - - return( TRUE ); -} - - - -extern "C" __declspec(dllexport) PLUGININFO* MirandaPluginInfo( DWORD mirandaVersion ) -{ - if( mirandaVersion < MakeVer(MINIMAL_COREVERSION) ) return NULL; - pluginInfo.version=MakeVer(PRODUCT_VERSION); - return &pluginInfo; -} - - - -extern "C" int __declspec(dllexport) Load( PLUGINLINK *link ) -{ - SetLastError( 0 ); - InitOptions(); - pluginLink = link; - - mir_getLI(&li); - - hevModules = HookEvent( ME_SYSTEM_MODULESLOADED, OnModulesLoded ); - bNT = GetOSPlatform(); - - if (hUserDll = LoadLibrary(_T("user32.dll"))) - { - pSetLayeredWindowAttributes = - (BOOL (WINAPI *)(HWND,COLORREF,BYTE,DWORD)) - GetProcAddress(hUserDll, "SetLayeredWindowAttributes"); - pUpdateLayeredWindow = - (BOOL (WINAPI *)(HWND, HDC, POINT *, SIZE *, HDC, POINT *, COLORREF, BLENDFUNCTION *, DWORD)) - GetProcAddress(hUserDll, "UpdateLayeredWindow"); - } else - { - pSetLayeredWindowAttributes = NULL; - pUpdateLayeredWindow = NULL; - } - - return 0; -} - - - -extern "C" int __declspec(dllexport) Unload() -{ - CleanUp(); - return 0; -} - - - -static void CleanUp() -{ - int nFontId; - - UnhookEvent( hevContactIcon ); - UnhookEvent( hevContactDrag ); - UnhookEvent( hevContactDrop ); - UnhookEvent( hevContactDragStop ); - UnhookEvent( hevSkinIcons ); - UnhookEvent( hevContactDeleted ); - UnhookEvent( hevContactSetting ); - UnhookEvent( hevOptionsInit ); - UnhookEvent( hevStatusMode ); - UnhookEvent( hevModules ); - UnhookEvent( hevPrebuildMenu ); - - if(hRemoveThumb) - DestroyServiceFunction(hRemoveThumb); - if(hMainHideAllThumbs) - DestroyServiceFunction(hMainHideAllThumbs); - if(hHideWhenCListShow) - DestroyServiceFunction(hHideWhenCListShow); - -// while( pThumbsList != NULL ) -// RemoveThumb( pThumbsList ); - - if(ServiceExists(MS_HOTKEY_UNREGISTER)){ - CallService(MS_HOTKEY_UNREGISTER, 0, (LPARAM)(sModule "/MainHideAllThumbs")); - CallService(MS_HOTKEY_UNREGISTER, 0, (LPARAM)(sModule "/HideWhenCListShow")); - } - - if (NULL != hLTEdgesPen) - DeleteObject(hLTEdgesPen); - if (NULL != hRBEdgesPen) - DeleteObject(hRBEdgesPen); - if (NULL != hBmpBackground) - DeleteObject(hBmpBackground); - if (NULL != hBkBrush) - { - SetClassLong((HWND)WND_CLASS, GCL_HBRBACKGROUND, (LONG)NULL); - DeleteObject(hBkBrush); - hBkBrush=NULL; - } - - for (nFontId = 0; nFontId < FLT_FONTIDS; nFontId++) - if (NULL != hFont[nFontId]) - DeleteObject(hFont[nFontId]); - - UnregisterWindowClass(); - - FreeFileDropping(); - - if ( hUserDll != NULL ) - { - FreeLibrary( hUserDll ); - } -} - - - -/////////////////////////////////////////////////////// -// Hooked events -static int OnModulesLoded( WPARAM wParam, LPARAM lParam ) -{ - hevContactIcon = HookEvent( ME_CLIST_CONTACTICONCHANGED, OnContactIconChanged ); - hevSkinIcons = HookEvent( ME_SKIN_ICONSCHANGED, OnSkinIconsChanged ); - hevContactDrag = HookEvent( ME_CLUI_CONTACTDRAGGING, OnContactDrag ); - hevContactDrop = HookEvent( ME_CLUI_CONTACTDROPPED, OnContactDrop ); - hevContactDragStop = HookEvent( ME_CLUI_CONTACTDRAGSTOP, OnContactDragStop ); - hevContactSetting = HookEvent( ME_DB_CONTACT_SETTINGCHANGED, OnContactSettingChanged ); - hevContactDeleted = HookEvent( ME_DB_CONTACT_DELETED, OnContactDeleted ); - hevOptionsInit = HookEvent( ME_OPT_INITIALISE, OnOptionsInitialize ); - hevStatusMode = HookEvent( ME_CLIST_STATUSMODECHANGE, OnStatusModeChange ); - hevPrebuildMenu = HookEvent( ME_CLIST_PREBUILDCONTACTMENU, OnPrebuildContactMenu ); - hwndMiranda = (HWND)CallService( MS_CLUI_GETHWND, 0, 0 ); - - oldMirandaWndProc = (WNDPROC)SetWindowLong( hwndMiranda, GWL_WNDPROC, (LONG)newMirandaWndProc); - - - - // No thumbs yet -// pThumbsList = NULL; - bEnableTip = ServiceExists("mToolTip/ShowTip"); - - RegisterWindowClass(); - InitFileDropping(); - GetScreenRect(); - LoadDBSettings(); - CreateBackgroundBrush(); - CreateThumbsFont(); - LoadContacts(); - LoadMenus(); - - if(fcOpt.bToTop){ - fcOpt.ToTopTime = (fcOpt.ToTopTime<1)?1:fcOpt.ToTopTime; - fcOpt.ToTopTime = (fcOpt.ToTopTime>TOTOPTIME_MAX)?TOTOPTIME_MAX:fcOpt.ToTopTime; - ToTopTimerID=SetTimer(NULL, 0, fcOpt.ToTopTime*TOTOPTIME_P, ToTopTimerProc); - } - return( 0 ); -} - - -static int OnContactDeleted( WPARAM wParam, LPARAM lParam ) -{ - HANDLE hContact = ( HANDLE )wParam; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - if (!pThumb) return 0; - - pThumb->DeleteContactPos(); - thumbList.RemoveThumb(pThumb); - - return 0; -} - - -static int OnContactIconChanged( WPARAM wParam, LPARAM lParam ) -{ - HANDLE hContact = ( HANDLE )wParam; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - - if ( pThumb ) - { - pThumb->RefreshContactIcon( ( int )lParam ); - //pThumb->ThumbSelect( FALSE ); - //SetTimer( pThumb->hwnd, TIMERID_SELECT_T, 1000, NULL ); - } - - return 0; -} - - -static int OnContactDrag( WPARAM wParam, LPARAM lParam ) -{ - ThumbInfo *pNewThumb = NULL; - HANDLE hContact = ( HANDLE )wParam; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - TCHAR *ptName = (TCHAR*)CallService( MS_CLIST_GETCONTACTDISPLAYNAME, wParam, (LPARAM)GCDNF_TCHAR ); - int idStatus = ID_STATUS_OFFLINE; - POINT pt; - GetCursorPos(&pt); - - if ( pThumb == NULL ) - { - idStatus = GetContactStatus( hContact ); - - if ( !fcOpt.bHideAll && !HideOnFullScreen() && ( !fcOpt.bHideOffline || IsStatusVisible( idStatus ) ) && (!fcOpt.bHideWhenCListShow || !bIsCListShow) ) - { -// CreateThumbWnd( pName, hContact, LOWORD( lParam ), HIWORD( lParam ) ); - CreateThumbWnd( ptName, hContact, pt.x, pt.y ); - pNewThumb = thumbList.FindThumbByContact( hContact ); - ShowWindow( pNewThumb->hwnd, SW_SHOWNA ); - hNewContact = hContact; - - OnStatusChanged(); - } - } - else if ( hContact == hNewContact ) - { -// PositionThumb( pThumb, (short)( LOWORD( lParam ) - 5 ), (short)( HIWORD( lParam ) - 5 ) ); - pThumb->PositionThumb( (short)( pt.x - 5 ), (short)( pt.y - 5 ) ); - } - - return( hNewContact != NULL ? 1 : 0 ); -} - - - -static int OnContactDrop( WPARAM wParam, LPARAM lParam ) -{ - RECT rcMiranda; - RECT rcThumb; -// RECT rcOverlap; - - HANDLE hContact = ( HANDLE )wParam; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - - if ( ( hNewContact == hContact ) && ( pThumb != NULL ) ) - { - hNewContact = NULL; - - GetWindowRect( hwndMiranda, &rcMiranda ); - pThumb->GetThumbRect( &rcThumb ); - - //if ( IntersectRect( &rcOverlap, &rcThumb, &rcMiranda ) ) - //{ - // pThumb->OnLButtonDown( (short)(rcThumb.left + 5), (short)(rcThumb.top + 5) ); - //} - } - - SaveContactsPos(); - - return( 1 ); -} - - -static int OnContactDragStop( WPARAM wParam, LPARAM lParam ) -{ - HANDLE hContact = ( HANDLE )wParam; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - - if ( ( pThumb != NULL ) && ( hNewContact == hContact ) ) - { - thumbList.RemoveThumb( pThumb ); - hNewContact = NULL; - } - - return( 0 ); -} - - -static int OnSkinIconsChanged( WPARAM wParam, LPARAM lParam ) -{ - // Get handle to the image list - himl = ( HIMAGELIST )CallService( MS_CLIST_GETICONSIMAGELIST, 0, 0 ); - - // Update thumbs - for (int i = 0; i < thumbList.getCount(); ++i) - thumbList[i]->UpdateContent(); - - return( 0 ); -} - - - -static int OnContactSettingChanged( WPARAM wParam, LPARAM lParam ) -{ - HANDLE hContact = ( HANDLE )wParam; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - int idStatus = ID_STATUS_OFFLINE; - BOOL bRefresh = TRUE; - DBCONTACTWRITESETTING* pdbcws = ( DBCONTACTWRITESETTING* )lParam; - - - if ( hContact == NULL ) - { - if(( 0 == stricmp( pdbcws->szModule, "CLC" ) ) || ( 0 == stricmp( pdbcws->szModule, sModule ) ) ){ - LoadDBSettings(); - ApplyOptionsChanges(); - } - - return( 0 ); - } - - if ( pThumb == NULL ) return( 0 ); - - // Only on these 2 events we need to refresh - if( 0 == stricmp( pdbcws->szSetting, "Status" ) ) - { - idStatus = pdbcws->value.wVal; - } - else if ( 0 == stricmp( pdbcws->szSetting, "Nick" ) ) - { - idStatus = GetContactStatus( hContact ); - } - else if ( 0 == stricmp( pdbcws->szSetting, "MyHandle" ) ) - { - idStatus = GetContactStatus( hContact ); - } - else if ( fcOpt.bShowIdle && 0 == stricmp( pdbcws->szSetting, "IdleTS" )) - { - idStatus = GetContactStatus( hContact ); - } - else - { - bRefresh = FALSE; - } - - if ( bRefresh ) - { - // Detach call - PostMessage( pThumb->hwnd, WM_REFRESH_CONTACT, 0, idStatus ); - } - - return( 0 ); -} - - -static int OnStatusModeChange( WPARAM wParam, LPARAM lParam ) -{ - int idStatus; - - //nStatus = (int)wParam; - - for (int i = 0; i < thumbList.getCount(); ++i) - { - idStatus = GetContactStatus( thumbList[i]->hContact ); - thumbList[i]->RefreshContactStatus( idStatus ); - } - if ( wParam == ID_STATUS_OFFLINE ) - { - // Floating status window will use this - } - - return( 0 ); -} - - - -static int OnPrebuildContactMenu( WPARAM wParam, LPARAM lParam ) -{ - ThumbInfo *pThumb = thumbList.FindThumbByContact( (HANDLE) wParam ); - CLISTMENUITEM clmi; - - ZeroMemory( &clmi, sizeof( clmi ) ); - clmi.cbSize = sizeof( clmi ); - - clmi.flags = ( pThumb == NULL ) ? CMIM_FLAGS | CMIF_HIDDEN : CMIM_FLAGS &~CMIF_HIDDEN; - CallService( MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuItemRemove, (LPARAM)&clmi ); - - clmi.flags = fcOpt.bHideAll ? CMIM_FLAGS | CMIF_HIDDEN : CMIM_FLAGS &~CMIF_HIDDEN; - CallService( MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuItemHideAll, (LPARAM)&clmi ); - - return( 0 ); -} - - - - -/////////////////////////////////////////////////////// -// General functions - -static void LoadDBSettings() -{ - fcOpt.thumbAlpha = (BYTE)((double)DBGetContactSettingByte( NULL, sModule, "Opacity", 100 ) * 2.55 ); - fcOpt.bHideOffline = (BOOL)DBGetContactSettingByte( NULL, sModule, "HideOffline", 0 ); - fcOpt.bHideAll = (BOOL)DBGetContactSettingByte( NULL, sModule, "HideAll", 0 ); - fcOpt.bHideWhenFullscreen = (BOOL)DBGetContactSettingByte( NULL, sModule, "HideWhenFullscreen", 0 ); - fcOpt.bMoveTogether = (BOOL)DBGetContactSettingByte( NULL, sModule, "MoveTogether", 0 ); - fcOpt.bFixedWidth = (BOOL)DBGetContactSettingByte( NULL, sModule, "FixedWidth", 0 ); - fcOpt.nThumbWidth = (DWORD)DBGetContactSettingDword( NULL, sModule, "Width", 0 ); - dwOfflineModes = DBGetContactSettingDword( NULL, "CLC","OfflineModes", CLCDEFAULT_OFFLINEMODES ); - fcOpt.bShowTip = (BOOL)DBGetContactSettingByte( NULL, sModule, "ShowTip", 1 ); - fcOpt.TimeIn = (WORD)DBGetContactSettingWord( NULL, sModule, "TimeIn", 0 ); - fcOpt.bToTop = (BOOL)DBGetContactSettingByte( NULL, sModule, "ToTop", 0 ); - fcOpt.ToTopTime = (WORD)DBGetContactSettingWord( NULL, sModule, "ToTopTime", TOTOPTIME_DEF ); - fcOpt.bHideWhenCListShow = (BOOL)DBGetContactSettingByte( NULL, sModule, "HideWhenCListShow", 0 ); - fcOpt.bUseSingleClick = (BOOL)DBGetContactSettingByte( NULL, sModule, "UseSingleClick", 0 ); - fcOpt.bShowIdle = (BOOL)DBGetContactSettingByte( NULL, sModule, "ShowIdle", 0 ); - - if(DBGetContactSettingByte(NULL, "ModernData", "HideBehind", 0)) - bIsCListShow = (DBGetContactSettingByte(NULL, "ModernData", "BehindEdge", 0)==0); - else - bIsCListShow = (DBGetContactSettingByte(NULL,"CList","State",0)==2); -} - -void SendMsgDialog( HWND hwnd, char *pText ) -{ - ThumbInfo *pThumb = thumbList.FindThumb( hwnd ); - - if ( pThumb != NULL ) - CallService( MS_MSG_SENDMESSAGE, (WPARAM)pThumb->hContact, (LPARAM)pText ); -} - - -static void ShowContactMenu( HWND hwnd, POINT pt ) -{ - ThumbInfo *pThumb = thumbList.FindThumb( hwnd ); - int idCommand = 0; - - if ( pThumb != NULL ) - { - hContactMenu = (HMENU)CallService( MS_CLIST_MENUBUILDCONTACT, (WPARAM)pThumb->hContact, (LPARAM)0 ); - - if ( hContactMenu == NULL ) return; - - idCommand = TrackPopupMenu( hContactMenu, TPM_RIGHTALIGN | TPM_TOPALIGN | TPM_RETURNCMD, pt.x, pt.y, 0 , hwnd, NULL ); - CallService( MS_CLIST_MENUPROCESSCOMMAND, MAKEWPARAM( idCommand ,MPCF_CONTACTMENU), (LPARAM)pThumb->hContact ); - } -} - -static LRESULT __stdcall CommWndProc( HWND hwnd, - UINT uMsg, - WPARAM wParam, - LPARAM lParam ) -{ - LRESULT lResult = 0; - ThumbInfo *pThumb = thumbList.FindThumb( hwnd ); - - switch( uMsg ) - { - case WM_RBUTTONUP: - { - POINT pt; - pt.x = LOWORD( lParam ); - pt.y = HIWORD( lParam ); - - if (pThumb) pThumb->ThumbDeselect( TRUE ); - - ClientToScreen(hwnd,&pt); - ShowContactMenu( hwnd, pt ); - } - - break; - -//#if 0 - case WM_NCPAINT: - if(pThumb){ - HDC hdc = GetWindowDC( hwnd ); - BitBlt(hdc, 0, 0, pThumb->bmpContent.getWidth(), pThumb->bmpContent.getHeight(), pThumb->bmpContent.getDC(), 0, 0, SRCCOPY); - //RepaintWindow( hwnd, hdc ); - ReleaseDC( hwnd, hdc ); - ValidateRect( hwnd, NULL ); - return 0; - } - - case WM_PAINT: - if(pThumb){ - PAINTSTRUCT ps; - HDC hdc = BeginPaint(hwnd, &ps); - BitBlt(hdc, 0, 0, pThumb->bmpContent.getWidth(), pThumb->bmpContent.getHeight(), pThumb->bmpContent.getDC(), 0, 0, SRCCOPY); - //RepaintWindow( hwnd, hdc ); - EndPaint(hwnd, &ps); - break; - } - - case WM_PRINT: - case WM_PRINTCLIENT: - if(pThumb){ - BitBlt((HDC)wParam, 0, 0, pThumb->bmpContent.getWidth(), pThumb->bmpContent.getHeight(), pThumb->bmpContent.getDC(), 0, 0, SRCCOPY); - //RepaintWindow(hwnd, (HDC)wParam); - break; - } -//#endif - - case WM_MEASUREITEM: - lResult = CallService( MS_CLIST_MENUMEASUREITEM,wParam,lParam ); - break; - - case WM_DRAWITEM: - lResult = CallService( MS_CLIST_MENUDRAWITEM,wParam,lParam ); - break; - - case WM_LBUTTONDOWN: - if (pThumb) pThumb->OnLButtonDown( (short)LOWORD( lParam ), (short)HIWORD( lParam ) ); - break; - - case WM_MOUSEMOVE: - if (pThumb) pThumb->OnMouseMove( (short)LOWORD( lParam ), (short)HIWORD( lParam ), wParam); - break; - - case WM_LBUTTONUP: - if (pThumb) pThumb->OnLButtonUp(); - //if (bMouseMoved || !DBGetContactSettingByte(NULL, "CList", "Tray1Click", SETTING_TRAY1CLICK_DEFAULT)) - break; - // FALL THRU - - case WM_LBUTTONDBLCLK: - // Popup message dialog - //if (pThumb) pThumb->ThumbDeselect( TRUE ); - if(!fcOpt.bUseSingleClick && pThumb) - pThumb->PopUpMessageDialog(); - break; - - case WM_RBUTTONDOWN: - if(bEnableTip && fcOpt.bShowTip && pThumb) pThumb->KillTip(); - break; - case WM_REFRESH_CONTACT: - if (pThumb) - { - _tcsncpy( pThumb->ptszName, (TCHAR*)CallService( MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)pThumb->hContact, (LPARAM)GCDNF_TCHAR ), USERNAME_LEN - 1 ); - pThumb->RefreshContactStatus( (int)lParam ); - pThumb->ResizeThumb(); - } - break; - - case WM_TIMER: - if(pThumb)pThumb->OnTimer(wParam); - break; - - case WM_HOTKEY: - { - ThumbInfo *pThumb = thumbList.FindThumb( ( HWND )wParam ); - - if (pThumb) pThumb->PopUpMessageDialog(); - } - - default: - break; - } - - lResult = DefWindowProc( hwnd, uMsg, wParam, lParam ); - - return( lResult ); -} - - - -extern void SetThumbsOpacity( BYTE btAlpha ) -{ - for (int i = 0; i < thumbList.getCount(); ++i) - thumbList[i]->SetThumbOpacity( btAlpha ); -} - - - -static void GetScreenRect() -{ - rcScreen.left = GetSystemMetrics( SM_XVIRTUALSCREEN ); - rcScreen.top = GetSystemMetrics( SM_YVIRTUALSCREEN ); - rcScreen.right = GetSystemMetrics( SM_CXVIRTUALSCREEN ) + rcScreen.left; - rcScreen.bottom = GetSystemMetrics( SM_CYVIRTUALSCREEN ) + rcScreen.top; -} - - - -void OnStatusChanged() -{ - int idStatus = ID_STATUS_OFFLINE; - - for (int i = 0; i < thumbList.getCount(); ++i) - { - idStatus = GetContactStatus( thumbList[i]->hContact ); - thumbList[i]->RefreshContactStatus( idStatus ); - } -} - - - -void ApplyOptionsChanges() -{ - CreateThumbsFont(); - CreateBackgroundBrush(); - -// dwOfflineModes = DBGetContactSettingDword( NULL, "CLC","OfflineModes", CLCDEFAULT_OFFLINEMODES ); - if(!fcOpt.bToTop && ToTopTimerID){ - KillTimer(NULL, ToTopTimerID); - ToTopTimerID = 0; - } - if(fcOpt.bToTop){ - if (ToTopTimerID) KillTimer(NULL, ToTopTimerID); - fcOpt.ToTopTime = (fcOpt.ToTopTime<1)?1:fcOpt.ToTopTime; - fcOpt.ToTopTime = (fcOpt.ToTopTime>TOTOPTIME_MAX)?TOTOPTIME_MAX:fcOpt.ToTopTime; - ToTopTimerID = SetTimer(NULL, 0, fcOpt.ToTopTime*TOTOPTIME_P, ToTopTimerProc); - } - - OnStatusChanged(); - - for (int i = 0; i < thumbList.getCount(); ++i) - thumbList[i]->ResizeThumb(); -} - - - -/////////////////////////////////////////////////////// -// Window creation -static void RegisterWindowClass() -{ - WNDCLASSEX wcx; - ZeroMemory( &wcx, sizeof( wcx ) ); - - wcx.cbSize = sizeof( WNDCLASSEX ); - wcx.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS; - wcx.lpfnWndProc = CommWndProc; - wcx.cbClsExtra = 0; - wcx.cbWndExtra = 0; - wcx.hInstance = hInst; - wcx.hIcon = NULL; - wcx.hCursor = NULL; - wcx.hbrBackground = GetSysColorBrush(COLOR_3DFACE); - wcx.lpszMenuName = NULL; - wcx.lpszClassName = WND_CLASS; - wcx.hIconSm = NULL; - - SetLastError( 0 ); - - RegisterClassEx( &wcx ); -} - - - -static void UnregisterWindowClass() -{ - UnregisterClass( WND_CLASS, hInst ); -} - - - -static void CreateThumbWnd( TCHAR *ptszName, HANDLE hContact, int nX, int nY ) -{ - HWND hwnd = NULL; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - - // Prepare for window creation - if ( pThumb == NULL ) - { - hwnd = CreateWindowEx( WS_EX_TOOLWINDOW | WS_EX_TOPMOST, - WND_CLASS, - ptszName, - WS_POPUP, - nX, - nY, - 50, - 20, - NULL /*hwndMiranda*/, - NULL, - hInst, - NULL - ); - - if ( hwnd != NULL ) - { - pThumb = thumbList.AddThumb( hwnd, ptszName, hContact ); - SetWindowLong( hwnd, GWL_USERDATA, (long)pThumb ); - pThumb->ResizeThumb(); - - pThumb->SetThumbOpacity( fcOpt.thumbAlpha ); - ShowWindow( hwnd, ( fcOpt.bHideAll || HideOnFullScreen() || fcOpt.bHideOffline || (fcOpt.bHideWhenCListShow && bIsCListShow) )? SW_HIDE : SW_SHOWNA ); - pThumb->PositionThumb( (short)nX, (short)nY ); - - // force repaint - pThumb->UpdateContent(); - } - } -} - - - -static BOOL GetOSPlatform() -{ - OSVERSIONINFO VersionInfo; - - // Get OS platform - ZeroMemory( &VersionInfo, sizeof( VersionInfo ) ); - VersionInfo.dwOSVersionInfoSize = sizeof( VersionInfo ); - - GetVersionEx( &VersionInfo ); - return( VersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT ); -} - - - -static void CreateThumbsFont() -{ - int nFontId; - LOGFONTA lf; - - for (nFontId = 0; nFontId < FLT_FONTIDS; nFontId++) - { - if (NULL != hFont[nFontId]) - { - DeleteObject(hFont[nFontId]); - hFont[nFontId] = NULL; - } - GetFontSetting(TRUE, nFontId, &lf, &tColor[nFontId]); - { - LONG height; - HDC hdc=GetDC(NULL); - height=lf.lfHeight; - lf.lfHeight=-MulDiv(lf.lfHeight, GetDeviceCaps(hdc, LOGPIXELSY), 72); - ReleaseDC(NULL,hdc); - - hFont[nFontId] = CreateFontIndirectA(&lf); - - lf.lfHeight=height; - } - } -} - - - -static void CreateBackgroundBrush() -{ -// LOGBRUSH lb; - bkColor = DBGetContactSettingDword(NULL, sModule, "BkColor", FLT_DEFAULT_BKGNDCOLOR); - - - if (NULL != hLTEdgesPen) - { - DeleteObject(hLTEdgesPen); - hLTEdgesPen = NULL; - } - if (NULL != hRBEdgesPen) - { - DeleteObject(hRBEdgesPen); - hRBEdgesPen = NULL; - } - if (NULL != hBmpBackground) - { - DeleteObject(hBmpBackground); - hBmpBackground = NULL; - } - if (NULL != hBkBrush) - { - SetClassLong((HWND)WND_CLASS, GCL_HBRBACKGROUND, (LONG)NULL); - DeleteObject( hBkBrush ); - hBkBrush = NULL; - } - - if (DBGetContactSettingByte(NULL, sModule, "DrawBorder", FLT_DEFAULT_DRAWBORDER)) - { - COLORREF cr; - - cr = (COLORREF)DBGetContactSettingDword(NULL, sModule, "LTEdgesColor", FLT_DEFAULT_LTEDGESCOLOR); - hLTEdgesPen = CreatePen(PS_SOLID, 1, cr); - cr = (COLORREF)DBGetContactSettingDword(NULL, sModule, "RBEdgesColor", FLT_DEFAULT_RBEDGESCOLOR); - hRBEdgesPen = CreatePen(PS_SOLID, 1, cr); - } - if (DBGetContactSettingByte(NULL, sModule, "BkUseBitmap", FLT_DEFAULT_BKGNDUSEBITMAP)) - { - DBVARIANT dbv; - - if (!DBGetContactSetting(NULL, sModule, "BkBitmap", &dbv)) - { - hBmpBackground = (HBITMAP)CallService(MS_UTILS_LOADBITMAP, 0, (LPARAM)dbv.pszVal); - DBFreeVariant(&dbv); - } - } - nBackgroundBmpUse = (WORD)DBGetContactSettingWord(NULL, sModule, "BkBitmapOpt", FLT_DEFAULT_BKGNDBITMAPOPT); - - // Create brush - hBkBrush = CreateSolidBrush(bkColor); - - // Attach brush to the window - SetClassLong((HWND)WND_CLASS, GCL_HBRBACKGROUND, (LONG)hBkBrush); -} - - -static int GetContactStatus( HANDLE hContact ) -{ - char *szProto = NULL; - int idStatus = ID_STATUS_OFFLINE; - - if ( hContact == NULL ) - { - assert( !"Contact is NULL" ); - return( 0 ); - } - - szProto = ( char* )CallService( "Proto/GetContactBaseProto", (WPARAM)hContact, 0 ); - - if ( NULL != szProto ) - { - idStatus = DBGetContactSettingWord( hContact, szProto, "Status", ID_STATUS_OFFLINE ); - } - - - return( idStatus ); -} - - -static int ClcStatusToPf2( int status ) -{ - switch(status) { - case ID_STATUS_ONLINE: return PF2_ONLINE; - case ID_STATUS_AWAY: return PF2_SHORTAWAY; - case ID_STATUS_DND: return PF2_HEAVYDND; - case ID_STATUS_NA: return PF2_LONGAWAY; - case ID_STATUS_OCCUPIED: return PF2_LIGHTDND; - case ID_STATUS_FREECHAT: return PF2_FREECHAT; - case ID_STATUS_INVISIBLE: return PF2_INVISIBLE; - case ID_STATUS_ONTHEPHONE: return PF2_ONTHEPHONE; - case ID_STATUS_OUTTOLUNCH: return PF2_OUTTOLUNCH; - case ID_STATUS_OFFLINE: return MODEF_OFFLINE; - } - return 0; -} - -BOOL IsStatusVisible( int status ) -{ - return ( 0 == ( dwOfflineModes & ClcStatusToPf2( status ) ) ); -} - - - -void RegHotkey( HANDLE hContact, HWND hwnd ) -{ - char szBuf[ MAX_PATH ]= {0}; -/* char szPath[ MAX_PATH ]= {0}; - - GetModuleFileName( NULL, szPath, MAX_PATH ); - PathRemoveFileSpec( szPath ); - strcat( szPath, "\\Thumbs.ini" ); - GetPrivateProfileString( "Hotkeys", szName, "", szBuf, MAX_PATH - 1, szPath );*/ - DBVARIANT dbv; - if(DBGetContactSettingString ( hContact, sModule, "Hotkey", &dbv)) return; - strncpy(szBuf, dbv.pszVal, MAX_PATH - 1); - DBFreeVariant( &dbv ); - - if ( 0 != strlen( szBuf ) ) - { - UINT nModifiers = 0; - char chKey = 0; - char szMod[ 2 ][ 20 ] = {0}; - char szKey[ 20 ] = {0}; - int i = 0; - - sscanf( szBuf, "%[^'+']+%[^'+']+%[^'+']", szMod[ 0 ], szMod[ 1 ], szKey ); - - for ( i = 0; i < 2; ++i ) - { - if( 0 == strncmp( szMod[ i ], "ALT", 19 ) ) - { - nModifiers = nModifiers | MOD_ALT; - } - else if( 0 == strncmp( szMod[ i ], "CTRL", 19 ) ) - { - nModifiers = nModifiers | MOD_CONTROL; - } - else if( 0 == strncmp( szMod[ i ], "SHIFT", 19 ) ) - { - nModifiers = nModifiers | MOD_SHIFT; - } - } - - chKey = szKey[ 0 ]; - - RegisterHotKey( hwnd, (int)hwnd, nModifiers, VkKeyScan( chKey ) ); - } -} - - - -/////////////////////////////////////////////////////// -// Contact sttings - -void SaveContactsPos() -{ - RECT rc; - - for (int i = 0; i < thumbList.getCount(); ++i) - { - SetLastError( 0 ); - - thumbList[i]->GetThumbRect( &rc ); - - if( 0 == GetLastError() ) - DBWriteContactSettingDword( thumbList[i]->hContact, sModule, "ThumbsPos", DB_POS_MAKE_XY(rc.left,rc.top) ); - } -} - - -static void LoadContacts() -{ - HANDLE hContact = (HANDLE)CallService( MS_DB_CONTACT_FINDFIRST, 0, 0) ; - - while( hContact != NULL ) - { - LoadContact( hContact ); - - hContact = (HANDLE)CallService( MS_DB_CONTACT_FINDNEXT, ( WPARAM ) hContact, 0 ); - } -} - - - - -static void LoadMenus() -{ - CLISTMENUITEM mi; - - // Remove thumb menu item - hRemoveThumb = CreateServiceFunction( sModule "/RemoveThumb",OnContactMenu_Remove ); - ZeroMemory( &mi,sizeof( mi ) ); - - mi.cbSize = sizeof( mi ); - mi.position = 0xFFFFF; - mi.flags = CMIF_TCHAR; - mi.hIcon = LoadIcon( hInst, MAKEINTRESOURCE( IDI_HIDE ) ); - mi.ptszName = _T("Remove thumb"); - mi.pszService = sModule "/RemoveThumb"; - hMenuItemRemove = (HANDLE)CallService( MS_CLIST_ADDCONTACTMENUITEM,0, ( LPARAM )&mi ); - - // Hide all thumbs main menu item - hMainHideAllThumbs = CreateServiceFunction( sModule "/MainHideAllThumbs",OnMainMenu_HideAll ); - ZeroMemory( &mi,sizeof( mi ) ); - - mi.cbSize = sizeof( mi ); - mi.position = 0xFFFFF; - mi.flags = CMIF_TCHAR; - mi.hIcon = LoadIcon( hInst, MAKEINTRESOURCE( fcOpt.bHideAll ? IDI_SHOW : IDI_HIDE ) ); - mi.ptszName = fcOpt.bHideAll ? _T("Show all thumbs") : _T("Hide all thumbs"); - mi.pszService = sModule "/MainHideAllThumbs"; - hMainMenuItemHideAll = (HANDLE)CallService( MS_CLIST_ADDMAINMENUITEM,0, ( LPARAM )&mi ); - - if(ServiceExists(MS_HOTKEY_REGISTER)){ - HOTKEYDESC hkd={0}; - - hkd.cbSize = sizeof(hkd); - hkd.pszSection = "Floating Contacts"; - - hkd.pszName = sModule "/MainHideAllThumbs"; - hkd.pszDescription = "Show/Hide all thumbs"; - hkd.pszService = sModule "/MainHideAllThumbs"; - CallService(MS_HOTKEY_REGISTER, 0, (LPARAM)&hkd); - - hHideWhenCListShow = CreateServiceFunction( sModule "/HideWhenCListShow",OnHotKey_HideWhenCListShow ); - hkd.pszName = sModule "/HideWhenCListShow"; - hkd.pszDescription = "Hide when contact list is shown"; - hkd.pszService = sModule "/HideWhenCListShow"; - CallService(MS_HOTKEY_REGISTER, 0, (LPARAM)&hkd); - } -} - - -static void LoadContact( HANDLE hContact ) -{ - DWORD dwPos = (DWORD)-1; - TCHAR *ptName = NULL; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - int nX, nY; - - - if ( hContact == NULL ) return; - - dwPos = DBGetContactSettingDword( hContact, sModule, "ThumbsPos", (DWORD)-1 ); - - if ( dwPos != -1 ) - { - ptName = (TCHAR*)CallService( MS_CLIST_GETCONTACTDISPLAYNAME, ( WPARAM )hContact, (LPARAM)GCDNF_TCHAR ); - - if ( ptName != NULL ) - { - nX = DB_POS_GETX( dwPos ); - nY = DB_POS_GETY( dwPos ); - - CreateThumbWnd( ptName, hContact, nX, nY ); - pThumb->PositionThumb( (short)nX, (short)nY ); - } - } -} - - -BOOL HideOnFullScreen() -{ - BOOL bFullscreen = FALSE; - HWND hWnd = 0; - - if ( fcOpt.bHideWhenFullscreen ) - { - int w = GetSystemMetrics(SM_CXSCREEN); - int h = GetSystemMetrics(SM_CYSCREEN); - - hWnd = GetForegroundWindow(); - - while (GetWindowLong(hWnd, GWL_EXSTYLE) & WS_EX_TOPMOST) - { - RECT WindowRect; - GetWindowRect(hWnd, &WindowRect); - - if ( (w == (WindowRect.right - WindowRect.left) ) && - (h == (WindowRect.bottom - WindowRect.top))) - { - bFullscreen = TRUE; - break; - } - - hWnd = GetNextWindow( hWnd, GW_HWNDNEXT ); - } - } - - return bFullscreen && fcOpt.bHideWhenFullscreen; -} - - -static int OnContactMenu_Remove( WPARAM wParam,LPARAM lParam ) -{ - HANDLE hContact = ( HANDLE )wParam; - ThumbInfo *pThumb = thumbList.FindThumbByContact( hContact ); - - if (pThumb) - { - pThumb->DeleteContactPos(); - thumbList.RemoveThumb(pThumb); - } - - DestroyMenu( hContactMenu ); - - return 0; -} - -static int OnHotKey_HideWhenCListShow( WPARAM wParam,LPARAM lParam ) -{ - fcOpt.bHideWhenCListShow=!fcOpt.bHideWhenCListShow; - DBWriteContactSettingByte(NULL, sModule, "HideWhenCListShow", (BYTE)fcOpt.bHideWhenCListShow); - OnStatusChanged(); - return 0; -} - - -static int OnMainMenu_HideAll( WPARAM wParam,LPARAM lParam ) -{ - CLISTMENUITEM clmi = {0}; - int b; - - fcOpt.bHideAll = !fcOpt.bHideAll; - DBWriteContactSettingByte(NULL, sModule, "HideAll", (BYTE)fcOpt.bHideAll); - OnStatusChanged(); - - clmi.cbSize = sizeof( clmi ); - clmi.flags = CMIM_NAME | CMIM_ICON|CMIF_TCHAR; - clmi.hIcon = LoadIcon( hInst, MAKEINTRESOURCE( fcOpt.bHideAll ? IDI_SHOW : IDI_HIDE ) ); - clmi.ptszName = fcOpt.bHideAll ? _T("Show all thumbs") : _T("Hide all thumbs"); - b = CallService( MS_CLIST_MODIFYMENUITEM, ( WPARAM )hMainMenuItemHideAll, ( LPARAM )&clmi ); - return 0; -} - -static VOID CALLBACK ToTopTimerProc ( HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) -{ - for (int i = 0; i < thumbList.getCount(); ++i) - { - SetWindowPos(thumbList[i]->hwnd, - HWND_TOPMOST, - 0, - 0, - 0, - 0, - SWP_NOSIZE | SWP_NOMOVE | /*SWP_NOZORDER |*/ SWP_NOACTIVATE); - } -} - -void ShowThumbsOnHideCList() -{ - if(!fcOpt.bHideWhenCListShow || fcOpt.bHideAll || HideOnFullScreen())return; - for (int i = 0; i < thumbList.getCount(); ++i) - { - if ( !fcOpt.bHideOffline || IsStatusVisible( GetContactStatus(thumbList[i]->hContact) ) ) - { - ShowWindow( thumbList[i]->hwnd, SW_SHOWNA ); - } - } -} - - -void HideThumbsOnShowCList() -{ - if(!fcOpt.bHideWhenCListShow || fcOpt.bHideAll || HideOnFullScreen())return; - for (int i = 0; i < thumbList.getCount(); ++i) - ShowWindow( thumbList[i]->hwnd, SW_HIDE ); -} - -static LRESULT __stdcall newMirandaWndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) -{ - if( uMsg == WM_WINDOWPOSCHANGED) - { - WINDOWPOS *wp = (WINDOWPOS *)lParam; - if(wp->flags&SWP_HIDEWINDOW) { - bIsCListShow = FALSE; - ShowThumbsOnHideCList(); - } - else if(wp->flags&SWP_SHOWWINDOW){ - bIsCListShow = TRUE; - HideThumbsOnShowCList(); - } - else if(!(wp->flags&SWP_NOMOVE)){ - BYTE method=DBGetContactSettingByte(NULL, "ModernData", "HideBehind", 0); - if(method) { - WORD wBehindEdgeBorderSize=DBGetContactSettingWord(NULL, "ModernData", "HideBehindBorderSize", 0); - RECT rc = {wp->x, wp->y, wp->x+wp->cx, wp->y+wp->cy}; - RECT rcScreen = {wBehindEdgeBorderSize*(2-method), 0, GetSystemMetrics(SM_CXSCREEN)-wBehindEdgeBorderSize*(method-1), GetSystemMetrics(SM_CYSCREEN)}; - RECT rcOverlap; - BOOL isIntersect; - - isIntersect = IntersectRect( &rcOverlap, &rc, &rcScreen ); - if ( !isIntersect && bIsCListShow ){ - bIsCListShow = FALSE; - ShowThumbsOnHideCList(); - } - else if ( isIntersect && !bIsCListShow ){ - bIsCListShow = TRUE; - HideThumbsOnShowCList(); - } - } - } - } - return( CallWindowProc(oldMirandaWndProc, hwnd, uMsg, wParam, lParam) ); -} -- cgit v1.2.3