www.pudn.com > AVS.rar > testDlg.cpp


// testDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "test.h" 
#include "testDlg.h" 
#include "../avsdecdll/include/avsdeclib.h" 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CAboutDlg dialog used for App About 
 
class CAboutDlg : public CDialog 
{ 
public: 
	CAboutDlg(); 
 
// Dialog Data 
	//{{AFX_DATA(CAboutDlg) 
	enum { IDD = IDD_ABOUTBOX }; 
	//}}AFX_DATA 
 
	// ClassWizard generated virtual function overrides 
	//{{AFX_VIRTUAL(CAboutDlg) 
	protected: 
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support 
	//}}AFX_VIRTUAL 
 
// Implementation 
protected: 
	//{{AFX_MSG(CAboutDlg) 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
}; 
 
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) 
{ 
	//{{AFX_DATA_INIT(CAboutDlg) 
	//}}AFX_DATA_INIT 
} 
 
void CAboutDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CAboutDlg) 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) 
	//{{AFX_MSG_MAP(CAboutDlg) 
		// No message handlers 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CTestDlg dialog 
 
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CTestDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CTestDlg) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
} 
 
void CTestDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CTestDlg) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
BEGIN_MESSAGE_MAP(CTestDlg, CDialog) 
	//{{AFX_MSG_MAP(CTestDlg) 
	ON_WM_SYSCOMMAND() 
	ON_WM_PAINT() 
	ON_WM_QUERYDRAGICON() 
	ON_BN_CLICKED(IDC_OPEN, OnOpen) 
	ON_BN_CLICKED(IDC_PLAY, OnPlay) 
	ON_WM_CLOSE() 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CTestDlg message handlers 
 
BOOL CTestDlg::OnInitDialog() 
{ 
	CDialog::OnInitDialog(); 
 
	// Add "About..." menu item to system menu. 
 
	// IDM_ABOUTBOX must be in the system command range. 
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 
	ASSERT(IDM_ABOUTBOX < 0xF000); 
 
	CMenu* pSysMenu = GetSystemMenu(FALSE); 
	if (pSysMenu != NULL) 
	{ 
		CString strAboutMenu; 
		strAboutMenu.LoadString(IDS_ABOUTBOX); 
		if (!strAboutMenu.IsEmpty()) 
		{ 
			pSysMenu->AppendMenu(MF_SEPARATOR); 
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 
		} 
	} 
 
	// Set the icon for this dialog.  The framework does this automatically 
	//  when the application's main window is not a dialog 
	SetIcon(m_hIcon, TRUE);			// Set big icon 
	SetIcon(m_hIcon, FALSE);		// Set small icon 
	 
	// TODO: Add extra initialization here 
 
  m_bPlaying = FALSE; 
	return TRUE;  // return TRUE  unless you set the focus to a control 
} 
 
void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam) 
{ 
	if ((nID & 0xFFF0) == IDM_ABOUTBOX) 
	{ 
		CAboutDlg dlgAbout; 
		dlgAbout.DoModal(); 
	} 
	else 
	{ 
		CDialog::OnSysCommand(nID, lParam); 
	} 
} 
 
// If you add a minimize button to your dialog, you will need the code below 
//  to draw the icon.  For MFC applications using the document/view model, 
//  this is automatically done for you by the framework. 
 
void CTestDlg::OnPaint()  
{ 
	if (IsIconic()) 
	{ 
		CPaintDC dc(this); // device context for painting 
 
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); 
 
		// Center icon in client rectangle 
		int cxIcon = GetSystemMetrics(SM_CXICON); 
		int cyIcon = GetSystemMetrics(SM_CYICON); 
		CRect rect; 
		GetClientRect(&rect); 
		int x = (rect.Width() - cxIcon + 1) / 2; 
		int y = (rect.Height() - cyIcon + 1) / 2; 
 
		// Draw the icon 
		dc.DrawIcon(x, y, m_hIcon); 
	} 
	else 
	{ 
		CDialog::OnPaint(); 
	} 
} 
 
// The system calls this to obtain the cursor to display while the user drags 
//  the minimized window. 
HCURSOR CTestDlg::OnQueryDragIcon() 
{ 
	return (HCURSOR) m_hIcon; 
} 
 
////////////////////////////////////////////////////////////////////////// 
// show Image 
int c_int[3][3][256] = { 
{ 
 
{ 
     0,     1,     2,     3,     4,     5,     6,     8,     9,    10,    11,    12,    13,    15,    16,    17, 
    18,    19,    20,    22,    23,    24,    25,    26,    27,    29,    30,    31,    32,    33,    34,    36, 
    37,    38,    39,    40,    41,    43,    44,    45,    46,    47,    48,    50,    51,    52,    53,    54, 
    55,    57,    58,    59,    60,    61,    62,    64,    65,    66,    67,    68,    69,    71,    72,    73, 
    74,    75,    76,    78,    79,    80,    81,    82,    83,    85,    86,    87,    88,    89,    90,    91, 
    93,    94,    95,    96,    97,    98,   100,   101,   102,   103,   104,   105,   107,   108,   109,   110, 
   111,   112,   114,   115,   116,   117,   118,   119,   121,   122,   123,   124,   125,   126,   128,   129, 
   130,   131,   132,   133,   135,   136,   137,   138,   139,   140,   142,   143,   144,   145,   146,   147, 
   149,   150,   151,   152,   153,   154,   156,   157,   158,   159,   160,   161,   163,   164,   165,   166, 
   167,   168,   170,   171,   172,   173,   174,   175,   176,   178,   179,   180,   181,   182,   183,   185, 
   186,   187,   188,   189,   190,   192,   193,   194,   195,   196,   197,   199,   200,   201,   202,   203, 
   204,   206,   207,   208,   209,   210,   211,   213,   214,   215,   216,   217,   218,   220,   221,   222, 
   223,   224,   225,   227,   228,   229,   230,   231,   232,   234,   235,   236,   237,   238,   239,   241, 
   242,   243,   244,   245,   246,   248,   249,   250,   251,   252,   253,   255,   256,   257,   258,   259, 
   260,   261,   263,   264,   265,   266,   267,   268,   270,   271,   272,   273,   274,   275,   277,   278, 
   279,   280,   281,   282,   284,   285,   286,   287,   288,   289,   291,   292,   293,   294,   295,   296 
}, 
{ 
     0,     0,     0,    -1,    -1,    -1,    -2,    -2,    -3,    -3,    -3,    -4,    -4,    -5,    -5,    -5, 
    -6,    -6,    -7,    -7,    -7,    -8,    -8,    -8,    -9,    -9,   -10,   -10,   -10,   -11,   -11,   -12, 
   -12,   -12,   -13,   -13,   -14,   -14,   -14,   -15,   -15,   -16,   -16,   -16,   -17,   -17,   -17,   -18, 
   -18,   -19,   -19,   -19,   -20,   -20,   -21,   -21,   -21,   -22,   -22,   -23,   -23,   -23,   -24,   -24, 
   -25,   -25,   -25,   -26,   -26,   -26,   -27,   -27,   -28,   -28,   -28,   -29,   -29,   -30,   -30,   -30, 
   -31,   -31,   -32,   -32,   -32,   -33,   -33,   -34,   -34,   -34,   -35,   -35,   -35,   -36,   -36,   -37, 
   -37,   -37,   -38,   -38,   -39,   -39,   -39,   -40,   -40,   -41,   -41,   -41,   -42,   -42,   -43,   -43, 
   -43,   -44,   -44,   -44,   -45,   -45,   -46,   -46,   -46,   -47,   -47,   -48,   -48,   -48,   -49,   -49, 
   -50,   -50,   -50,   -51,   -51,   -52,   -52,   -52,   -53,   -53,   -53,   -54,   -54,   -55,   -55,   -55, 
   -56,   -56,   -57,   -57,   -57,   -58,   -58,   -59,   -59,   -59,   -60,   -60,   -61,   -61,   -61,   -62, 
   -62,   -62,   -63,   -63,   -64,   -64,   -64,   -65,   -65,   -66,   -66,   -66,   -67,   -67,   -68,   -68, 
   -68,   -69,   -69,   -70,   -70,   -70,   -71,   -71,   -71,   -72,   -72,   -73,   -73,   -73,   -74,   -74, 
   -75,   -75,   -75,   -76,   -76,   -77,   -77,   -77,   -78,   -78,   -79,   -79,   -79,   -80,   -80,   -80, 
   -81,   -81,   -82,   -82,   -82,   -83,   -83,   -84,   -84,   -84,   -85,   -85,   -86,   -86,   -86,   -87, 
   -87,   -88,   -88,   -88,   -89,   -89,   -89,   -90,   -90,   -91,   -91,   -91,   -92,   -92,   -93,   -93, 
   -93,   -94,   -94,   -95,   -95,   -95,   -96,   -96,   -97,   -97,   -97,   -98,   -98,   -98,   -99,   -99 
}, 
{ 
     0,     0,    -1,    -2,    -3,    -4,    -4,    -5,    -6,    -7,    -8,    -8,    -9,   -10,   -11,   -12, 
   -13,   -13,   -14,   -15,   -16,   -17,   -17,   -18,   -19,   -20,   -21,   -21,   -22,   -23,   -24,   -25, 
   -26,   -26,   -27,   -28,   -29,   -30,   -30,   -31,   -32,   -33,   -34,   -34,   -35,   -36,   -37,   -38, 
   -39,   -39,   -40,   -41,   -42,   -43,   -43,   -44,   -45,   -46,   -47,   -47,   -48,   -49,   -50,   -51, 
   -52,   -52,   -53,   -54,   -55,   -56,   -56,   -57,   -58,   -59,   -60,   -60,   -61,   -62,   -63,   -64, 
   -65,   -65,   -66,   -67,   -68,   -69,   -69,   -70,   -71,   -72,   -73,   -73,   -74,   -75,   -76,   -77, 
   -78,   -78,   -79,   -80,   -81,   -82,   -82,   -83,   -84,   -85,   -86,   -86,   -87,   -88,   -89,   -90, 
   -91,   -91,   -92,   -93,   -94,   -95,   -95,   -96,   -97,   -98,   -99,  -100,  -100,  -101,  -102,  -103, 
  -104,  -104,  -105,  -106,  -107,  -108,  -108,  -109,  -110,  -111,  -112,  -113,  -113,  -114,  -115,  -116, 
  -117,  -117,  -118,  -119,  -120,  -121,  -121,  -122,  -123,  -124,  -125,  -126,  -126,  -127,  -128,  -129, 
  -130,  -130,  -131,  -132,  -133,  -134,  -134,  -135,  -136,  -137,  -138,  -139,  -139,  -140,  -141,  -142, 
  -143,  -143,  -144,  -145,  -146,  -147,  -147,  -148,  -149,  -150,  -151,  -152,  -152,  -153,  -154,  -155, 
  -156,  -156,  -157,  -158,  -159,  -160,  -160,  -161,  -162,  -163,  -164,  -165,  -165,  -166,  -167,  -168, 
  -169,  -169,  -170,  -171,  -172,  -173,  -173,  -174,  -175,  -176,  -177,  -178,  -178,  -179,  -180,  -181, 
  -182,  -182,  -183,  -184,  -185,  -186,  -186,  -187,  -188,  -189,  -190,  -191,  -191,  -192,  -193,  -194, 
  -195,  -195,  -196,  -197,  -198,  -199,  -200,  -200,  -201,  -202,  -203,  -204,  -204,  -205,  -206,  -207 
} 
}, 
 
{ 
{ 
     0,     1,     2,     3,     4,     5,     6,     8,     9,    10,    11,    12,    13,    15,    16,    17, 
    18,    19,    20,    22,    23,    24,    25,    26,    27,    29,    30,    31,    32,    33,    34,    36, 
    37,    38,    39,    40,    41,    43,    44,    45,    46,    47,    48,    50,    51,    52,    53,    54, 
    55,    57,    58,    59,    60,    61,    62,    64,    65,    66,    67,    68,    69,    71,    72,    73, 
    74,    75,    76,    78,    79,    80,    81,    82,    83,    85,    86,    87,    88,    89,    90,    91, 
    93,    94,    95,    96,    97,    98,   100,   101,   102,   103,   104,   105,   107,   108,   109,   110, 
   111,   112,   114,   115,   116,   117,   118,   119,   121,   122,   123,   124,   125,   126,   128,   129, 
   130,   131,   132,   133,   135,   136,   137,   138,   139,   140,   142,   143,   144,   145,   146,   147, 
   149,   150,   151,   152,   153,   154,   156,   157,   158,   159,   160,   161,   163,   164,   165,   166, 
   167,   168,   170,   171,   172,   173,   174,   175,   176,   178,   179,   180,   181,   182,   183,   185, 
   186,   187,   188,   189,   190,   192,   193,   194,   195,   196,   197,   199,   200,   201,   202,   203, 
   204,   206,   207,   208,   209,   210,   211,   213,   214,   215,   216,   217,   218,   220,   221,   222, 
   223,   224,   225,   227,   228,   229,   230,   231,   232,   234,   235,   236,   237,   238,   239,   241, 
   242,   243,   244,   245,   246,   248,   249,   250,   251,   252,   253,   255,   256,   257,   258,   259, 
   260,   261,   263,   264,   265,   266,   267,   268,   270,   271,   272,   273,   274,   275,   277,   278, 
   279,   280,   281,   282,   284,   285,   286,   287,   288,   289,   291,   292,   293,   294,   295,   296 
}, 
{ 
     0,     2,     4,     6,     8,    10,    12,    14,    16,    18,    20,    22,    24,    26,    28,    30, 
    32,    34,    36,    38,    40,    42,    44,    46,    48,    50,    52,    54,    56,    58,    60,    62, 
    64,    66,    68,    70,    72,    74,    76,    78,    80,    82,    84,    86,    88,    90,    92,    94, 
    96,    98,   100,   102,   104,   106,   108,   110,   112,   114,   117,   119,   121,   123,   125,   127, 
   129,   131,   133,   135,   137,   139,   141,   143,   145,   147,   149,   151,   153,   155,   157,   159, 
   161,   163,   165,   167,   169,   171,   173,   175,   177,   179,   181,   183,   185,   187,   189,   191, 
   193,   195,   197,   199,   201,   203,   205,   207,   209,   211,   213,   215,   217,   219,   221,   223, 
   225,   227,   229,   232,   234,   236,   238,   240,   242,   244,   246,   248,   250,   252,   254,   256, 
   258,   260,   262,   264,   266,   268,   270,   272,   274,   276,   278,   280,   282,   284,   286,   288, 
   290,   292,   294,   296,   298,   300,   302,   304,   306,   308,   310,   312,   314,   316,   318,   320, 
   322,   324,   326,   328,   330,   332,   334,   336,   338,   340,   342,   344,   347,   349,   351,   353, 
   355,   357,   359,   361,   363,   365,   367,   369,   371,   373,   375,   377,   379,   381,   383,   385, 
   387,   389,   391,   393,   395,   397,   399,   401,   403,   405,   407,   409,   411,   413,   415,   417, 
   419,   421,   423,   425,   427,   429,   431,   433,   435,   437,   439,   441,   443,   445,   447,   449, 
   451,   453,   455,   457,   459,   461,   464,   466,   468,   470,   472,   474,   476,   478,   480,   482, 
   484,   486,   488,   490,   492,   494,   496,   498,   500,   502,   504,   506,   508,   510,   512,   514 
}, 
{ 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0 
} 
}, 
 
{ 
{ 
	 0,     1,     2,     3,     4,     5,     6,     8,     9,    10,    11,    12,    13,    15,    16,    17, 
    18,    19,    20,    22,    23,    24,    25,    26,    27,    29,    30,    31,    32,    33,    34,    36, 
    37,    38,    39,    40,    41,    43,    44,    45,    46,    47,    48,    50,    51,    52,    53,    54, 
    55,    57,    58,    59,    60,    61,    62,    64,    65,    66,    67,    68,    69,    71,    72,    73, 
    74,    75,    76,    78,    79,    80,    81,    82,    83,    85,    86,    87,    88,    89,    90,    91, 
    93,    94,    95,    96,    97,    98,   100,   101,   102,   103,   104,   105,   107,   108,   109,   110, 
   111,   112,   114,   115,   116,   117,   118,   119,   121,   122,   123,   124,   125,   126,   128,   129, 
   130,   131,   132,   133,   135,   136,   137,   138,   139,   140,   142,   143,   144,   145,   146,   147, 
   149,   150,   151,   152,   153,   154,   156,   157,   158,   159,   160,   161,   163,   164,   165,   166, 
   167,   168,   170,   171,   172,   173,   174,   175,   176,   178,   179,   180,   181,   182,   183,   185, 
   186,   187,   188,   189,   190,   192,   193,   194,   195,   196,   197,   199,   200,   201,   202,   203, 
   204,   206,   207,   208,   209,   210,   211,   213,   214,   215,   216,   217,   218,   220,   221,   222, 
   223,   224,   225,   227,   228,   229,   230,   231,   232,   234,   235,   236,   237,   238,   239,   241, 
   242,   243,   244,   245,   246,   248,   249,   250,   251,   252,   253,   255,   256,   257,   258,   259, 
   260,   261,   263,   264,   265,   266,   267,   268,   270,   271,   272,   273,   274,   275,   277,   278, 
   279,   280,   281,   282,   284,   285,   286,   287,   288,   289,   291,   292,   293,   294,   295,   296 
}, 
{ 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0 
}, 
 
{ 
     0,     1,     3,     4,     6,     7,     9,    11,    12,    14,    15,    17,    19,    20,    22,    23, 
    25,    27,    28,    30,    31,    33,    35,    36,    38,    39,    41,    43,    44,    46,    47,    49, 
    51,    52,    54,    55,    57,    59,    60,    62,    63,    65,    67,    68,    70,    71,    73,    74, 
    76,    78,    79,    81,    82,    84,    86,    87,    89,    90,    92,    94,    95,    97,    98,   100, 
   102,   103,   105,   106,   108,   110,   111,   113,   114,   116,   118,   119,   121,   122,   124,   126, 
   127,   129,   130,   132,   134,   135,   137,   138,   140,   142,   143,   145,   146,   148,   149,   151, 
   153,   154,   156,   157,   159,   161,   162,   164,   165,   167,   169,   170,   172,   173,   175,   177, 
   178,   180,   181,   183,   185,   186,   188,   189,   191,   193,   194,   196,   197,   199,   201,   202, 
   204,   205,   207,   209,   210,   212,   213,   215,   217,   218,   220,   221,   223,   224,   226,   228, 
   229,   231,   232,   234,   236,   237,   239,   240,   242,   244,   245,   247,   248,   250,   252,   253, 
   255,   256,   258,   260,   261,   263,   264,   266,   268,   269,   271,   272,   274,   276,   277,   279, 
   280,   282,   284,   285,   287,   288,   290,   292,   293,   295,   296,   298,   299,   301,   303,   304, 
   306,   307,   309,   311,   312,   314,   315,   317,   319,   320,   322,   323,   325,   327,   328,   330, 
   331,   333,   335,   336,   338,   339,   341,   343,   344,   346,   347,   349,   351,   352,   354,   355, 
   357,   359,   360,   362,   363,   365,   367,   368,   370,   371,   373,   374,   376,   378,   379,   381, 
   382,   384,   386,   387,   389,   390,   392,   394,   395,   397,   398,   400,   402,   403,   405,   406 
} 
} 
 
}; 
 
int GG_int =  -135,BB_int = 277, RR_int = 222; 
char clip[1536],*clp; 
 
void init_clp(void) 
{ 
	int i; 
 
	clp = clip + 512; 
 
	for (i=-512;i<1024;i++) 
		clp[i] = (i<0) ? 0 : ((i>255) ? 255 : i); 
 
} 
 
void yuv2rgb420(unsigned char *_bmBits,unsigned char *_Y, unsigned char* _U, unsigned char* _V, 
			 int _Width,int _Height,int _Format) 
{ 
	unsigned char *Y0,*Y1,*U,*V,*p0,*p1; 
	int wLuma = _Width; 
	int hLuma = _Height; 
 
	int x,y,size; 
	int BytesPerLine = ( _Width * 24 + 31 ) / 32 * 4; 
 
	int Bcc,Gcc,Rcc; 
 
	size = 2*BytesPerLine - 3*_Width; 
 
	//Y0 = _YUV[0]; 
	//Y1 = _YUV[0]+wLuma; 
  Y0 = _Y; 
  Y1 = _Y+wLuma; 
 
	//U = _YUV[1]; 
	//V = _YUV[2]; 
  U = _U; 
  V = _V; 
 
	p0 = _bmBits; 
	p1 = _bmBits + BytesPerLine; 
 
	for (y=0;y<_Height/2;y++) 
	{ 
		for(x=0;x<_Width/2;x++) 
		{ 
			Bcc = c_int[1][1][*U] + c_int[1][2][*V] - BB_int; 
			Gcc = c_int[0][1][*U] + c_int[0][2][*V] - GG_int; 
			Rcc = c_int[2][1][*U] + c_int[2][2][*V] - RR_int; 
 
			*p0++ = clp[c_int[1][0][*Y0] + Bcc]; 
			*p0++ = clp[c_int[0][0][*Y0] + Gcc]; 
			*p0++ = clp[c_int[2][0][*Y0] + Rcc]; 
 
			Y0++; 
 
			*p0++ = clp[c_int[1][0][*Y0] + Bcc]; 
			*p0++ = clp[c_int[0][0][*Y0] + Gcc]; 
			*p0++ = clp[c_int[2][0][*Y0] + Rcc]; 
 
			Y0++; 
 
			*p1++ = clp[c_int[1][0][*Y1] + Bcc]; 
			*p1++ = clp[c_int[0][0][*Y1] + Gcc]; 
			*p1++ = clp[c_int[2][0][*Y1] + Rcc]; 
 
			Y1++; 
 
   		*p1++ = clp[c_int[1][0][*Y1] + Bcc]; 
			*p1++ = clp[c_int[0][0][*Y1] + Gcc]; 
			*p1++ = clp[c_int[2][0][*Y1] + Rcc]; 
 
			Y1++; 
 
 
			U++; 
			V++; 
		} 
 
		p0 += size; 
		p1 += size; 
 
		Y0 += _Width; 
		Y1 += _Width; 
	 } 
} 
 
void ShowYuvImage(unsigned char* pBmp, unsigned char* pY, unsigned char* pU, unsigned char* pV,  
                  DWORD dwWidth, DWORD dwHeight, CDC* pDC, DWORD dwDCWidth, DWORD dwDCHeight) 
{ 
  ////////////////////////////////////////////////////////////////////////// 
  if(pY==NULL || pU==NULL || pV==NULL) 
    return; 
   
  yuv2rgb420(pBmp, pY, pU, pV, dwWidth, dwHeight, 1); 
   
  BITMAPINFO m_BmpInfo; 
  m_BmpInfo.bmiHeader.biSize			= sizeof(BITMAPINFOHEADER); 
  m_BmpInfo.bmiHeader.biWidth			= dwWidth; 
  m_BmpInfo.bmiHeader.biHeight			= -dwHeight; 
  m_BmpInfo.bmiHeader.biCompression	= BI_RGB; 
  m_BmpInfo.bmiHeader.biPlanes			= 1; 
  m_BmpInfo.bmiHeader.biBitCount		= 24; 
  m_BmpInfo.bmiHeader.biSizeImage		= dwHeight*dwWidth*3;     
   
  //CDC* pDC = GetDlgItem(IDC_ORG)->GetDC(); 
   
  HBITMAP hBmp; 
  CDC MemDC; 
   
  hBmp = CreateDIBitmap( 
    pDC->m_hDC,					// handle to device context 
    (BITMAPINFOHEADER*)(&m_BmpInfo),   //	pointer to bitmap size and format data 
    CBM_INIT,	// initialization flag 
    pBmp,	// pointer to initialization data 
    &m_BmpInfo,	// pointer to bitmap color-format data 
    DIB_RGB_COLORS	// color-data usage 
    ); 
   
  if(hBmp == NULL) 
  { 
    pDC->DeleteDC(); 
    return; 
  } 
   
  MemDC.CreateCompatibleDC(pDC); 
   
  SelectObject(MemDC.m_hDC,hBmp); 
   
  BOOL ret = pDC->BitBlt(0, 0,dwDCWidth,dwDCHeight,&MemDC, 0, 0,SRCCOPY); 
  DeleteObject(hBmp); 
  //ReleaseDC(pDC); 
  MemDC.DeleteDC(); 
  ////////////////////////////////////////////////////////////////////////// 
   
} 
 
 
void CTestDlg::OnOpen()  
{ 
  char szFileFilter[]="avs(*.avs)|*.avs|"   
    "All File(*.*)|*.*|"; 
  "||"; 
   
  CFileDialog dlg(TRUE, 
    NULL, 
    "*.avs", 
    OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, 
    szFileFilter, 
    NULL); 
   
  if(dlg.DoModal()==IDOK) 
  { 
    m_strFilePath = dlg.GetPathName(); 
    if(m_file.m_hFile != -1) 
    { 
      m_file.Close(); 
    } 
    if(!m_file.Open(m_strFilePath, CFile::modeRead | CFile::typeBinary | CFile::shareDenyRead, NULL)) 
    { 
      MessageBox("Can not open the input file", "Open file erro", MB_OK); 
      return; 
    }   
 	}	 
} 
 
#define SEQENCE_END_CODE      0XB1010000 
#define BUFLEN                1024*1024*3  
 
void CTestDlg::OnPlay()  
{ 
  BYTE* pbBuf = new BYTE [BUFLEN]; 
  BYTE* pbRGB =  new BYTE [BUFLEN]; 
  BYTE* pbData ; 
  DWORD dwReadLen = 0; 
  DWORD dwLeft = 0; 
  DWORD dwDataLen = 0; 
  DWORD dwFrameLen = 0; 
  DWORD dwNouseDataLen = 0; 
  BYTE* pY, *pU, *pV; 
 
  SEQ_INFO Info; 
   
  //图像显示相关的变量 
  CDC* pDCShow = GetDlgItem(IDC_SHOW)->GetDC(); 
  CRect rectShow; 
  GetDlgItem(IDC_SHOW)->GetClientRect(&rectShow); 
  init_clp();  //yuv2rgb 
 
 
  m_file.Seek(0, CFile::begin); 
  dwReadLen = m_file.Read(pbBuf, 20); 
  pbData =  pbBuf; 
  dwDataLen = dwReadLen; 
  dwLeft = dwDataLen; 
  // 初始化 
  OpenAVSDec(pbData, 20, &Info); 
  do 
  { 
    if(GetOneFrameBitsFromBuffer(pbData, (int)dwLeft, (int*)&dwFrameLen, (int*)&dwNouseDataLen) != 1) 
    { 
      memcpy(pbBuf, pbBuf+(dwDataLen-dwLeft), dwLeft); 
      dwDataLen = dwLeft; 
       
      if((dwReadLen = m_file.Read(pbBuf+dwLeft, BUFLEN-dwLeft))<=0) 
        break; 
      dwDataLen = dwLeft+dwReadLen; 
      dwLeft = dwDataLen; 
      pbData = pbBuf; 
      continue; 
    } 
     
    // 解码 
    DecOneFrameFromBuffer(pbData+dwNouseDataLen, dwFrameLen, &pY, &pU, &pV); 
    // 显示 
    ShowYuvImage(pbRGB, pY, pU, pV, 
      Info.image_width, Info.image_height, pDCShow, rectShow.Width(), rectShow.Height()); 
 
    pbData += dwFrameLen; 
    dwLeft -= dwFrameLen; 
  } while((*(DWORD*)pbData) != SEQENCE_END_CODE); 
      
  delete pbBuf; 
  // 结束 
  CloseAVSDec(); 
} 
 
void CTestDlg::OnClose()  
{ 
	CDialog::OnClose(); 
}