Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2646742
  • 博文数量: 416
  • 博客积分: 10220
  • 博客等级: 上将
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 09:47
文章分类

全部博文(416)

文章存档

2022年(1)

2021年(1)

2020年(1)

2019年(5)

2018年(7)

2017年(6)

2016年(7)

2015年(11)

2014年(1)

2012年(5)

2011年(7)

2010年(35)

2009年(64)

2008年(48)

2007年(177)

2006年(40)

我的朋友

分类: C/C++

2010-01-23 19:42:25


BOOL CplayDemoDlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 // 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
 HWND        hwnd;
 CString        m_hwnd;
 //得到hwnd,IDC_PIC是对话框中某个picture control的ID。
 hwnd = GetDlgItem(IDC_STATIC)->GetSafeHwnd();
 //设置环境变量并初始化sdl
 //m_hwnd.Format(_T("%d"), hwnd);
 //SetEnvironmentVariable((LPCWSTR)"SDL_WINDOWID", (LPCWSTR)m_hwnd);
 //if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER))
 //{
 // msg.Format(_T("Could not initialize SDL - %s\n"), SDL_GetError());
 // AfxMessageBox(msg);
 // exit(1);
 //}
 int argc=8;
 char p2[128];
 sprintf(p2, "%lu", hwnd);
 char *p1[] = {"1","-wid",p2,"-x","320","-y","240","d:/dev/media/001.mp4",NULL} ;
 char **p = p1;
 //p = new char *[8];
 //for(int i=0; i< argc;i++)
 //{
 // p[i] = new char[128];
 // //memset(p[i], 128,0x00);
 //}
 //p[0] = "1";
 //p[1] = "-wid";
 //sprintf(p1[2], "%lu", hwnd);
 //p[3] = "-x";
 //p[4] = "320";
 //p[5] = "-y";
 //p[6] = "240";
 //p[7] = "d:/dev/media/001.mp4";
 FFQLAY_main(argc, p);
 //FFPLAYLIB int FFQLAY_main(int argc, char **argv);
 
 
 return TRUE;  // return TRUE  unless you set the focus to a control
}
 
/*******************************************/
参考
int main(int argc, char* argv[]) 和
int main(int argc, char** argv)

char* 和 char[] 的定义方式是等价的
定义方式是等价的,但初始化是不同的,参考[0],[2]
//! [0]
 int argc=8;
 char *p[8];
 
 for(int i=0; i< argc;i++)
 {
  p[i] = new char[128];
  memset(p[i], 0x00,128);
 }
 //! [0]
 //! [1]
 strcpy(p[0], "ddddddddd");
 char **p1 = p;
 //! [1]
 //! [2]
 /*char **p2;
 for(int i=0; i< argc;i++)
 {
  p2[i] = new char[128];
  memset(p[i], 0x00,128);
 }*/
 //! [2]
 //! [3]
 for(int i=0; i< argc;i++)
 {
  delete p[i];
  p[i] = NULL;
 }
 //! [3]

/*********************************************************/
http://www.ertou.linuxpk.com/space-25219-do-blog-id-6781.html
char *argv[4] 和 char (*arg)[4]的区别

这两个东西弄到一起来看好像就晕了,其实在代码里都有见过,下面结合代码来分析一下:
char *argv[4]
       这个很常见,在main函数中的参数就有这个东西。
int main(int argc, const char* argv[])
{
       const char *param;
       for(i = 1;i               param = argv[i];
        }
}

char (*arg)[4]
      这个东西可能不太常见其实我也写过的,只是没有仔细去想。代码如下:
 
struct list {
      char listValue[MAX_NUM][LEN];
       int listNum;
  };
struct list delSuccessList; 
char (*p_del_success)[LEN] =delSuccessList.listValue;

总结:
      其实这两个东西都是指向二维数组。
char *argv[4] 含义argv指向一个二维数组,这个数组的第一维长度为4(既有4个元素)

 char (*arg)[4] 含义 arg指向一个二维数组,这个数组的第二位长度为4(即每个元素的最大长度为4)

阅读(2793) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~