AddType.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. // AddType.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "cp_main.h"
  5. #include "AddType.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CAddType dialog
  13. CAddType::CAddType(CWnd* pParent /*=NULL*/)
  14. : CDialog(CAddType::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CAddType)
  17. m_eCustomType = _T("");
  18. //}}AFX_DATA_INIT
  19. }
  20. void CAddType::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. //{{AFX_DATA_MAP(CAddType)
  24. DDX_Control(pDX, IDC_LIST1, m_lbDefaultTypes);
  25. DDX_Text(pDX, IDC_EDIT1, m_eCustomType);
  26. DDV_MaxChars(pDX, m_eCustomType, 50);
  27. //}}AFX_DATA_MAP
  28. }
  29. BEGIN_MESSAGE_MAP(CAddType, CDialog)
  30. //{{AFX_MSG_MAP(CAddType)
  31. //}}AFX_MSG_MAP
  32. ON_BN_CLICKED(IDC_RADIO1, &CAddType::OnBnClickedRadio1)
  33. ON_BN_CLICKED(IDC_RADIO2, &CAddType::OnBnClickedRadio2)
  34. ON_BN_CLICKED(IDC_RADIO3, &CAddType::OnBnClickedRadio3)
  35. ON_BN_CLICKED(IDC_ADD_3, &CAddType::OnBnClickedAdd)
  36. ON_LBN_DBLCLK(IDC_LIST1, &CAddType::OnLbnDblclkList)
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CAddType message handlers
  40. BOOL CAddType::OnInitDialog()
  41. {
  42. CDialog::OnInitDialog();
  43. ::CheckDlgButton(m_hWnd, IDC_RADIO2, BST_CHECKED);
  44. OnBnClickedRadio2();
  45. m_lbDefaultTypes.SetFocus();
  46. theApp.m_Language.UpdateOptionSupportedTypesAdd(this);
  47. return FALSE;
  48. }
  49. void CAddType::AddCurrentClipboardTypes()
  50. {
  51. m_lbDefaultTypes.ResetContent();
  52. COleDataObject oleData;
  53. if (!oleData.AttachClipboard())
  54. return;
  55. oleData.BeginEnumFormats();
  56. FORMATETC test;
  57. while (oleData.GetNextFormat(&test))
  58. {
  59. BOOL b = oleData.IsDataAvailable(test.cfFormat);
  60. m_lbDefaultTypes.AddString(GetFormatName(test.cfFormat));
  61. }
  62. oleData.Release();
  63. }
  64. void CAddType::AddCommonTypes()
  65. {
  66. m_lbDefaultTypes.ResetContent();
  67. m_lbDefaultTypes.AddString(_T("CF_TEXT"));
  68. m_lbDefaultTypes.AddString(_T("CF_BITMAP"));
  69. m_lbDefaultTypes.AddString(_T("CF_METAFILEPICT"));
  70. m_lbDefaultTypes.AddString(_T("CF_SYLK"));
  71. m_lbDefaultTypes.AddString(_T("CF_DIF"));
  72. m_lbDefaultTypes.AddString(_T("CF_TIFF"));
  73. m_lbDefaultTypes.AddString(_T("CF_OEMTEXT"));
  74. m_lbDefaultTypes.AddString(_T("CF_DIB"));
  75. m_lbDefaultTypes.AddString(_T("CF_PALETTE"));
  76. m_lbDefaultTypes.AddString(_T("CF_PENDATA"));
  77. m_lbDefaultTypes.AddString(_T("CF_RIFF"));
  78. m_lbDefaultTypes.AddString(_T("CF_WAVE"));
  79. m_lbDefaultTypes.AddString(_T("CF_UNICODETEXT"));
  80. m_lbDefaultTypes.AddString(_T("CF_ENHMETAFILE"));
  81. m_lbDefaultTypes.AddString(_T("CF_HDROP"));
  82. m_lbDefaultTypes.AddString(_T("CF_LOCALE"));
  83. m_lbDefaultTypes.AddString(_T("CF_OWNERDISPLAY"));
  84. m_lbDefaultTypes.AddString(_T("CF_DSPTEXT"));
  85. m_lbDefaultTypes.AddString(_T("CF_DSPBITMAP"));
  86. m_lbDefaultTypes.AddString(_T("CF_DSPMETAFILEPICT"));
  87. m_lbDefaultTypes.AddString(_T("CF_DSPENHMETAFILE"));
  88. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RTF)));
  89. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RTFNOOBJS)));
  90. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RETEXTOBJ)));
  91. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(_T("HTML Format"))));
  92. }
  93. void CAddType::OnBnClickedRadio1()
  94. {
  95. AddCommonTypes();
  96. ::ShowWindow(::GetDlgItem(m_hWnd, IDC_LIST1), SW_SHOW);
  97. ::ShowWindow(::GetDlgItem(m_hWnd, IDC_EDIT1), SW_HIDE);
  98. m_lbDefaultTypes.SetFocus();
  99. if (m_lbDefaultTypes.GetCount() > 0)
  100. {
  101. m_lbDefaultTypes.SetCurSel(0);
  102. m_lbDefaultTypes.SetSel(0);
  103. }
  104. }
  105. void CAddType::OnBnClickedRadio2()
  106. {
  107. AddCurrentClipboardTypes();
  108. ::ShowWindow(::GetDlgItem(m_hWnd, IDC_LIST1), SW_SHOW);
  109. ::ShowWindow(::GetDlgItem(m_hWnd, IDC_EDIT1), SW_HIDE);
  110. m_lbDefaultTypes.SetFocus();
  111. if (m_lbDefaultTypes.GetCount() > 0)
  112. {
  113. m_lbDefaultTypes.SetCurSel(0);
  114. m_lbDefaultTypes.SetSel(0);
  115. }
  116. }
  117. void CAddType::OnBnClickedRadio3()
  118. {
  119. ::ShowWindow(::GetDlgItem(m_hWnd, IDC_EDIT1), SW_SHOW);
  120. ::ShowWindow(::GetDlgItem(m_hWnd, IDC_LIST1), SW_HIDE);
  121. ::SetFocus(::GetDlgItem(m_hWnd, IDC_EDIT1));
  122. }
  123. void CAddType::OnBnClickedAdd()
  124. {
  125. m_csSelectedTypes.RemoveAll();
  126. if (IsDlgButtonChecked(IDC_RADIO1) == BST_CHECKED ||
  127. IsDlgButtonChecked(IDC_RADIO1) == BST_CHECKED)
  128. {
  129. int nCount = m_lbDefaultTypes.GetSelCount();
  130. if (nCount)
  131. {
  132. CString cs;
  133. CArray<int, int> items;
  134. items.SetSize(nCount);
  135. m_lbDefaultTypes.GetSelItems(nCount, items.GetData());
  136. for (int i = 0; i < nCount; i++)
  137. {
  138. m_lbDefaultTypes.GetText(items[i], cs);
  139. m_csSelectedTypes.Add(cs);
  140. }
  141. }
  142. }
  143. else if (IsDlgButtonChecked(IDC_RADIO3) == BST_CHECKED)
  144. {
  145. UpdateData();
  146. m_csSelectedTypes.Add(m_eCustomType);
  147. }
  148. EndDialog(IDOK);
  149. }
  150. void CAddType::OnLbnDblclkList()
  151. {
  152. OnBnClickedAdd();
  153. }