瀏覽代碼

- global key changes
- fixed issue with window coming open blank

git-svn-id: svn://svn.code.sf.net/p/ditto-cp/code/trunk@578 595ec19a-5cb4-439b-94a8-42fb3063c22c

sabrogden 14 年之前
父節點
當前提交
55379efd9b
共有 28 個文件被更改,包括 1008 次插入174 次删除
  1. 3 21
      CP_Main.cpp
  2. 0 1
      CP_Main.h
  3. 3 1
      CP_Main.rc
  4. 2 0
      CP_Main.vcxproj
  5. 786 0
      CP_Main.vcxproj.filters
  6. 9 9
      CP_Main_10.sln
  7. 1 1
      Clip.cpp
  8. 4 2
      CopyProperties.cpp
  9. 2 2
      CopyThread.cpp
  10. 1 6
      DittoSetup/BuildDitto.bld
  11. 22 21
      GlobalClips.cpp
  12. 5 1
      GlobalClips.h
  13. 1 1
      HotKeys.cpp
  14. 47 39
      MainFrm.cpp
  15. 3 10
      MainFrm.h
  16. 2 1
      Misc.cpp
  17. 2 2
      Misc.h
  18. 48 32
      OptionsSheet.cpp
  19. 8 1
      OptionsSheet.h
  20. 1 1
      ProcessPaste.cpp
  21. 2 5
      QPasteWnd.cpp
  22. 14 12
      QPasteWndThread.cpp
  23. 4 4
      QPasteWndThread.h
  24. 3 0
      Resource.h
  25. 23 0
      ShowTaskBarIcon.cpp
  26. 11 0
      ShowTaskBarIcon.h
  27. 1 1
      ToolTipEx.cpp
  28. 二進制
      res/DittoNew.ico

+ 3 - 21
CP_Main.cpp

@@ -14,6 +14,7 @@
 #include "DittoCopyBuffer.h"
 #include "SendKeys.h"
 #include "MainTableFunctions.h"
+#include "ShowTaskBarIcon.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -811,7 +812,7 @@ bool CCP_MainApp::ImportClips(HWND hWnd)
 		CClip_ImportExport clip;
 		if(clip.ImportFromSqliteDB(db, true, false))
 		{
-			CShowMainFrame Show;
+			CShowTaskBarIcon show;
 
 			CString cs;
 			
@@ -825,7 +826,7 @@ bool CCP_MainApp::ImportClips(HWND hWnd)
 		}
 		else
 		{
-			CShowMainFrame Show;
+			CShowTaskBarIcon show;
 			MessageBox(hWnd, theApp.m_Language.GetString("Error_Importing", "Error importing exported clip"), _T("Ditto"), MB_OK);
 		}
 	}
@@ -899,25 +900,6 @@ bool CCP_MainApp::EditItems(CClipIDs &Ids, bool bShowError)
 	return true;
 }
 
-int CCP_MainApp::ShowOptionsDlg()
-{
-	static bool bShowingOptions = false;
-	int nRet = IDABORT;
-
-	if(bShowingOptions == false)
-	{
-		bShowingOptions = true;
-
-		CShowMainFrame Show;
-		COptionsSheet Sheet(_T(""), m_pMainFrame);
-		INT_PTR nRet = Sheet.DoModal();
-		
-		bShowingOptions = false;
-	}
-
-	return nRet;
-}
-
 void CCP_MainApp::PumpMessageEx(HWND hWnd)
 {
 	MSG KeyboardMsg;

+ 0 - 1
CP_Main.h

@@ -85,7 +85,6 @@ public:
 	bool ToggleConnectCV();
 	void UpdateMenuConnectCV(CMenu* pMenu, UINT nMenuID);
 	bool ImportClips(HWND hWnd);
-	int ShowOptionsDlg();
 	void LoadGlobalClips();
 
 	void OnDeleteID(long lID);

+ 3 - 1
CP_Main.rc

@@ -723,7 +723,9 @@ CAPTION "Global Hot Keys"
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     PUSHBUTTON      "Close",IDCANCEL,312,181,50,14
-    CONTROL         "",IDC_LIST2,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,355,166
+    CONTROL         "",IDC_LIST2,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,31,355,142
+    PUSHBUTTON      "Refresh",IDC_BUTTON_REFRESH,7,7,34,15
+    PUSHBUTTON      "Properties",IDC_BUTTON_PROPERTIES,43,7,34,15
 END
 
 

+ 2 - 0
CP_Main.vcxproj

@@ -553,6 +553,7 @@
     <ClCompile Include="QPasteWndThread.cpp" />
     <ClCompile Include="Shared\TextConvert.cpp" />
     <ClCompile Include="Shared\Tokenizer.cpp" />
+    <ClCompile Include="ShowTaskBarIcon.cpp" />
     <ClCompile Include="sqlite\CppSQLite3.cpp">
       <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -1754,6 +1755,7 @@
     <ClInclude Include="SearchEditBox.h" />
     <ClInclude Include="Shared\TextConvert.h" />
     <ClInclude Include="Shared\Tokenizer.h" />
+    <ClInclude Include="ShowTaskBarIcon.h" />
     <ClInclude Include="sqlite\sqlite3.h" />
     <ClInclude Include="sqlite\sqlite3ext.h" />
     <ClInclude Include="ToolTipEx.h" />

+ 786 - 0
CP_Main.vcxproj.filters

@@ -0,0 +1,786 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="sqlite\CppSQLite3.cpp">
+      <Filter>sqlite</Filter>
+    </ClCompile>
+    <ClCompile Include="sqlite\shell.c">
+      <Filter>sqlite</Filter>
+    </ClCompile>
+    <ClCompile Include="sqlite\sqlite3.c">
+      <Filter>sqlite</Filter>
+    </ClCompile>
+    <ClCompile Include="ClipboardSaveRestore.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Clip_ImportExport.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Clip.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Client.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="CF_UnicodeTextAggregator.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="CF_TextAggregator.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="CF_HDropAggregator.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="BitmapHelper.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="AutoSendToClientThread.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="AlphaBlend.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="AccessToSqlite.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="AddType.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Accels.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="About.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="ClipboardViewer.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="ClipFormatQListCtrl.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="ClipIds.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\External\ColourPicker.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\External\ColourPopup.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="CopyProperties.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="CopyThread.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="CP_Main.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Crc32Dynamic.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="DatabaseUtilities.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="DialogResizer.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="DittoAddins.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="DittoCopyBuffer.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="DittoRulerRichEditCtrl.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="EditFrameWnd.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="ExternalWindowTracker.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="FileRecieve.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="FileSend.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="FileTransferProgressDlg.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\FontComboBox.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="FormattedTextDraw.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="FriendDetails.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="GroupCombo.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="GroupName.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="GroupStatic.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="GroupTree.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="HListBox.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="HTMLFormatAggregator.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="HotKeys.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="HyperLink.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="InternetUpdate.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="MainFrm.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="MainFrmThread.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="MainTableFunctions.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="MessagePumpThread.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="MoveToGroupDlg.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="MultiLanguage.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="NumberEdit.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OleClipSource.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionFriends.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Options.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionsCopyBuffers.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionsGeneral.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionsKeyBoard.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionsQuickPaste.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionsSheet.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionsStats.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="OptionsTypes.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Path.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="PerfTimer.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Popup.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="ProcessPaste.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="ProgressWnd.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="QListCtrl.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="QPasteWnd.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="QPasteWndThread.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="QuickPaste.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RecieveSocket.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RichEditCtrlEx.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RichTextAggregator.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\RRECRuler.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\RRECToolbar.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\RulerRichEdit.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\RulerRichEditCtrl.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="SaveAnimation.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="SearchEditBox.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="SendKeys.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="SendSocket.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Server.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\SizeComboBox.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="StdAfx.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\StdGrfx.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\External\StdioFileEx.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="SystemTray.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="TabCtrl.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Shared\TextConvert.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="RulerRichEditCtrl\TextFile\TextFile.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Theme.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Shared\Tokenizer.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="ToolTipEx.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="WildCardMatch.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="WndEx.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="DittoAddin.cpp">
+      <Filter>header</Filter>
+    </ClCompile>
+    <ClCompile Include="DittoWindow.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="EditWnd.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="EventThread.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="FormatSQL.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="Misc.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+    <ClCompile Include="GlobalClips.cpp" />
+    <ClCompile Include="ShowTaskBarIcon.cpp">
+      <Filter>source</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="sqlite\CppSQLite3.h">
+      <Filter>sqlite</Filter>
+    </ClInclude>
+    <ClInclude Include="sqlite\sqlite3.h">
+      <Filter>sqlite</Filter>
+    </ClInclude>
+    <ClInclude Include="sqlite\sqlite3ext.h">
+      <Filter>sqlite</Filter>
+    </ClInclude>
+    <ClInclude Include="zlib\zlib.h">
+      <Filter>zlib</Filter>
+    </ClInclude>
+    <ClInclude Include="zlib\zconf.h">
+      <Filter>zlib</Filter>
+    </ClInclude>
+    <ClInclude Include="About.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Accels.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="AccessToSqlite.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="AddType.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="AlphaBlend.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ArrayEx.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="AutoSendToClientThread.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="BitmapHelper.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="CF_HDropAggregator.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="CF_TextAggregator.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="CF_UnicodeTextAggregator.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Client.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Clip.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Clip_ImportExport.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ClipboardSaveRestore.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ClipboardViewer.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ClipFormatQListCtrl.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ClipIds.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\External\ColourPicker.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\External\ColourPopup.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="CopyProperties.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="CopyThread.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="CP_Main.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Crc32Dynamic.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="DatabaseUtilities.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="DialogResizer.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="DittoAddin.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="DittoAddins.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="DittoCopyBuffer.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Shared\DittoDefines.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="DittoRulerRichEditCtrl.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="DittoWindow.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="EditFrameWnd.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="EditWnd.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="EventThread.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ExternalWindowTracker.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="FileRecieve.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="FileSend.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="FileTransferProgressDlg.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\FontComboBox.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="FormatSQL.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="FormattedTextDraw.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="FriendDetails.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="GroupCombo.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="GroupName.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="GroupStatic.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="GroupTree.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="HListBox.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="HotKeys.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="HTMLFormatAggregator.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="HyperLink.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Shared\IAddinExports.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Shared\IClip.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="IClipAggregator.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\ids.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="InternetUpdate.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="MainFrm.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="MainFrmThread.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="MainTableFunctions.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="memdc.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="MessagePumpThread.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Misc.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="MoveToGroupDlg.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="MultiLanguage.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="NumberEdit.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OleClipSource.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionFriends.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Options.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionsCopyBuffers.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionsGeneral.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionsKeyBoard.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionsQuickPaste.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionsSheet.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionsStats.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="OptionsTypes.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Path.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="PerfTimer.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Popup.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ProcessPaste.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ProgressWnd.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="QListCtrl.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="QPasteWnd.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="QPasteWndThread.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="QuickPaste.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RecieveSocket.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Resource.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RichEditCtrlEx.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RichTextAggregator.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\RRECRuler.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\RRECToolbar.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\RulerRichEdit.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\RulerRichEditCtrl.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="SaveAnimation.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="SearchEditBox.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="SendKeys.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="SendSocket.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Server.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ServerDefines.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\SizeComboBox.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="StdAfx.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\StdGrfx.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\External\StdioFileEx.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="SystemTray.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="TabCtrl.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Shared\TextConvert.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="RulerRichEditCtrl\TextFile\TextFile.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Theme.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="Shared\Tokenizer.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="ToolTipEx.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="UnicodeMacros.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="WildCardMatch.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="WndEx.h">
+      <Filter>header</Filter>
+    </ClInclude>
+    <ClInclude Include="TinyXml\tinyxml.h">
+      <Filter>tineyxml</Filter>
+    </ClInclude>
+    <ClInclude Include="TinyXml\tinystr.h">
+      <Filter>tineyxml</Filter>
+    </ClInclude>
+    <ClInclude Include="GlobalClips.h" />
+    <ClInclude Include="ShowTaskBarIcon.h">
+      <Filter>header</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="CP_Main.rc">
+      <Filter>res</Filter>
+    </ResourceCompile>
+    <ResourceCompile Include="RulerRichEditCtrl\RulerRichEditCtrl.rc">
+      <Filter>res</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="RulerRichEditCtrl\toolbar.bmp">
+      <Filter>res</Filter>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="ReadMe.txt" />
+    <None Include="res\back.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\back1.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\back2.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\bitmap1.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\bmp00001.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\bmp00002.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\bmp00003.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\closed_f.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\CP_Main.ico">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\CP_Main.rc2">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\CP_MainDoc.ico">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\Ditto.ico">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\Ditto_NoCopyCb.ico">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\FILECOPY.AVI">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\mainfram.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\open_fol.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\Toolbar.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\toolbar1.bmp">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\DittoNew.ico">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\Ditto2.ico">
+      <Filter>res</Filter>
+    </None>
+    <None Include="res\Ditto2_NoCopyCb.ico">
+      <Filter>res</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="sqlite">
+      <UniqueIdentifier>{eaee7285-53ac-40cb-bbb1-ad1b2d062d76}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="zlib">
+      <UniqueIdentifier>{617bf80c-2d1a-4899-96c0-94794c119fa9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="source">
+      <UniqueIdentifier>{1214d206-a595-4227-bc65-0bec059e6cca}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="header">
+      <UniqueIdentifier>{d16d4a45-7a56-46ac-a68b-9028c1ea8cd5}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="res">
+      <UniqueIdentifier>{28deb94a-a909-4235-b9b6-b51408b11b6b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="tineyxml">
+      <UniqueIdentifier>{08b8a44d-887f-48e0-8396-e9e9f573f337}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>

+ 9 - 9
CP_Main_10.sln

@@ -1,6 +1,6 @@
 Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CP_Main", "CP_Main.vcxproj", "{86BF16D0-77B0-8955-B18E-4F78C3083D5E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CP_Main", "CP_Main.vcxproj", "{D90F6EAF-861C-0A85-1208-EF129A0A92E9}"
 	ProjectSection(ProjectDependencies) = postProject
 		{F08A8736-1116-4166-AF88-CF533E41E958} = {F08A8736-1116-4166-AF88-CF533E41E958}
 		{CF8F6379-5340-4494-8E59-2807ADF37B95} = {CF8F6379-5340-4494-8E59-2807ADF37B95}
@@ -21,14 +21,14 @@ Global
 		Release|x64 = Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Debug|Win32.Build.0 = Debug|Win32
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Debug|x64.ActiveCfg = Debug|x64
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Debug|x64.Build.0 = Debug|x64
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Release|Win32.ActiveCfg = Release|Win32
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Release|Win32.Build.0 = Release|Win32
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Release|x64.ActiveCfg = Release|x64
-		{86BF16D0-77B0-8955-B18E-4F78C3083D5E}.Release|x64.Build.0 = Release|x64
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Debug|Win32.Build.0 = Debug|Win32
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Debug|x64.ActiveCfg = Debug|x64
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Debug|x64.Build.0 = Debug|x64
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Release|Win32.ActiveCfg = Release|Win32
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Release|Win32.Build.0 = Release|Win32
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Release|x64.ActiveCfg = Release|x64
+		{D90F6EAF-861C-0A85-1208-EF129A0A92E9}.Release|x64.Build.0 = Release|x64
 		{CF8F6379-5340-4494-8E59-2807ADF37B95}.Debug|Win32.ActiveCfg = Debug|Win32
 		{CF8F6379-5340-4494-8E59-2807ADF37B95}.Debug|Win32.Build.0 = Debug|Win32
 		{CF8F6379-5340-4494-8E59-2807ADF37B95}.Debug|x64.ActiveCfg = Debug|x64

+ 1 - 1
Clip.cpp

@@ -905,7 +905,7 @@ CClipList::~CClipList()
 	while(GetCount())
 	{
 		pClip = RemoveHead();
-		DELETE_PTR(pClip);
+		delete pClip;
 	}
 }
 

+ 4 - 2
CopyProperties.cpp

@@ -226,8 +226,10 @@ void CCopyProperties::OnOK()
 
 					if(CheckGlobalHotKey(clip) == FALSE)
 					{
-						MessageBox(_T("Error registering global hot key"));
-						return;
+						if(MessageBox(_T("Error registering global hot key\n\nContinue?"), _T(""), MB_YESNO|MB_ICONWARNING) == IDNO)
+						{
+							return;
+						}
 					}
 				}
 			}

+ 2 - 2
CopyThread.cpp

@@ -29,7 +29,7 @@ CCopyThread::~CCopyThread()
 {
 	m_LocalConfig.DeleteTypes();
 	m_SharedConfig.DeleteTypes();
-	DELETE_PTR(m_pClipboardViewer);
+	delete m_pClipboardViewer;
 }
 
 BOOL CCopyThread::InitInstance()
@@ -195,7 +195,7 @@ void CCopyThread::SetSupportedTypes( CClipTypes* pTypes )
 
 	if(m_SharedConfig.m_pSupportedTypes)
 	{
-		DELETE_PTR(m_SharedConfig.m_pSupportedTypes);
+		delete m_SharedConfig.m_pSupportedTypes;
 	}
 
 	m_SharedConfig.m_pSupportedTypes = pTypes;

+ 1 - 6
DittoSetup/BuildDitto.bld

@@ -206,12 +206,7 @@ DittoSetup*]]></X>
 			<name>Zip Debug Files</name>
 		</step>
 		<step action='FTP'>
-			<Ext><![CDATA[DittoPortable_%versionFileName%.zip
-DittoPortable_64ibt_%versionFileName%.zip
-DittoSetup_%versionFileName%.exe
-DittoSetup_64bit_%versionFileName%.exe
-DittoSource_%versionFileName%.zip
-DittoDebug_%versionFileName%.zip]]></Ext>
+			<Ext>*.*</Ext>
 			<Filename>%workDir%\%branch%\DittoSetup\output\</Filename>
 			<Incremental type='11'>-1</Incremental>
 			<Logging type='3'>6</Logging>

+ 22 - 21
GlobalClips.cpp

@@ -29,32 +29,28 @@ void GlobalClips::DoDataExchange(CDataExchange* pDX)
 
 
 BEGIN_MESSAGE_MAP(GlobalClips, CDialogEx)
-	ON_WM_DESTROY()
 	ON_WM_CLOSE()
 	ON_WM_SIZE()
+	ON_BN_CLICKED(IDC_BUTTON_REFRESH, &GlobalClips::OnBnClickedButtonRefresh)
 END_MESSAGE_MAP()
 
 BOOL GlobalClips::OnInitDialog()
 {
 	CDialogEx::OnInitDialog();
 
-	ModifyStyle(0,WS_SYSMENU);
-
-	
-
-	this->SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), TRUE);
-
-	// 0 in WPARAM is 'small version'
-//	::SendMessage(GetSafeHwnd(), WM_SETICON, 0, (LPARAM)hIcon);
-
-
 	m_Resize.SetParent(m_hWnd);
 	m_Resize.AddControl(IDC_LIST2, DR_SizeHeight | DR_SizeWidth);
 	m_Resize.AddControl(IDCANCEL, DR_MoveTop | DR_MoveLeft);
 
-
 	InitListCtrlCols();
 
+	LoadItems();
+
+	return TRUE;
+}
+
+void GlobalClips::LoadItems()
+{
 	m_List.DeleteAllItems();
 
 	// Use the LV_ITEM structure to insert the items
@@ -78,6 +74,11 @@ BOOL GlobalClips::OnInitDialog()
 
 		strItem = pHotKey->m_Name;
 
+		if(pHotKey->m_clipId > 0)
+		{
+			strItem.Insert(0, _T("(Clip) "));
+		}
+
 		lvi.iSubItem = 0;
 		lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
 		m_List.InsertItem(&lvi);
@@ -95,8 +96,6 @@ BOOL GlobalClips::OnInitDialog()
 
 		row++;
 	}
-
-	return TRUE;
 }
 
 void GlobalClips::InitListCtrlCols()
@@ -113,19 +112,16 @@ void GlobalClips::SetNotifyWnd(HWND hWnd)
 	m_hWndParent = hWnd;
 }
 
-void GlobalClips::OnDestroy()
+void GlobalClips::OnClose()
 {
-	CDialogEx::OnDestroy();
+	::SendMessage(m_hWndParent, WM_GLOBAL_CLIPS_CLOSED, 0, 0);
 
-	
+	CDialogEx::OnClose();
 }
 
-
-void GlobalClips::OnClose()
+void GlobalClips::OnCancel()
 {
 	::SendMessage(m_hWndParent, WM_GLOBAL_CLIPS_CLOSED, 0, 0);
-
-	CDialogEx::OnClose();
 }
 
 
@@ -135,3 +131,8 @@ void GlobalClips::OnSize(UINT nType, int cx, int cy)
 
 	m_Resize.MoveControls(CSize(cx, cy));
 }
+
+void GlobalClips::OnBnClickedButtonRefresh()
+{
+	LoadItems();
+}

+ 5 - 1
GlobalClips.h

@@ -1,6 +1,7 @@
 #pragma once
 
 #include "DialogResizer.h"
+#include "ShowTaskBarIcon.h"
 // GlobalClips dialog
 
 class GlobalClips : public CDialogEx
@@ -17,16 +18,19 @@ public:
 protected:
 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
 	void InitListCtrlCols();
+	virtual void OnCancel();
+	void LoadItems();
 
 	CDialogResizer m_Resize;
 	CListCtrl	m_List;
 	HWND m_hWndParent;
+	CShowTaskBarIcon m_showTaskbar;
 	DECLARE_MESSAGE_MAP()
 public:
 	void SetNotifyWnd(HWND hWnd);
 
 	virtual BOOL OnInitDialog();
-	afx_msg void OnDestroy();
 	afx_msg void OnClose();
 	afx_msg void OnSize(UINT nType, int cx, int cy);
+	afx_msg void OnBnClickedButtonRefresh();
 };

+ 1 - 1
HotKeys.cpp

@@ -92,7 +92,7 @@ BOOL CHotKey::ValidateHotKey(DWORD dwHotKey)
 	ATOM id = ::GlobalAddAtom(_T("HK_VALIDATE"));
 	BOOL bResult = ::RegisterHotKey( g_HotKeys.m_hWnd,
 		id,
-		GetModifier(dwHotKey),
+		GetModifier(HIBYTE(dwHotKey)),
 		LOBYTE(dwHotKey) );
 
 	if(bResult)

+ 47 - 39
MainFrm.cpp

@@ -16,6 +16,7 @@
 #include "DittoCopyBuffer.h"
 #include "HotKeys.h"
 #include "GlobalClips.h"
+#include "OptionsSheet.h"
 
 #ifdef _DEBUG
     #define new DEBUG_NEW
@@ -27,32 +28,6 @@
 #define MYWM_NOTIFYICON (WM_USER+1)
 
 
-bool CShowMainFrame::m_bShowingMainFrame = false;
-
-CShowMainFrame::CShowMainFrame(): 
-	m_bHideMainFrameOnExit(false), 
-	m_hWnd(NULL)
-{
-    if(m_bShowingMainFrame == false)
-    {
-        theApp.m_pMainFrame->m_TrayIcon.MaximiseFromTray(theApp.m_pMainFrame);
-        m_bHideMainFrameOnExit = true;
-        m_bShowingMainFrame = true;
-    }
-
-    m_hWnd = theApp.m_pMainFrame->GetSafeHwnd();
-}
-
-CShowMainFrame::~CShowMainFrame()
-{
-    if(m_bHideMainFrameOnExit && m_hWnd && ::IsWindow(m_hWnd))
-    {
-        theApp.m_pMainFrame->m_TrayIcon.MinimiseToTray(theApp.m_pMainFrame);
-        m_bShowingMainFrame = false;
-    }
-}
-
-
 IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
 
 	BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
@@ -83,6 +58,8 @@ IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)
 	ON_MESSAGE(WM_TRAY_MENU_MOUSE_MOVE, OnSystemTrayMouseMove)
 	ON_COMMAND(ID_FIRST_GLOBALHOTKEYS, &CMainFrame::OnFirstGlobalhotkeys)
 	ON_MESSAGE(WM_GLOBAL_CLIPS_CLOSED, OnGlobalClipsClosed)
+	ON_MESSAGE(WM_OPTIONS_CLOSED, OnOptionsClosed)
+	ON_MESSAGE(WM_SHOW_OPTIONS, OnShowOptions)
 	END_MESSAGE_MAP()
 
 	static UINT indicators[] = 
@@ -102,6 +79,7 @@ CMainFrame::CMainFrame()
     m_bMovedSelectionMoveKeyState = false;
     m_keyModifiersTimerCount = 0;
 	m_pGlobalClips = NULL;
+	m_pOptions = NULL;
 }
 
 CMainFrame::~CMainFrame()
@@ -235,10 +213,7 @@ BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
 // CMainFrame message handlers
 
 
-void CMainFrame::OnFirstOption()
-{
-    theApp.ShowOptionsDlg();
-}
+
 
 void CMainFrame::OnFirstExit()
 {
@@ -956,28 +931,61 @@ void CMainFrame::OnFirstNewclip()
     theApp.EditItems(IDs, true);
 }
 
-void CMainFrame::OnFirstGlobalhotkeys()
+void CMainFrame::OnFirstOption()
 {
-	if(m_pGlobalClips != NULL && ::IsWindow(m_pGlobalClips->m_hWnd) == FALSE)
+	if(m_pOptions != NULL)
 	{
-		delete m_pGlobalClips;
-		m_pGlobalClips = NULL;
+		::SetForegroundWindow(m_pOptions->m_hWnd);
 	}
-	if(m_pGlobalClips == NULL)
+	else
 	{
-		m_pGlobalClips = new GlobalClips();
+		m_pOptions = new COptionsSheet(_T(""));
+
+		if(m_pOptions != NULL)
+		{
+			((COptionsSheet*)m_pOptions)->SetNotifyWnd(m_hWnd);
+			m_pOptions->Create();
+			m_pOptions->ShowWindow(SW_SHOW);
+		}
 	}
+}
 
+void CMainFrame::OnFirstGlobalhotkeys()
+{
 	if(m_pGlobalClips != NULL)
 	{
-		((GlobalClips*)m_pGlobalClips)->SetNotifyWnd(m_hWnd);
-		m_pGlobalClips->Create(IDD_GLOBAL_CLIPS, NULL);
-		m_pGlobalClips->ShowWindow(SW_SHOW);
+		::SetForegroundWindow(m_pGlobalClips->m_hWnd);
 	}
+	else
+	{
+		m_pGlobalClips = new GlobalClips();
+
+		if(m_pGlobalClips != NULL)
+		{
+			((GlobalClips*)m_pGlobalClips)->SetNotifyWnd(m_hWnd);
+			m_pGlobalClips->Create(IDD_GLOBAL_CLIPS, NULL);
+			m_pGlobalClips->ShowWindow(SW_SHOW);
+		}
+	}
+}
+
+LRESULT CMainFrame::OnShowOptions(WPARAM wParam, LPARAM lParam)
+{
+	OnFirstOption();
+	return 0;
+}
+
+LRESULT CMainFrame::OnOptionsClosed(WPARAM wParam, LPARAM lParam)
+{
+	delete m_pOptions;
+	m_pOptions = NULL;
+
+	return 0;
 }
 
 LRESULT CMainFrame::OnGlobalClipsClosed(WPARAM wParam, LPARAM lParam)
 {
+	delete m_pGlobalClips;
 	m_pGlobalClips = NULL;
 
 	return 0;

+ 3 - 10
MainFrm.h

@@ -62,6 +62,7 @@ public:
     CMainFrmThread m_thread;
 	CClipboardSaveRestore m_textOnlyPaste;
 	CDialog *m_pGlobalClips;
+	CPropertySheet *m_pOptions;
 
     void DoDittoCopyBufferPaste(int nCopyBuffer);
     void DoFirstTenPositionsPaste(int nPos);
@@ -100,6 +101,8 @@ protected:
 	afx_msg LRESULT OnLoadClipOnClipboard(WPARAM wParam, LPARAM lParam);
 	afx_msg LRESULT OnSystemTrayMouseMove(WPARAM wParam, LPARAM lParam);
 	afx_msg LRESULT OnGlobalClipsClosed(WPARAM wParam, LPARAM lParam);
+	afx_msg LRESULT OnOptionsClosed(WPARAM wParam, LPARAM lParam);
+	afx_msg LRESULT OnShowOptions(WPARAM wParam, LPARAM lParam);
 DECLARE_MESSAGE_MAP()public:
     virtual BOOL PreTranslateMessage(MSG *pMsg);
     afx_msg void OnClose();
@@ -108,13 +111,3 @@ DECLARE_MESSAGE_MAP()public:
     afx_msg void OnFirstNewclip();
 	afx_msg void OnFirstGlobalhotkeys();
 };
-
-class CShowMainFrame
-{
-public:
-    CShowMainFrame();
-    ~CShowMainFrame();
-    static bool m_bShowingMainFrame;
-    bool m_bHideMainFrameOnExit;
-    HWND m_hWnd;
-};

+ 2 - 1
Misc.cpp

@@ -643,7 +643,8 @@ long NewGroupID(int parentID, CString text)
 		text.Replace(_T("'"), _T("''"));
 
 		CString cs;
-		cs.Format(_T("insert into Main values(NULL, %d, '%s', 0, %d, 0, 1, %d, '');"),
+
+		cs.Format(_T("insert into Main (lDate, mText, lDontAutoDelete, bIsGroup, lParentID) values(%d, '%s', %d, 1, %d);"),
 							(long)time.GetTime(),
 							text,
 							(long)time.GetTime(),

+ 2 - 2
Misc.h

@@ -12,8 +12,6 @@
 #define ONE_HOUR				3600000
 #define ONE_DAY					86400000
 
-#define DELETE_PTR(ptr) {  if(ptr) {delete ptr; ptr = NULL;}  }
-
 #define CATCH_SQLITE_EXCEPTION		\
 	catch (CppSQLite3Exception& e)	\
     {								\
@@ -114,6 +112,8 @@ CString GetProcessName(HWND hWnd);
 //defined in tray icon #define WM_TRAY_MENU_MOUSE_MOVE	WM_USER + 216
 #define WM_RELOAD_CLIP_ORDER	WM_USER	+ 217
 #define WM_GLOBAL_CLIPS_CLOSED	WM_USER	+ 218
+#define WM_OPTIONS_CLOSED	WM_USER	+ 219
+#define WM_SHOW_OPTIONS	WM_USER	+ 220
 
 #if !defined(_BITSET_)
 #	include <bitset>

+ 48 - 32
OptionsSheet.cpp

@@ -12,6 +12,7 @@
 #include "About.h"
 #include "OptionFriends.h"
 #include "OptionsCopyBuffers.h"
+#include "Misc.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -37,38 +38,14 @@ COptionsSheet::COptionsSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectP
 	m_pAbout = NULL;
 	m_pFriends = NULL;
 	m_pCopyBuffers = NULL;
-}
-
-COptionsSheet::~COptionsSheet()
-{
-	DELETE_PTR(m_pKeyBoardOptions);
-	DELETE_PTR(m_pGeneralOptions);
-	DELETE_PTR(m_pQuickPasteOptions);
-	DELETE_PTR(m_pUtilites);
-	DELETE_PTR(m_pStats);
-	DELETE_PTR(m_pTypes);
-	DELETE_PTR(m_pAbout);
-	DELETE_PTR(m_pFriends);
-	DELETE_PTR(m_pCopyBuffers);
-}
+	m_hWndParent = NULL;
 
-BEGIN_MESSAGE_MAP(COptionsSheet, CPropertySheet)
-	//{{AFX_MSG_MAP(COptionsSheet)
-		// NOTE - the ClassWizard will add and remove mapping macros here.
-	//}}AFX_MSG_MAP
-END_MESSAGE_MAP()
-
-/////////////////////////////////////////////////////////////////////////////
-// COptionsSheet message handlers
-
-INT_PTR COptionsSheet::DoModal() 
-{
 	EnableStackedTabs(TRUE);
 
 	m_pGeneralOptions = new COptionsGeneral;
 	m_pKeyBoardOptions = new COptionsKeyBoard;
 	m_pQuickPasteOptions = new COptionsQuickPaste;
-	
+
 	m_pCopyBuffers = new COptionsCopyBuffers;
 	m_pStats = new COptionsStats;
 	m_pTypes = new COptionsTypes;
@@ -86,19 +63,58 @@ INT_PTR COptionsSheet::DoModal()
 	}
 	AddPage(m_pStats);
 	AddPage(m_pAbout);
-	
-	return CPropertySheet::DoModal();
+}
+
+COptionsSheet::~COptionsSheet()
+{
+	delete m_pKeyBoardOptions;
+	delete m_pGeneralOptions;
+	delete m_pQuickPasteOptions;
+	delete m_pUtilites;
+	delete m_pStats;
+	delete m_pTypes;
+	delete m_pAbout;
+	delete m_pFriends;
+	delete m_pCopyBuffers;
+}
+
+BEGIN_MESSAGE_MAP(COptionsSheet, CPropertySheet)
+	//{{AFX_MSG_MAP(COptionsSheet)
+		// NOTE - the ClassWizard will add and remove mapping macros here.
+	ON_WM_DESTROY()
+	//ON_WM_CLOSE()
+	//}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// COptionsSheet message handlers
+
+void COptionsSheet::OnDestroy()
+{
+	::SendMessage(m_hWndParent, WM_OPTIONS_CLOSED, 0, 0);
+	CPropertySheet::OnDestroy();
+}
+
+void COptionsSheet::SetNotifyWnd(HWND hWnd)
+{
+	m_hWndParent = hWnd;
 }
 
 BOOL COptionsSheet::OnInitDialog() 
 {
-	BOOL bResult = CPropertySheet::OnInitDialog();
-	
+	m_bModeless = FALSE;   
+	m_nFlags |= WF_CONTINUEMODAL;
+
+	BOOL bResult = CPropertySheet::OnInitDialog();
+
 	SetWindowText(_T("Ditto"));
 
 	theApp.m_Language.UpdateOptionsSheet(this);
 
-	::ShowWindow(::GetDlgItem(m_hWnd, ID_APPLY_NOW), SW_HIDE);
-	
+	::ShowWindow(::GetDlgItem(m_hWnd, ID_APPLY_NOW), SW_HIDE);
+
+	m_bModeless = TRUE;
+	m_nFlags &= ~WF_CONTINUEMODAL;
+
 	return bResult;
 }

+ 8 - 1
OptionsSheet.h

@@ -6,6 +6,7 @@
 #endif // _MSC_VER > 1000
 // OptionsSheet.h : header file
 //
+//#include "ShowTaskBarIcon.h"
 
 /////////////////////////////////////////////////////////////////////////////
 // COptionsSheet
@@ -18,6 +19,8 @@ class COptionsSheet : public CPropertySheet
 public:
 	COptionsSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
 
+	void SetNotifyWnd(HWND hWnd);
+
 // Attributes
 public:
 
@@ -28,7 +31,6 @@ public:
 	// ClassWizard generated virtual function overrides
 	//{{AFX_VIRTUAL(COptionsSheet)
 	public:
-	virtual INT_PTR DoModal();
 	virtual BOOL OnInitDialog();
 	//}}AFX_VIRTUAL
 
@@ -39,6 +41,8 @@ public:
 	// Generated message map functions
 protected:
 
+	HWND m_hWndParent;
+
 	CPropertyPage *m_pKeyBoardOptions;
 	CPropertyPage *m_pGeneralOptions;
 	CPropertyPage *m_pQuickPasteOptions;
@@ -49,9 +53,12 @@ protected:
 	CPropertyPage *m_pFriends;
 	CPropertyPage *m_pCopyBuffers;
 
+	//CShowTaskBarIcon m_taskBar;
+
 
 	//{{AFX_MSG(COptionsSheet)
 		// NOTE - the ClassWizard will add and remove member functions here.
+	afx_msg void OnDestroy();
 	//}}AFX_MSG
 	DECLARE_MESSAGE_MAP()
 };

+ 1 - 1
ProcessPaste.cpp

@@ -19,7 +19,7 @@ CProcessPaste::CProcessPaste()
 
 CProcessPaste::~CProcessPaste()
 {	
-	DELETE_PTR(m_pOle);
+	delete m_pOle;
 }
 
 BOOL CProcessPaste::DoPaste()

+ 2 - 5
QPasteWnd.cpp

@@ -422,9 +422,8 @@ BOOL CQPasteWnd::HideQPasteWindow()
 		m_bStopQuery = true;
 	}
 
-    //Reset the flagShell_TrayWnd
     theApp.m_bShowingQuickPaste = false;
-    theApp.m_activeWnd.ReleaseFocus();
+    //theApp.m_activeWnd.ReleaseFocus();
 
     KillTimer(TIMER_FILL_CACHE);
 
@@ -1449,7 +1448,7 @@ void CQPasteWnd::OnMenuPositioningAtpreviousposition()
 
 void CQPasteWnd::OnMenuOptions()
 {
-    theApp.ShowOptionsDlg();
+	theApp.m_pMainFrame->SendMessage(WM_SHOW_OPTIONS, 0, 0);
 }
 
 void CQPasteWnd::OnMenuExitprogram()
@@ -3246,8 +3245,6 @@ LRESULT CQPasteWnd::OnRefeshRow(WPARAM wParam, LPARAM lParam)
 		m_lstHeader.RedrawWindow();
 
 		//Log(_T("End of first load, showing listbox and loading actual count, then accelerators"));
-		m_thread.FireDoQuery();
-		m_thread.FireLoadAccelerators();
 	}
 
     return true;

+ 14 - 12
QPasteWndThread.cpp

@@ -33,8 +33,8 @@ void CQPasteWndThread::OnEvent(int eventId, void *param)
 
     switch((eCQPasteWndThreadEvents)eventId)
     {
-        case DO_QUERY:
-            OnDoQuery(param);
+        case DO_SET_LIST_COUNT:
+            OnSetListCount(param);
             break;
         case LOAD_ACCELERATORS:
             OnLoadAccelerators(param);
@@ -54,7 +54,7 @@ void CQPasteWndThread::OnEvent(int eventId, void *param)
 	Log(StrF(_T("End of OnEvent, eventId: %s, Time: %d(ms)"), EnumName((eCQPasteWndThreadEvents)eventId), length));
 }
 
-void CQPasteWndThread::OnDoQuery(void *param)
+void CQPasteWndThread::OnSetListCount(void *param)
 {
     CQPasteWnd *pasteWnd = (CQPasteWnd*)param;
 
@@ -155,24 +155,26 @@ void CQPasteWndThread::OnLoadItems(void *param)
 					loadCount++;
 				}
 
-				if(clearFirstLoadItem)
-				{
-					ATL::CCritSecLock csLock(pasteWnd->m_CritSection.m_sect);
-
-					pasteWnd->m_loadItems.erase(pasteWnd->m_loadItems.begin());
-				}
-
 				if(firstLoad)
 				{
 					::PostMessage(pasteWnd->m_hWnd, NM_REFRESH_ROW, -2, 0);
 					//allow the next thread message to process, this should be the message to set the list count
-					break;
+
+					OnSetListCount(param);
+					OnLoadAccelerators(param);
 				}
 				else
 				{
 					::PostMessage(pasteWnd->m_hWnd, NM_REFRESH_ROW, -1, 0);
 				}
 
+				if(clearFirstLoadItem)
+				{
+					ATL::CCritSecLock csLock(pasteWnd->m_CritSection.m_sect);
+
+					pasteWnd->m_loadItems.erase(pasteWnd->m_loadItems.begin());
+				}
+
 				Log(StrF(_T("Load items End count = %d, time = %d"), loadCount, GetTickCount() - startTick));
 			}
 			catch (CppSQLite3Exception& e)	\
@@ -270,7 +272,7 @@ CString CQPasteWndThread::EnumName(eCQPasteWndThreadEvents e)
 {
 	switch(e)
 	{
-	case DO_QUERY:
+	case DO_SET_LIST_COUNT:
 		return _T("Load List Count");
 	case LOAD_ACCELERATORS:
 		return _T("Load Accelerators");

+ 4 - 4
QPasteWndThread.h

@@ -10,7 +10,7 @@ public:
 
     enum eCQPasteWndThreadEvents
     {
-		DO_QUERY, 
+		DO_SET_LIST_COUNT, 
 		LOAD_ACCELERATORS, 
 		UNLOAD_ACCELERATORS, 
 		LOAD_ITEMS, 
@@ -20,9 +20,9 @@ public:
 
     };
 
-    void FireDoQuery()
+    void FireSetListCount()
     {
-        FireEvent(DO_QUERY);
+        FireEvent(DO_SET_LIST_COUNT);
     }
     void FireLoadItems(bool firstLoad)
     {
@@ -47,7 +47,7 @@ protected:
     virtual void OnEvent(int eventId, void *param);
     virtual void OnTimeOut(void *param);
 
-    void OnDoQuery(void *param);
+    void OnSetListCount(void *param);
     void OnLoadItems(void *param);
     void OnLoadExtraData(void *param);
     void OnLoadAccelerators(void *param);

+ 3 - 0
Resource.h

@@ -89,8 +89,11 @@
 #define IDC_HIDE_DITO_ON_HOT_KEY        1040
 #define IDC_BUTTON_FONT                 1040
 #define IDC_BUTTON_NEW_GROUP            1040
+#define IDC_BUTTON_REFRESH              1040
 #define IDC_PARSE_EDIT                  1041
 #define IDC_SEND_PASTE_MESSAGE          1041
+#define IDC_BUTTON_REFRESH2             1041
+#define IDC_BUTTON_PROPERTIES           1041
 #define IDC_CHECK1                      1042
 #define IDC_HISTORY_START_TOP           1042
 #define IDC_CHECK_SEND_PASTE            1042

+ 23 - 0
ShowTaskBarIcon.cpp

@@ -0,0 +1,23 @@
+#include "stdafx.h"
+#include "ShowTaskBarIcon.h"
+#include "CP_Main.h"
+
+volatile long CShowTaskBarIcon::m_refCount = 0;
+
+CShowTaskBarIcon::CShowTaskBarIcon(void)
+{
+	theApp.m_pMainFrame->m_TrayIcon.MaximiseFromTray(theApp.m_pMainFrame);
+	m_hWnd = theApp.m_pMainFrame->GetSafeHwnd();
+	::InterlockedIncrement(&m_refCount);
+}
+
+
+CShowTaskBarIcon::~CShowTaskBarIcon(void)
+{
+	::InterlockedDecrement(&m_refCount);
+
+	if(m_hWnd && ::IsWindow(m_hWnd) && m_refCount == 0)
+	{
+		theApp.m_pMainFrame->m_TrayIcon.MinimiseToTray(theApp.m_pMainFrame);
+	}	
+}

+ 11 - 0
ShowTaskBarIcon.h

@@ -0,0 +1,11 @@
+#pragma once
+class CShowTaskBarIcon
+{
+public:
+	CShowTaskBarIcon(void);
+	~CShowTaskBarIcon(void);
+
+	HWND m_hWnd;
+	static volatile long m_refCount;
+};
+

+ 1 - 1
ToolTipEx.cpp

@@ -12,7 +12,7 @@
 #define DELETE_BITMAP	if(m_pBitmap)					\
 {								\
 m_pBitmap->DeleteObject();	\
-DELETE_PTR(m_pBitmap);		\
+delete m_pBitmap;		\
 }
 
 

二進制
res/DittoNew.ico