diff options
Diffstat (limited to 'plugins/!NotAdopted/MessagePopup')
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/AggressiveOptimize.h | 165 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/MsgPopup.dsp | 124 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/MsgPopup.dsw | 29 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/MsgPopup.rc | 134 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/MsgPopup.txt | 63 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/common.h | 63 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/main.cpp | 272 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/options.cpp | 131 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/options.h | 22 | ||||
-rw-r--r-- | plugins/!NotAdopted/MessagePopup/resource.h | 34 |
10 files changed, 1037 insertions, 0 deletions
diff --git a/plugins/!NotAdopted/MessagePopup/AggressiveOptimize.h b/plugins/!NotAdopted/MessagePopup/AggressiveOptimize.h new file mode 100644 index 0000000000..c373fa70ad --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/AggressiveOptimize.h @@ -0,0 +1,165 @@ +//////////////////////////////
+// Version 1.40
+// October 22nd, 2002 - .NET (VC7, _MSC_VER=1300) support!
+// Version 1.30
+// Nov 24th, 2000
+// Version 1.20
+// Jun 9th, 2000
+// Version 1.10
+// Jan 23rd, 2000
+// Version 1.00
+// May 20th, 1999
+// Todd C. Wilson, Fresh Ground Software
+// (todd@nopcode.com)
+// This header file will kick in settings for Visual C++ 5 and 6 that will (usually)
+// result in smaller exe's.
+// The "trick" is to tell the compiler to not pad out the function calls; this is done
+// by not using the /O1 or /O2 option - if you do, you implicitly use /Gy, which pads
+// out each and every function call. In one single 500k dll, I managed to cut out 120k
+// by this alone!
+// The other two "tricks" are telling the Linker to merge all data-type segments together
+// in the exe file. The relocation, read-only (constants) data, and code section (.text)
+// sections can almost always be merged. Each section merged can save 4k in exe space,
+// since each section is padded out to 4k chunks. This is very noticeable with smaller
+// exes, since you could have only 700 bytes of data, 300 bytes of code, 94 bytes of
+// strings - padded out, this could be 12k of runtime, for 1094 bytes of stuff! For larger
+// programs, this is less overall, but can save at least 4k.
+// Note that if you're using MFC static or some other 3rd party libs, you may get poor
+// results with merging the readonly (.rdata) section - the exe may grow larger.
+// To use this feature, define _MERGE_RDATA_ in your project or before this header is used.
+// With Visual C++ 5, the program uses a file alignment of 512 bytes, which results
+// in a small exe. Under VC6, the program instead uses 4k, which is the same as the
+// section size. The reason (from what I understand) is that 4k is the chunk size of
+// the virtual memory manager, and that WinAlign (an end-user tuning tool for Win98)
+// will re-align the programs on this boundary. The problem with this is that all of
+// Microsoft's system exes and dlls are *NOT* tuned like this, and using 4k causes serious
+// exe bloat. This is very noticeable for smaller programs.
+// The "trick" for this is to use the undocumented FILEALIGN linker parm to change the
+// padding from 4k to 1/2k, which results in a much smaller exe - anywhere from 20%-75%
+// depending on the size. Note that this is the same as using /OPT:NOWIN98, which *is*
+// a previously documented switch, but was left out of the docs for some reason in VC6 and
+// all of the current MSDN's - see KB:Q235956 for more information.
+// Microsoft does say that using the 4k alignment will "speed up process loading",
+// but I've been unable to notice a difference, even on my P180, with a very large (4meg) exe.
+// Please note, however, that this will probably not change the size of the COMPRESSED
+// file (either in a .zip file or in an install archive), since this 4k is all zeroes and
+// gets compressed away.
+// Also, the /ALIGN:4096 switch will "magically" do the same thing, even though this is the
+// default setting for this switch. Apparently this sets the same values as the above two
+// switches do. We do not use this in this header, since it smacks of a bug and not a feature.
+// Thanks to Michael Geary <Mike@Geary.com> for some additional tips!
+//
+// Notes about using this header in .NET
+// First off, VC7 does not allow a lot of the linker command options in pragma's. There is no
+// honest or good reason why Microsoft decided to make this change, it just doesn't.
+// So that is why there are a lot of <1300 #if's in the header.
+// If you want to take full advantage of the VC7 linker options, you will need to do it on a
+// PER PROJECT BASIS; you can no longer use a global header file like this to make it better.
+// Items I strongly suggest putting in all your VC7 project linker options command line settings:
+// /ignore:4078 /RELEASE
+// Compiler options:
+// /GL (Whole Program Optimization)
+// If you're making an .EXE and not a .DLL, consider adding in:
+// /GA (Optimize for Windows Application)
+// Some items to consider using in your VC7 projects (not VC6):
+// Link-time Code Generation - whole code optimization. Put this in your exe/dll project link settings.
+// /LTCG:NOSTATUS
+// The classic no-padding and no-bloat compiler C/C++ switch:
+// /opt:nowin98
+//
+// (C++ command line options: /GL /opt:nowin98 and /GA for .exe files)
+// (Link command line options: /ignore:4078 /RELEASE /LTCG:NOSTATUS)
+//
+// Now, notes on using these options in VC7 vs VC6.
+// VC6 consistently, for me, produces smaller code from C++ the exact same sources,
+// with or without this header. On average, VC6 produces 5% smaller binaries compared
+// to VC7 compiling the exact same project, *without* this header. With this header, VC6
+// will make a 13k file, while VC7 will make a 64k one. VC7 is just bloaty, pure and
+// simple - all that managed/unmanaged C++ runtimes, and the CLR stuff must be getting
+// in the way of code generation. However, template support is better, so there.
+// Both VC6 and VC7 show the same end kind of end result savings - larger binary output
+// will shave about 2% off, where as smaller projects (support DLL's, cpl's,
+// activex controls, ATL libs, etc) get the best result, since the padding is usually
+// more than the actual usable code. But again, VC7 does not compile down as small as VC6.
+//
+// The argument can be made that doing this is a waste of time, since the "zero bytes"
+// will be compressed out in a zip file or install archive. Not really - it doesn't matter
+// if the data is a string of zeroes or ones or 85858585 - it will still take room (20 bytes
+// in a zip file, 29 bytes if only *4* of them 4k bytes are not the same) and time to
+// compress that data and decompress it. Also, 20k of zeros is NOT 20k on disk - it's the
+// size of the cluster slop- for Fat32 systems, 20k can be 32k, NTFS could make it 24k if you're
+// just 1 byte over (round up). Most end users do not have the dual P4 Xeon systems with
+// two gigs of RDram and a Raid 0+1 of Western Digital 120meg Special Editions that all
+// worthy developers have (all six of us), so they will need any space and LOADING TIME
+// savings they will need; taking an extra 32k or more out of your end user's 64megs of
+// ram on Windows 98 is Not a Good Thing.
+//
+// Now, as a ADDED BONUS at NO EXTRA COST TO YOU! Under VC6, using the /merge:.text=.data
+// pragma will cause the output file to be un-disassembleable! (is that a word?) At least,
+// with the normal tools - WinDisam, DumpBin, and the like will not work. Try it - use the
+// header, compile release, and then use DUMPBIN /DISASM filename.exe - no code!
+// Thanks to Gëzim Pani <gpani@siu.edu> for discovering this gem - for a full writeup on
+// this issue and the ramifactions of it, visit www.nopcode.com for the Aggressive Optimize
+// article.
+
+#ifndef _AGGRESSIVEOPTIMIZE_H_
+#define _AGGRESSIVEOPTIMIZE_H_
+
+#pragma warning(disable:4711)
+
+#ifdef NDEBUG
+// /Og (global optimizations), /Os (favor small code), /Oy (no frame pointers)
+#pragma optimize("gsy",on)
+
+#if (_MSC_VER<1300)
+ #pragma comment(linker,"/RELEASE")
+#endif
+
+// Note that merging the .rdata section will result in LARGER exe's if you using
+// MFC (esp. static link). If this is desirable, define _MERGE_RDATA_ in your project.
+#ifdef _MERGE_RDATA_
+#pragma comment(linker,"/merge:.rdata=.data")
+#endif // _MERGE_RDATA_
+
+#pragma comment(linker,"/merge:.text=.data")
+#if (_MSC_VER<1300)
+ // In VC7, this causes problems with the relocation and data tables, so best to not merge them
+ #pragma comment(linker,"/merge:.reloc=.data")
+#endif
+
+// Merging sections with different attributes causes a linker warning, so
+// turn off the warning. From Michael Geary. Undocumented, as usual!
+#if (_MSC_VER<1300)
+ // In VC7, you will need to put this in your project settings
+ #pragma comment(linker,"/ignore:4078")
+#endif
+
+// With Visual C++ 5, you already get the 512-byte alignment, so you will only need
+// it for VC6, and maybe later.
+#if _MSC_VER >= 1000
+
+// Option #1: use /filealign
+// Totally undocumented! And if you set it lower than 512 bytes, the program crashes.
+// Either leave at 0x200 or 0x1000
+//#pragma comment(linker,"/FILEALIGN:0x200")
+
+// Option #2: use /opt:nowin98
+// See KB:Q235956 or the READMEVC.htm in your VC directory for info on this one.
+// This is our currently preferred option, since it is fully documented and unlikely
+// to break in service packs and updates.
+#if (_MSC_VER<1300)
+ // In VC7, you will need to put this in your project settings
+ #pragma comment(linker,"/opt:nowin98")
+#else
+
+// Option #3: use /align:4096
+// A side effect of using the default align value is that it turns on the above switch.
+// Does nothing under Vc7 that /opt:nowin98 doesn't already give you
+// #pragma comment(linker,"/ALIGN:512")
+#endif
+
+#endif // _MSC_VER >= 1000
+
+#endif // NDEBUG
+
+#endif // _AGGRESSIVEOPTIMIZE_H_
diff --git a/plugins/!NotAdopted/MessagePopup/MsgPopup.dsp b/plugins/!NotAdopted/MessagePopup/MsgPopup.dsp new file mode 100644 index 0000000000..9171ba6982 --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/MsgPopup.dsp @@ -0,0 +1,124 @@ +# Microsoft Developer Studio Project File - Name="MsgPopup" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=MsgPopup - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "MsgPopup.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "MsgPopup.mak" CFG="MsgPopup - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MsgPopup - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "MsgPopup - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MsgPopup - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MsgPopup_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W4 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MsgPopup_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# SUBTRACT LINK32 /map
+
+!ELSEIF "$(CFG)" == "MsgPopup - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MsgPopup_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MsgPopup_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"C:\PROGRA~1\MIRAND~2\PLUGINS\MsgPopup.DLL" /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "MsgPopup - Win32 Release"
+# Name "MsgPopup - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\options.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\options.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\resource.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\MsgPopup.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/plugins/!NotAdopted/MessagePopup/MsgPopup.dsw b/plugins/!NotAdopted/MessagePopup/MsgPopup.dsw new file mode 100644 index 0000000000..e18e716489 --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/MsgPopup.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "MsgPopup"=".\MsgPopup.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/plugins/!NotAdopted/MessagePopup/MsgPopup.rc b/plugins/!NotAdopted/MessagePopup/MsgPopup.rc new file mode 100644 index 0000000000..e9e1ca93bd --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/MsgPopup.rc @@ -0,0 +1,134 @@ +//Microsoft Developer Studio generated resource script.
+//
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "resource.h"
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Russian resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+#ifdef _WIN32
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_OPTIONS DIALOGEX 0, 0, 295, 181
+STYLE DS_FIXEDSYS | WS_CHILD | WS_VISIBLE
+EXSTYLE WS_EX_CONTROLPARENT
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "",IDC_ASTERISK_FG,"ColourPicker",WS_GROUP | WS_TABSTOP,
+ 56,16,39,12,WS_EX_NOPARENTNOTIFY
+ GROUPBOX "ASTERISK style",IDC_STATIC,0,1,295,37
+ LTEXT "Background",IDC_STATIC,113,18,40,8
+ LTEXT "Foreground",IDC_STATIC,8,18,37,8
+ CONTROL "",IDC_ASTERISK_BG,"ColourPicker",WS_GROUP | WS_TABSTOP,
+ 161,16,39,12,WS_EX_NOPARENTNOTIFY
+ CONTROL "",IDC_ERROR_FG,"ColourPicker",WS_GROUP | WS_TABSTOP,56,
+ 56,39,12,WS_EX_NOPARENTNOTIFY
+ GROUPBOX "ERROR style",IDC_STATIC,0,41,295,37
+ LTEXT "Background",IDC_STATIC,113,58,40,8
+ LTEXT "Foreground",IDC_STATIC,8,58,37,8
+ CONTROL "",IDC_ERROR_BG,"ColourPicker",WS_GROUP | WS_TABSTOP,161,
+ 56,39,12,WS_EX_NOPARENTNOTIFY
+ CONTROL "",IDC_EXCLAMATION_FG,"ColourPicker",WS_GROUP |
+ WS_TABSTOP,56,96,39,12,WS_EX_NOPARENTNOTIFY
+ GROUPBOX "EXCLAMATION style",IDC_STATIC,0,81,295,37
+ LTEXT "Background",IDC_STATIC,113,98,40,8
+ LTEXT "Foreground",IDC_STATIC,8,98,37,8
+ CONTROL "",IDC_EXCLAMATION_BG,"ColourPicker",WS_GROUP |
+ WS_TABSTOP,161,96,39,12,WS_EX_NOPARENTNOTIFY
+ CONTROL "",IDC_QUESTION_FG,"ColourPicker",WS_GROUP | WS_TABSTOP,
+ 56,136,39,12,WS_EX_NOPARENTNOTIFY
+ GROUPBOX "QUESTION style",IDC_STATIC,0,121,295,37
+ LTEXT "Background",IDC_STATIC,113,138,40,8
+ LTEXT "Foreground",IDC_STATIC,8,138,37,8
+ CONTROL "",IDC_QUESTION_BG,"ColourPicker",WS_GROUP | WS_TABSTOP,
+ 161,136,39,12,WS_EX_NOPARENTNOTIFY
+ PUSHBUTTON "Preview",IDC_PREVIEW,234,162,50,14
+ LTEXT "Timeout",IDC_STATIC,213,18,26,8
+ EDITTEXT IDC_TIMEOUT1,245,15,40,14,ES_AUTOHSCROLL
+ LTEXT "Special values of the ""Timeout"":\n -1 - infinity, 0 - use default timeout value",
+ IDC_STATIC,17,160,137,18
+ LTEXT "Timeout",IDC_STATIC,213,58,26,8
+ EDITTEXT IDC_TIMEOUT2,245,55,40,14,ES_AUTOHSCROLL
+ LTEXT "Timeout",IDC_STATIC,213,98,26,8
+ EDITTEXT IDC_TIMEOUT3,245,95,40,14,ES_AUTOHSCROLL
+ LTEXT "Timeout",IDC_STATIC,213,138,26,8
+ EDITTEXT IDC_TIMEOUT4,245,135,40,14,ES_AUTOHSCROLL
+ CONTROL "Emit a sound",IDC_MESSAGEBEEP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,167,164,57,10
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resrc1.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""resource.h""\r\n"
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_OPTIONS, DIALOG
+ BEGIN
+ RIGHTMARGIN, 222
+ BOTTOMMARGIN, 179
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+#endif // Russian resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/plugins/!NotAdopted/MessagePopup/MsgPopup.txt b/plugins/!NotAdopted/MessagePopup/MsgPopup.txt new file mode 100644 index 0000000000..5b99aed133 --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/MsgPopup.txt @@ -0,0 +1,63 @@ +"MessageBox -> Popup" plugin
+==========================
+
+MsgBox.dll
+version 0.0.0.1
+by StDenis, ICQ#337380210
+
+Miranda 0.3.3+ recommended
+
+License info
+------------
+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.
+
+Description
+-----------
+
+I dunno how MessageBoxes act on you, but I'm tired of them.
+So I make a plugin which replace MessageBoxes with single OK button
+into popups.
+
+*** CAUTION! ***
+This plugin use non-ordinary technique - intercepting of API functions.
+Author made all his best to provide compatibility and stability, but as usual:
+
+THIS STUFF PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+Known bugs & limitations & ToDo's:
+----------------------------------
+ - There's no chance to test this plugin under consumer's version of Windows
+ (Win9x, WinME) carefully. It was tested on only one PC, which may didn't
+ reflect all specificity of these versions of OS.
+
+Thanx to:
+---------
+ I'm glad to say thanks to HeikoH. Who helps me to test this plugin and
+ provide compatibility with consumer's Windoze.
+
+Changelog
+---------
++ - Added,
+- - Fixed,
+* - Changed.
+
+Version 0.0.0.1
+---------------
+ + Initial release.
diff --git a/plugins/!NotAdopted/MessagePopup/common.h b/plugins/!NotAdopted/MessagePopup/common.h new file mode 100644 index 0000000000..2af3d9d964 --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/common.h @@ -0,0 +1,63 @@ +/*
+
+MessagePopup - replacer of MessageBox'es
+
+Copyright 2004 Denis Stanishevskiy
+
+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.
+
+*/
+#include"AggressiveOptimize.h"
+#include <windows.h>
+
+#include "../../SDK/headers_c/newpluginapi.h"
+
+#include "../../SDK/headers_c/m_system.h"
+#include "../../SDK/headers_c/m_database.h"
+#include "../../SDK/headers_c/m_langpack.h"
+#include "../../SDK/headers_c/m_clist.h"
+#include "../../SDK/headers_c/m_options.h"
+#include "../../SDK/headers_c/m_utils.h"
+#include "../../SDK/headers_c/m_popup.h"
+
+#include "options.h"
+#include "resource.h"
+
+#define SERVICENAME "MessagePopup"
+
+struct MSGBOXOPTIONS
+{
+ COLORREF FG[4];
+ COLORREF BG[4];
+ int Timeout[4];
+ BOOL Sound;
+};
+
+extern MSGBOXOPTIONS options;
+extern MSGBOXOPTIONS optionsDefault;
+
+void LoadConfig();
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int __declspec(dllexport) Load( PLUGINLINK *link );
+int __declspec(dllexport) Unload( void );
+__declspec(dllexport) PLUGININFO *MirandaPluginInfo( DWORD dwVersion );
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
diff --git a/plugins/!NotAdopted/MessagePopup/main.cpp b/plugins/!NotAdopted/MessagePopup/main.cpp new file mode 100644 index 0000000000..aab581b57b --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/main.cpp @@ -0,0 +1,272 @@ +/*
+
+MessagePopup - replacer of MessageBox'es
+
+Copyright 2004 Denis Stanishevskiy
+
+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.
+
+*/
+#include "common.h"
+#include <tlhelp32.h>
+#include <dbghelp.h>
+#pragma comment(lib, "dbghelp.lib")
+
+HINSTANCE hInst;
+PLUGINLINK *pluginLink;
+
+HANDLE hHookedOpt;
+HANDLE hHookedInit;
+
+MSGBOXOPTIONS optionsDefault =
+{
+ {0, 0xFFFFFF, 0, 0},
+ {0xBFFFFF, 0x0000FF, 0xB0B0FF, 0xECFF93},
+ {-1,-1,-1,-1},
+ TRUE
+};
+MSGBOXOPTIONS options;
+
+PLUGININFO pluginInfo={
+ sizeof( PLUGININFO ),
+ SERVICENAME,
+ PLUGIN_MAKE_VERSION( 0,0,0,1 ),
+ "This stuff will replace MessageBox'es [whose have only OK button] into Popups",
+ "Denis Stanishevskiy // StDenis",
+ "stdenformiranda(at)fromru(dot)com",
+ "Copyright (c) 2004, Denis Stanishevskiy",
+ "",
+ 0, 0
+};
+
+typedef int (WINAPI *MSGBOXPROC)(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
+
+MSGBOXPROC prevMessageBoxA;
+
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+
+void popupMessage(LPCSTR lpText, LPCSTR lpCaption, UINT uType)
+{
+ POPUPDATAEX ppd;
+ int iIcon;
+ int indx;
+
+ ZeroMemory(&ppd, sizeof(ppd));
+
+ switch(uType & 0xF0)
+ {
+ case MB_ICONHAND:
+ indx = 1;
+ iIcon = OIC_HAND;
+ break;
+ case MB_ICONEXCLAMATION:
+ indx = 2;
+ iIcon = OIC_BANG;
+ break;
+ case MB_ICONQUESTION:
+ indx = 3;
+ iIcon = OIC_QUES;
+ break;
+ default:
+ indx = 0;
+ iIcon = OIC_NOTE;
+ break;
+
+ }
+ ppd.colorBack = options.BG[indx];
+ ppd.colorText = options.FG[indx];
+ ppd.iSeconds = options.Timeout[indx];
+
+ ppd.lchIcon = (HICON)LoadImage(NULL, MAKEINTRESOURCE(iIcon), IMAGE_ICON, SM_CXSMICON, SM_CYSMICON, LR_SHARED);
+ lstrcpy(ppd.lpzContactName, lpCaption);
+ lstrcpy(ppd.lpzText, lpText);
+ CallService(MS_POPUP_ADDPOPUPEX, (WPARAM)&ppd, 0);
+ if(options.Sound)
+ MessageBeep(uType);
+}
+
+int WINAPI newMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
+{
+ if(CallService(MS_POPUP_QUERY, PUQS_GETSTATUS, 0) == CALLSERVICE_NOTFOUND || (uType & 0x0F))
+ return prevMessageBoxA(hWnd, lpText, lpCaption, uType);
+
+ popupMessage(lpText, lpCaption,uType);
+ return IDOK;
+}
+
+BOOL g_HookError = FALSE;
+BOOL g_HookError2 = FALSE;
+int g_mod = 0;
+void HookOnImport(HMODULE hModule, char *lpszImpModName, DWORD lpOrigFunc, DWORD lpNewFunc)
+{
+ ULONG ulSize;
+ PIMAGE_IMPORT_DESCRIPTOR pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR) ImageDirectoryEntryToData(
+ hModule,
+ TRUE,
+ IMAGE_DIRECTORY_ENTRY_IMPORT,
+ &ulSize);
+ if(pImportDesc == NULL) return;
+
+ for(; pImportDesc->Name; pImportDesc++)
+ {
+ char *pszModName = (char *)((PBYTE)hModule + pImportDesc->Name);
+
+ if (lstrcmpiA(lpszImpModName, pszModName) == 0)
+ {
+ PIMAGE_THUNK_DATA pThunk = (PIMAGE_THUNK_DATA)((PBYTE)hModule + pImportDesc->FirstThunk);
+
+ for (; pThunk->u1.Function; pThunk++)
+ {
+ DWORD* ppfn = (DWORD*) &pThunk->u1.Function;
+
+ if(*ppfn == lpOrigFunc)
+ {
+ DWORD oldProtect;
+
+ g_mod++;
+
+ if(!VirtualProtect((LPVOID)ppfn, 4, PAGE_EXECUTE_READWRITE, &oldProtect))
+ {
+ if(!g_HookError)
+ {
+ char buf[200];
+
+ g_HookError = TRUE;
+ wsprintf(buf, "VirtualProtect failed. Code %d\n"
+ "Try to call the author", GetLastError());
+ prevMessageBoxA(0, buf, "MsgBox", MB_OK);
+ }
+ }
+ *(DWORD*)ppfn = lpNewFunc;
+ if(*(DWORD*)ppfn != lpNewFunc)
+ {
+ if(!g_HookError2)
+ {
+ g_HookError2 = TRUE;
+ prevMessageBoxA(0, "Hmm. Something goes wrong. I can't write into the memory.\n"
+ "And as u can c, there are no any exception raised..\n"
+ "Try to call the author", "MsgBox", MB_OK);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+void HookAPI()
+{
+ DWORD lpMessageBox = (DWORD)GetProcAddress(GetModuleHandle("USER32.DLL"), "MessageBoxA");
+ DWORD lpPopupMsgBox = (DWORD)newMessageBoxA;
+
+ prevMessageBoxA = (MSGBOXPROC)lpMessageBox;
+
+ BOOL bFound = FALSE;
+ HANDLE hModuleSnap = NULL;
+ MODULEENTRY32 me32 = {0};
+
+ hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, GetCurrentProcessId());
+ if(hModuleSnap == INVALID_HANDLE_VALUE)
+ return;
+
+ me32.dwSize = sizeof(MODULEENTRY32);
+ if(Module32First(hModuleSnap, &me32))
+ {
+ do
+ {
+ HookOnImport(me32.hModule, "USER32.DLL", lpMessageBox, lpPopupMsgBox);
+ }
+ while (!bFound && Module32Next(hModuleSnap, &me32));
+ }
+ CloseHandle (hModuleSnap);
+
+ return;
+}
+
+int HookedInit(WPARAM wParam, LPARAM lParam)
+{
+ HookAPI();
+
+ return 0;
+}
+
+int HookedOptions(WPARAM wParam, LPARAM lParam)
+{
+ OPTIONSDIALOGPAGE odp;
+
+ ZeroMemory(&odp, sizeof(odp));
+
+ odp.cbSize = sizeof(odp);
+ odp.hInstance = hInst;
+ odp.pszTemplate = MAKEINTRESOURCE(IDD_OPTIONS);
+ odp.pszTitle = Translate("MessagePopup");
+ odp.pszGroup = Translate("Popups");
+ odp.flags = ODPF_BOLDGROUPS;
+ odp.pfnDlgProc = OptionsDlgProc;
+ CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp);
+
+ return 0;
+}
+
+void LoadConfig()
+{
+ char *szNameFG = "FGx";
+ char *szNameBG = "BGx";
+ char *szNameTO = "TOx";
+ int indx;
+
+ for(indx = 0; indx < 4; indx++)
+ {
+ szNameFG[2] = szNameBG[2] = szNameTO[2] = (char)(indx + '0');
+ options.FG[indx] = DBGetContactSettingDword(NULL, SERVICENAME, szNameFG, optionsDefault.FG[indx]);
+ options.BG[indx] = DBGetContactSettingDword(NULL, SERVICENAME, szNameBG, optionsDefault.BG[indx]);
+ options.Timeout[indx] = DBGetContactSettingDword(NULL, SERVICENAME, szNameTO, (DWORD)optionsDefault.Timeout[indx]);
+ }
+ options.Sound = DBGetContactSettingByte(NULL, SERVICENAME, "Sound", (DWORD)optionsDefault.Sound);
+
+}
+int __declspec(dllexport) Load(PLUGINLINK *link)
+{
+ pluginLink=link;
+
+ hHookedInit = HookEvent(ME_SYSTEM_MODULESLOADED, HookedInit);
+ hHookedOpt = HookEvent(ME_OPT_INITIALISE, HookedOptions);
+
+ LoadConfig();
+
+ return 0;
+}
+
+int __declspec(dllexport) Unload(void)
+{
+ UnhookEvent(hHookedOpt);
+ UnhookEvent(hHookedInit);
+
+ return 0;
+}
+
+__declspec(dllexport) PLUGININFO* MirandaPluginInfo(DWORD mirandaVersion)
+{
+ return &pluginInfo;
+}
+
+BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
+{
+ hInst=hinstDLL;
+ return TRUE;
+}
diff --git a/plugins/!NotAdopted/MessagePopup/options.cpp b/plugins/!NotAdopted/MessagePopup/options.cpp new file mode 100644 index 0000000000..28a7e8fd44 --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/options.cpp @@ -0,0 +1,131 @@ +/*
+
+MessagePopup - replacer of MessageBox'es
+
+Copyright 2004 Denis Stanishevskiy
+
+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.
+
+*/
+#include "common.h"
+
+int idOptionControls[4][3] = {
+ IDC_ASTERISK_FG,IDC_ASTERISK_BG,IDC_TIMEOUT1,
+ IDC_ERROR_FG,IDC_ERROR_BG,IDC_TIMEOUT2,
+ IDC_EXCLAMATION_FG,IDC_EXCLAMATION_BG,IDC_TIMEOUT3,
+ IDC_QUESTION_FG,IDC_QUESTION_BG,IDC_TIMEOUT4
+};
+
+static int __inline DBWriteContactSettingDwordDef(HANDLE hContact,const char *szModule,const char *szSetting,DWORD val, DWORD defValue)
+{
+ if(val == DBGetContactSettingDword(hContact, szModule, szSetting, defValue))
+ return 0;
+ else
+ return DBWriteContactSettingDword(hContact, szModule, szSetting, val);
+}
+
+BOOL CALLBACK OptionsDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ {
+ int indx;
+
+ TranslateDialogDefault(hWnd);
+ for(indx = 0; indx < 4; indx++)
+ {
+ SendDlgItemMessage(hWnd, idOptionControls[indx][0], CPM_SETCOLOUR, 0, options.FG[indx]);
+ SendDlgItemMessage(hWnd, idOptionControls[indx][1], CPM_SETCOLOUR, 0, options.BG[indx]);
+ SetDlgItemInt(hWnd, idOptionControls[indx][2], options.Timeout[indx], TRUE);
+ }
+ CheckDlgButton(hWnd, IDC_MESSAGEBEEP, options.Sound?BST_CHECKED:BST_UNCHECKED);
+ return TRUE;
+ }
+ case WM_COMMAND:
+ {
+ int indx, value;
+ BOOL Translated;
+ if(LOWORD(wParam) == IDC_PREVIEW)
+ {
+ MessageBoxA(0, Translate("Message with question"), Translate(SERVICENAME " - demo"), MB_ICONQUESTION);
+ MessageBoxA(0, Translate("Message with exclamation"), Translate(SERVICENAME " - demo"), MB_ICONEXCLAMATION);
+ MessageBoxA(0, Translate("Message with error"), Translate(SERVICENAME " - demo"), MB_ICONSTOP);
+ MessageBoxA(0, Translate("Message with asterisk"), Translate(SERVICENAME " - demo"), MB_ICONASTERISK);
+
+ return FALSE;
+ }
+ if(LOWORD(wParam) == IDC_MESSAGEBEEP)
+ {
+ options.Sound = IsDlgButtonChecked(hWnd, IDC_MESSAGEBEEP) == BST_CHECKED;
+ }
+ else
+ for(indx = 0; indx < 4; indx++)
+ {
+ if(LOWORD(wParam) == idOptionControls[indx][0])
+ {
+ if(HIWORD(wParam) != CPN_COLOURCHANGED) return FALSE;
+ options.FG[indx] = SendDlgItemMessage(hWnd, LOWORD(wParam), CPM_GETCOLOUR, 0, 0);
+ }
+ else
+ if(LOWORD(wParam) == idOptionControls[indx][1])
+ {
+ if(HIWORD(wParam) != CPN_COLOURCHANGED) return FALSE;
+ options.BG[indx] = SendDlgItemMessage(hWnd, LOWORD(wParam), CPM_GETCOLOUR, 0, 0);
+ }
+ else
+ if(LOWORD(wParam) == idOptionControls[indx][2])
+ {
+ if(HIWORD(wParam) != EN_CHANGE) return FALSE;
+ if((HWND)lParam != GetFocus()) return FALSE;
+
+ value = (DWORD)GetDlgItemInt(hWnd, LOWORD(wParam), &Translated, TRUE);
+ if(Translated) options.Timeout[indx] = value;
+ }
+ }
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0,0);
+ break;
+ }
+ case WM_NOTIFY:
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case PSN_RESET:
+ LoadConfig();
+ return FALSE;
+
+ case PSN_APPLY:
+ {
+ char *szNameFG = "FGx";
+ char *szNameBG = "BGx";
+ char *szNameTO = "TOx";
+ int indx;
+
+ for(indx = 0; indx < 4; indx++)
+ {
+ szNameFG[2] = szNameBG[2] = szNameTO[2] = (char)(indx + '0');
+
+ DBWriteContactSettingDwordDef(NULL, SERVICENAME, szNameFG, options.FG[indx], optionsDefault.FG[indx]);
+ DBWriteContactSettingDwordDef(NULL, SERVICENAME, szNameBG, options.BG[indx], optionsDefault.BG[indx]);
+ DBWriteContactSettingDwordDef(NULL, SERVICENAME, szNameTO, options.Timeout[indx], (DWORD)optionsDefault.Timeout[indx]);
+ }
+ DBWriteContactSettingDwordDef(NULL,SERVICENAME,"Sound",options.Sound,optionsDefault.Sound);
+
+ break;
+ }
+ }
+ break;
+ }
+ return FALSE;
+}
diff --git a/plugins/!NotAdopted/MessagePopup/options.h b/plugins/!NotAdopted/MessagePopup/options.h new file mode 100644 index 0000000000..4d139d814f --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/options.h @@ -0,0 +1,22 @@ +/*
+
+MessagePopup - replacer of MessageBox'es
+
+Copyright 2004 Denis Stanishevskiy
+
+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.
+
+*/
+BOOL CALLBACK OptionsDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
diff --git a/plugins/!NotAdopted/MessagePopup/resource.h b/plugins/!NotAdopted/MessagePopup/resource.h new file mode 100644 index 0000000000..27e128723b --- /dev/null +++ b/plugins/!NotAdopted/MessagePopup/resource.h @@ -0,0 +1,34 @@ +//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by MsgBox.rc
+//
+#define IDD_OPTIONS 101
+
+#define IDC_ASTERISK_BG 101
+#define IDC_ERROR_FG 102
+#define IDC_ERROR_BG 103
+#define IDC_EXCLAMATION_FG 104
+#define IDC_EXCLAMATION_BG 105
+#define IDC_QUESTION_FG 106
+#define IDC_QUESTION_BG 107
+#define IDC_ASTERISK_FG 108
+#define IDC_PREVIEW 109
+
+#define IDC_TIMEOUT1 1000
+#define IDC_TIMEOUT2 1001
+#define IDC_TIMEOUT3 1002
+#define IDC_TIMEOUT4 1003
+
+#define IDC_MESSAGEBEEP 1004
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC 1
+#define _APS_NEXT_RESOURCE_VALUE 135
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1004
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
|