AddType.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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_LIST2, m_lbOnClipboard);
  25. DDX_Control(pDX, IDC_LIST1, m_lbDefaultTypes);
  26. DDX_Text(pDX, IDC_EDIT1, m_eCustomType);
  27. DDV_MaxChars(pDX, m_eCustomType, 50);
  28. //}}AFX_DATA_MAP
  29. }
  30. BEGIN_MESSAGE_MAP(CAddType, CDialog)
  31. //{{AFX_MSG_MAP(CAddType)
  32. ON_BN_CLICKED(IDC_ADD_1, OnAdd1)
  33. ON_BN_CLICKED(IDC_ADD_2, OnAdd2)
  34. ON_BN_CLICKED(IDC_ADD_3, OnAdd3)
  35. ON_LBN_DBLCLK(IDC_LIST1, OnDblclkList1)
  36. ON_LBN_DBLCLK(IDC_LIST2, OnDblclkList2)
  37. //}}AFX_MSG_MAP
  38. END_MESSAGE_MAP()
  39. /////////////////////////////////////////////////////////////////////////////
  40. // CAddType message handlers
  41. BOOL CAddType::OnInitDialog()
  42. {
  43. CDialog::OnInitDialog();
  44. m_lbDefaultTypes.AddString("CF_TEXT");
  45. m_lbDefaultTypes.AddString("CF_BITMAP");
  46. m_lbDefaultTypes.AddString("CF_METAFILEPICT");
  47. m_lbDefaultTypes.AddString("CF_SYLK");
  48. m_lbDefaultTypes.AddString("CF_DIF");
  49. m_lbDefaultTypes.AddString("CF_TIFF");
  50. m_lbDefaultTypes.AddString("CF_OEMTEXT");
  51. m_lbDefaultTypes.AddString("CF_DIB");
  52. m_lbDefaultTypes.AddString("CF_PALETTE");
  53. m_lbDefaultTypes.AddString("CF_PENDATA");
  54. m_lbDefaultTypes.AddString("CF_RIFF");
  55. m_lbDefaultTypes.AddString("CF_WAVE");
  56. m_lbDefaultTypes.AddString("CF_UNICODETEXT");
  57. m_lbDefaultTypes.AddString("CF_ENHMETAFILE");
  58. m_lbDefaultTypes.AddString("CF_HDROP");
  59. m_lbDefaultTypes.AddString("CF_LOCALE");
  60. m_lbDefaultTypes.AddString("CF_OWNERDISPLAY");
  61. m_lbDefaultTypes.AddString("CF_DSPTEXT");
  62. m_lbDefaultTypes.AddString("CF_DSPBITMAP");
  63. m_lbDefaultTypes.AddString("CF_DSPMETAFILEPICT");
  64. m_lbDefaultTypes.AddString("CF_DSPENHMETAFILE");
  65. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RTF)));
  66. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RTFNOOBJS)));
  67. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat(CF_RETEXTOBJ)));
  68. m_lbDefaultTypes.AddString(GetFormatName(RegisterClipboardFormat("HTML Format")));
  69. COleDataObject oleData;
  70. if(!oleData.AttachClipboard())
  71. return FALSE;
  72. oleData.BeginEnumFormats();
  73. FORMATETC test;
  74. while(oleData.GetNextFormat(&test))
  75. {
  76. BOOL b = oleData.IsDataAvailable(test.cfFormat);
  77. m_lbOnClipboard.AddString(GetFormatName(test.cfFormat));
  78. }
  79. oleData.Release();
  80. m_lbDefaultTypes.SetFocus();
  81. return FALSE;
  82. }
  83. void CAddType::OnAdd1()
  84. {
  85. m_csSelectedTypes.RemoveAll();
  86. int nCount = m_lbDefaultTypes.GetSelCount();
  87. if(nCount)
  88. {
  89. CString cs;
  90. CArray<int,int> items;
  91. items.SetSize(nCount);
  92. m_lbDefaultTypes.GetSelItems(nCount, items.GetData());
  93. for(int i = 0; i < nCount; i++)
  94. {
  95. m_lbDefaultTypes.GetText(items[i], cs);
  96. m_csSelectedTypes.Add(cs);
  97. }
  98. }
  99. EndDialog(IDOK);
  100. }
  101. void CAddType::OnAdd2()
  102. {
  103. UpdateData();
  104. m_csSelectedTypes.RemoveAll();
  105. m_csSelectedTypes.Add(m_eCustomType);
  106. EndDialog(IDOK);
  107. }
  108. void CAddType::OnAdd3()
  109. {
  110. m_csSelectedTypes.RemoveAll();
  111. int nCount = m_lbOnClipboard.GetSelCount();
  112. if(nCount)
  113. {
  114. CString cs;
  115. CArray<int,int> items;
  116. items.SetSize(nCount);
  117. m_lbOnClipboard.GetSelItems(nCount, items.GetData());
  118. for(int i = 0; i < nCount; i++)
  119. {
  120. m_lbOnClipboard.GetText(items[i], cs);
  121. m_csSelectedTypes.Add(cs);
  122. }
  123. }
  124. EndDialog(IDOK);
  125. }
  126. void CAddType::OnDblclkList1()
  127. {
  128. OnAdd1();
  129. }
  130. void CAddType::OnDblclkList2()
  131. {
  132. OnAdd3();
  133. }