CriticalDlg.cpp
上传用户:hxb_1234
上传日期:2010-03-30
资源大小:8328k
文件大小:3k
源码类别:

VC书籍

开发平台:

Visual C++

  1. // CriticalDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "XvidQuantsParser.h"
  5. #include "CriticalDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CCriticalDlg dialog
  13. CCriticalDlg::CCriticalDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(CCriticalDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CCriticalDlg)
  17. m_criticalq = 0;
  18. //}}AFX_DATA_INIT
  19. }
  20. void CCriticalDlg::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. //{{AFX_DATA_MAP(CCriticalDlg)
  24. DDX_Control(pDX, IDC_LIST_CRITICAL, m_listcritical);
  25. DDX_Text(pDX, IDC_EDIT_CRITICALQ, m_criticalq);
  26. //}}AFX_DATA_MAP
  27. }
  28. BEGIN_MESSAGE_MAP(CCriticalDlg, CDialog)
  29. //{{AFX_MSG_MAP(CCriticalDlg)
  30. ON_BN_CLICKED(IDC_BUTTON_FETCH, OnButtonFetch)
  31. //}}AFX_MSG_MAP
  32. END_MESSAGE_MAP()
  33. /////////////////////////////////////////////////////////////////////////////
  34. // CCriticalDlg message handlers
  35. //------------------------------------------------------------------------------------------------
  36. void CCriticalDlg::Init(CXvid::QUANTS *quants, int nframes)
  37. {
  38. nbframes = nframes;
  39. qarray = quants;
  40. }
  41. //------------------------------------------------------------------------------------------------
  42. BOOL CCriticalDlg::OnInitDialog() 
  43. {
  44. CDialog::OnInitDialog();
  45. m_listcritical.InsertColumn(0, "Frame",LVCFMT_CENTER, 55);
  46. m_listcritical.InsertColumn(1, "Type", LVCFMT_CENTER, 40);
  47. m_listcritical.InsertColumn(2, "Quantizer", LVCFMT_CENTER, 75);
  48. m_listcritical.InsertColumn(3, "Framesize (bytes)",LVCFMT_LEFT,   125);
  49. return TRUE;  // return TRUE unless you set the focus to a control
  50.               // EXCEPTION: OCX Property Pages should return FALSE
  51. }
  52. //------------------------------------------------------------------------------------------------
  53. void CCriticalDlg::OnButtonFetch() 
  54. {
  55. char index[7], value[3], fsize[9];
  56. int count = 0;
  57. UpdateData(TRUE);
  58. m_listcritical.DeleteAllItems();
  59. for (int i=0; i<nbframes; i++)
  60. {
  61. if (qarray[i].qvalue>m_criticalq)
  62. {
  63. sprintf(index, "%d", i);
  64. sprintf(value, "%dx", qarray[i].qvalue);
  65. sprintf(fsize, "%d", qarray[i].framesize);
  66. m_listcritical.InsertItem (count, index);
  67. if (qarray[i].isIFrame) m_listcritical.SetItemText(count, 1, "IF");
  68. else m_listcritical.SetItemText(count, 1, "PF");
  69. m_listcritical.SetItemText(count, 2, value);
  70. m_listcritical.SetItemText(count, 3, fsize);
  71. count++;
  72. }
  73. }
  74. if (count == 0)
  75. {
  76. AfxMessageBox("No frames above specified quantizer.nSee the Global Quantization: Maximum value.", MB_ICONINFORMATION);
  77. }
  78. }