ShaderCombineDlg.cpp
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. // ShaderCombineDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "mplayerc.h"
  5. #include "ShaderCombineDlg.h"
  6. // CShaderCombineDlg dialog
  7. CShaderCombineDlg::CShaderCombineDlg(CAtlList<CString>& labels, CWnd* pParent /*=NULL*/)
  8. : CResizableDialog(CShaderCombineDlg::IDD, pParent)
  9. , m_labels(labels)
  10. {
  11. }
  12. CShaderCombineDlg::~CShaderCombineDlg()
  13. {
  14. }
  15. void CShaderCombineDlg::DoDataExchange(CDataExchange* pDX)
  16. {
  17. __super::DoDataExchange(pDX);
  18. DDX_Control(pDX, IDC_LIST1, m_list);
  19. DDX_Control(pDX, IDC_COMBO1, m_combo);
  20. }
  21. BEGIN_MESSAGE_MAP(CShaderCombineDlg, CResizableDialog)
  22. ON_BN_CLICKED(IDC_BUTTON2, &CShaderCombineDlg::OnBnClickedButton12)
  23. ON_BN_CLICKED(IDC_BUTTON3, &CShaderCombineDlg::OnBnClickedButton13)
  24. ON_BN_CLICKED(IDC_BUTTON1, &CShaderCombineDlg::OnBnClickedButton1)
  25. ON_BN_CLICKED(IDC_BUTTON4, &CShaderCombineDlg::OnBnClickedButton11)
  26. END_MESSAGE_MAP()
  27. // CShaderCombineDlg message handlers
  28. BOOL CShaderCombineDlg::OnInitDialog()
  29. {
  30. __super::OnInitDialog();
  31. AddAnchor(IDC_LIST1, TOP_LEFT, BOTTOM_RIGHT);
  32. AddAnchor(IDC_COMBO1, BOTTOM_LEFT, BOTTOM_RIGHT);
  33. AddAnchor(IDC_STATIC1, BOTTOM_LEFT, BOTTOM_RIGHT);
  34. AddAnchor(IDC_BUTTON2, BOTTOM_RIGHT);
  35. AddAnchor(IDC_BUTTON3, BOTTOM_RIGHT);
  36. AddAnchor(IDC_BUTTON1, TOP_RIGHT);
  37. AddAnchor(IDC_BUTTON4, TOP_RIGHT);
  38. AddAnchor(IDOK, TOP_RIGHT);
  39. AddAnchor(IDCANCEL, TOP_RIGHT);
  40. AppSettings& s = AfxGetAppSettings();
  41. CString str = s.m_shadercombine.Trim();
  42. CAtlList<CString> sl;
  43. if(!str.IsEmpty()) Explode(str, sl, '|');
  44. POSITION pos = sl.GetHeadPosition();
  45. while(pos) m_list.AddString(sl.GetNext(pos));
  46. pos = s.m_shaders.GetHeadPosition();
  47. while(pos) m_combo.AddString(s.m_shaders.GetNext(pos).label);
  48. if(m_combo.GetCount()) m_combo.SetCurSel(0);
  49. return TRUE;  // return TRUE unless you set the focus to a control
  50. // EXCEPTION: OCX Property Pages should return FALSE
  51. }
  52. void CShaderCombineDlg::OnOK()
  53. {
  54. m_labels.RemoveAll();
  55. CAtlList<CString> sl;
  56. for(int i = 0, j = m_list.GetCount(); i < j; i++)
  57. {
  58. CString label;
  59. m_list.GetText(i, label);
  60. sl.AddTail(label);
  61. m_labels.AddTail(label);
  62. }
  63. AfxGetAppSettings().m_shadercombine = Implode(sl, '|');
  64. __super::OnOK();
  65. }
  66. void CShaderCombineDlg::OnBnClickedButton12()
  67. {
  68. int i = m_combo.GetCurSel();
  69. if(i < 0) return;
  70. CString label; 
  71. m_combo.GetLBText(i, label);
  72. m_list.SetCurSel(m_list.AddString(label));
  73. }
  74. void CShaderCombineDlg::OnBnClickedButton13()
  75. {
  76. int i = m_list.GetCurSel();
  77. if(i < 0) return;
  78. m_list.DeleteString(i);
  79. if(i == m_list.GetCount()) i--;
  80. if(i >= 0) m_list.SetCurSel(i);
  81. }
  82. void CShaderCombineDlg::OnBnClickedButton1()
  83. {
  84. int i = m_list.GetCurSel();
  85. if(i < 1) return;
  86. CString label;
  87. m_list.GetText(i, label);
  88. m_list.DeleteString(i);
  89. i--;
  90. m_list.InsertString(i, label);
  91. m_list.SetCurSel(i);
  92. }
  93. void CShaderCombineDlg::OnBnClickedButton11()
  94. {
  95. int i = m_list.GetCurSel();
  96. if(i < 0 || i >= m_list.GetCount()-1) return;
  97. CString label;
  98. m_list.GetText(i, label);
  99. m_list.DeleteString(i);
  100. if(++i == m_list.GetCount()) m_list.AddString(label);
  101. else m_list.InsertString(i, label);
  102. m_list.SetCurSel(i);
  103. }