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

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2006 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. // OpenCapDeviceDlg.cpp : implementation file
  22. //
  23. #include "stdafx.h"
  24. #include "mplayerc.h"
  25. #include "OpenCapDeviceDlg.h"
  26. #include "....DSUtilDSUtil.h"
  27. static struct cc_t {long code; AnalogVideoStandard standard; const TCHAR* str;} s_countrycodes[] = 
  28. {
  29. {1, AnalogVideo_NTSC_M, _T("USA")},
  30. /* {1, AnalogVideo_NTSC_M, _T("Anguilla")},
  31. {1, AnalogVideo_NTSC_M, _T("Antigua")},
  32. {1, AnalogVideo_NTSC_M, _T("Bahamas")},
  33. {1, AnalogVideo_NTSC_M, _T("Barbados")},
  34. {1, AnalogVideo_NTSC_M, _T("Bermuda")},
  35. {1, AnalogVideo_NTSC_M, _T("British Virgin Islands")},
  36. {1, AnalogVideo_NTSC_M, _T("Canada")},
  37. {1, AnalogVideo_NTSC_M, _T("Cayman Islands")},
  38. {1, AnalogVideo_NTSC_M, _T("Dominica")},
  39. {1, AnalogVideo_NTSC_M, _T("Dominican Republic")},
  40. {1, AnalogVideo_NTSC_M, _T("Grenada")},
  41. {1, AnalogVideo_NTSC_M, _T("Jamaica")},
  42. {1, AnalogVideo_NTSC_M, _T("Montserrat")},
  43. {1, AnalogVideo_NTSC_M, _T("Nevis")},
  44. {1, AnalogVideo_NTSC_M, _T("St. Kitts")},
  45. {1, AnalogVideo_NTSC_M, _T("St. Vincent and the Grenadines")},
  46. {1, AnalogVideo_NTSC_M, _T("Trinidad and Tobago")},
  47. {1, AnalogVideo_NTSC_M, _T("Turks and Caicos Islands")},
  48. {1, AnalogVideo_NTSC_M, _T("Barbuda")},
  49. {1, AnalogVideo_NTSC_M, _T("Puerto Rico")},
  50. {1, AnalogVideo_NTSC_M, _T("Saint Lucia")},
  51. {1, AnalogVideo_NTSC_M, _T("United States Virgin Islands")},
  52. */ {2, AnalogVideo_NTSC_M, _T("Canada")},
  53. {7, AnalogVideo_SECAM_D, _T("Russia")},
  54. /* {7, AnalogVideo_SECAM_D, _T("Kazakhstan")},
  55. {7, AnalogVideo_SECAM_D, _T("Kyrgyzstan")},
  56. {7, AnalogVideo_SECAM_D, _T("Tajikistan")},
  57. {7, AnalogVideo_SECAM_D, _T("Turkmenistan")},
  58. {7, AnalogVideo_SECAM_D, _T("Uzbekistan")},
  59. */ {20, AnalogVideo_SECAM_B, _T("Egypt")},
  60. {27, AnalogVideo_PAL_I, _T("South Africa")},
  61. {30, AnalogVideo_SECAM_B, _T("Greece")},
  62. {31, AnalogVideo_PAL_B, _T("Netherlands")},
  63. {32, AnalogVideo_PAL_B, _T("Belgium")},
  64. {33, AnalogVideo_SECAM_L, _T("France")},
  65. {34, AnalogVideo_PAL_B, _T("Spain")},
  66. {36, AnalogVideo_SECAM_D, _T("Hungary")},
  67. {39, AnalogVideo_PAL_B, _T("Italy")},
  68. {39, AnalogVideo_PAL_B, _T("Vatican City")},
  69. {40, AnalogVideo_PAL_D, _T("Romania")},
  70. {41, AnalogVideo_PAL_B, _T("Switzerland")},
  71. {41, AnalogVideo_PAL_B, _T("Liechtenstein")},
  72. {43, AnalogVideo_PAL_B, _T("Austria")},
  73. {44, AnalogVideo_PAL_I, _T("United Kingdom")},
  74. {45, AnalogVideo_PAL_B, _T("Denmark")},
  75. {46, AnalogVideo_PAL_B, _T("Sweden")},
  76. {47, AnalogVideo_PAL_B, _T("Norway")},
  77. {48, AnalogVideo_PAL_B, _T("Poland")},
  78. {49, AnalogVideo_PAL_B, _T("Germany")},
  79. {51, AnalogVideo_NTSC_M, _T("Peru")},
  80. {52, AnalogVideo_NTSC_M, _T("Mexico")},
  81. {53, AnalogVideo_NTSC_M, _T("Cuba")},
  82. {53, AnalogVideo_NTSC_M, _T("Guantanamo Bay")},
  83. {54, AnalogVideo_PAL_N, _T("Argentina")},
  84. {55, AnalogVideo_PAL_M, _T("Brazil")},
  85. {56, AnalogVideo_NTSC_M, _T("Chile")},
  86. {57, AnalogVideo_NTSC_M, _T("Colombia")},
  87. {58, AnalogVideo_NTSC_M, _T("Bolivarian Republic of Venezuela")},
  88. {60, AnalogVideo_PAL_B, _T("Malaysia")},
  89. {61, AnalogVideo_PAL_B, _T("Australia")},
  90. // {61, AnalogVideo_NTSC_M, _T("Cocos-Keeling Islands")},
  91. {62, AnalogVideo_PAL_B, _T("Indonesia")},
  92. {63, AnalogVideo_NTSC_M, _T("Philippines")},
  93. {64, AnalogVideo_PAL_B, _T("New Zealand")},
  94. {65, AnalogVideo_PAL_B, _T("Singapore")},
  95. {66, AnalogVideo_PAL_B, _T("Thailand")},
  96. {81, AnalogVideo_NTSC_M_J, _T("Japan")},
  97. {82, AnalogVideo_NTSC_M, _T("Korea (South)")},
  98. {84, AnalogVideo_NTSC_M, _T("Vietnam")},
  99. {86, AnalogVideo_PAL_D, _T("China")},
  100. {90, AnalogVideo_PAL_B, _T("Turkey")},
  101. {91, AnalogVideo_PAL_B, _T("India")},
  102. {92, AnalogVideo_PAL_B, _T("Pakistan")},
  103. {93, AnalogVideo_PAL_B, _T("Afghanistan")},
  104. {94, AnalogVideo_PAL_B, _T("Sri Lanka")},
  105. {95, AnalogVideo_NTSC_M, _T("Myanmar")},
  106. {98, AnalogVideo_SECAM_B, _T("Iran")},
  107. {212, AnalogVideo_SECAM_B, _T("Morocco")},
  108. {213, AnalogVideo_PAL_B, _T("Algeria")},
  109. {216, AnalogVideo_SECAM_B, _T("Tunisia")},
  110. {218, AnalogVideo_SECAM_B, _T("Libya")},
  111. {220, AnalogVideo_SECAM_K, _T("Gambia")},
  112. {221, AnalogVideo_SECAM_K, _T("Senegal Republic")},
  113. {222, AnalogVideo_SECAM_B, _T("Mauritania")},
  114. {223, AnalogVideo_SECAM_K, _T("Mali")},
  115. {224, AnalogVideo_SECAM_K, _T("Guinea")},
  116. {225, AnalogVideo_SECAM_K, _T("Cote D'Ivoire")},
  117. {226, AnalogVideo_SECAM_K, _T("Burkina Faso")},
  118. {227, AnalogVideo_SECAM_K, _T("Niger")},
  119. {228, AnalogVideo_SECAM_K, _T("Togo")},
  120. {229, AnalogVideo_SECAM_K, _T("Benin")},
  121. {230, AnalogVideo_SECAM_B, _T("Mauritius")},
  122. {231, AnalogVideo_PAL_B, _T("Liberia")},
  123. {232, AnalogVideo_PAL_B, _T("Sierra Leone")},
  124. {233, AnalogVideo_PAL_B, _T("Ghana")},
  125. {234, AnalogVideo_PAL_B, _T("Nigeria")},
  126. {235, AnalogVideo_PAL_B, _T("Chad")},
  127. {236, AnalogVideo_PAL_B, _T("Central African Republic")},
  128. {237, AnalogVideo_PAL_B, _T("Cameroon")},
  129. {238, AnalogVideo_NTSC_M, _T("Cape Verde Islands")},
  130. {239, AnalogVideo_PAL_B, _T("Sao Tome and Principe")},
  131. {240, AnalogVideo_SECAM_B, _T("Equatorial Guinea")},
  132. {241, AnalogVideo_SECAM_K, _T("Gabon")},
  133. {242, AnalogVideo_SECAM_D, _T("Congo")},
  134. {243, AnalogVideo_SECAM_K, _T("Congo(DRC)")},
  135. {244, AnalogVideo_PAL_I, _T("Angola")},
  136. {245, AnalogVideo_NTSC_M, _T("Guinea-Bissau")},
  137. {246, AnalogVideo_NTSC_M, _T("Diego Garcia")},
  138. {247, AnalogVideo_NTSC_M, _T("Ascension Island")},
  139. {248, AnalogVideo_PAL_B, _T("Seychelle Islands")},
  140. {249, AnalogVideo_PAL_B, _T("Sudan")},
  141. {250, AnalogVideo_PAL_B, _T("Rwanda")},
  142. {251, AnalogVideo_PAL_B, _T("Ethiopia")},
  143. {252, AnalogVideo_PAL_B, _T("Somalia")},
  144. {253, AnalogVideo_SECAM_K, _T("Djibouti")},
  145. {254, AnalogVideo_PAL_B, _T("Kenya")},
  146. {255, AnalogVideo_PAL_B, _T("Tanzania")},
  147. {256, AnalogVideo_PAL_B, _T("Uganda")},
  148. {257, AnalogVideo_SECAM_K, _T("Burundi")},
  149. {258, AnalogVideo_PAL_B, _T("Mozambique")},
  150. {260, AnalogVideo_PAL_B, _T("Zambia")},
  151. {261, AnalogVideo_SECAM_K, _T("Madagascar")},
  152. {262, AnalogVideo_SECAM_K, _T("Reunion Island")},
  153. {263, AnalogVideo_PAL_B, _T("Zimbabwe")},
  154. {264, AnalogVideo_PAL_I, _T("Namibia")},
  155. {265, AnalogVideo_NTSC_M, _T("Malawi")},
  156. {266, AnalogVideo_PAL_I, _T("Lesotho")},
  157. {267, AnalogVideo_SECAM_K, _T("Botswana")},
  158. {268, AnalogVideo_PAL_B, _T("Swaziland")},
  159. {269, AnalogVideo_SECAM_K, _T("Mayotte Island")},
  160. // {269, AnalogVideo_NTSC_M, _T("Comoros")},
  161. {290, AnalogVideo_NTSC_M, _T("St. Helena")},
  162. {291, AnalogVideo_NTSC_M, _T("Eritrea")},
  163. {297, AnalogVideo_NTSC_M, _T("Aruba")},
  164. {298, AnalogVideo_PAL_B, _T("Faroe Islands")},
  165. {299, AnalogVideo_NTSC_M, _T("Greenland")},
  166. {350, AnalogVideo_PAL_B, _T("Gibraltar")},
  167. {351, AnalogVideo_PAL_B, _T("Portugal")},
  168. {352, AnalogVideo_PAL_B, _T("Luxembourg")},
  169. {353, AnalogVideo_PAL_I, _T("Ireland")},
  170. {354, AnalogVideo_PAL_B, _T("Iceland")},
  171. {355, AnalogVideo_PAL_B, _T("Albania")},
  172. {356, AnalogVideo_PAL_B, _T("Malta")},
  173. {357, AnalogVideo_PAL_B, _T("Cyprus")},
  174. {358, AnalogVideo_PAL_B, _T("Finland")},
  175. {359, AnalogVideo_SECAM_D, _T("Bulgaria")},
  176. {370, AnalogVideo_PAL_B, _T("Lithuania")},
  177. {371, AnalogVideo_SECAM_D, _T("Latvia")},
  178. {372, AnalogVideo_PAL_B, _T("Estonia")},
  179. {373, AnalogVideo_SECAM_D, _T("Moldova")},
  180. {374, AnalogVideo_SECAM_D, _T("Armenia")},
  181. {375, AnalogVideo_SECAM_D, _T("Belarus")},
  182. {376, AnalogVideo_NTSC_M, _T("Andorra")},
  183. {377, AnalogVideo_SECAM_G, _T("Monaco")},
  184. {378, AnalogVideo_PAL_B, _T("San Marino")},
  185. {380, AnalogVideo_SECAM_D, _T("Ukraine")},
  186. {381, AnalogVideo_PAL_B, _T("Serbia and Montenegro")},
  187. {385, AnalogVideo_PAL_B, _T("Croatia")},
  188. {386, AnalogVideo_PAL_B, _T("Slovenia")},
  189. {387, AnalogVideo_PAL_B, _T("Bosnia and Herzegovina")},
  190. {389, AnalogVideo_PAL_B, _T("F.Y.R.O.M. (Former Yugoslav Republic of Macedonia)")},
  191. {420, AnalogVideo_PAL_D, _T("Czech Republic")},
  192. {421, AnalogVideo_PAL_B, _T("Slovak Republic")},
  193. {500, AnalogVideo_PAL_I, _T("Falkland Islands (Islas Malvinas)")},
  194. {501, AnalogVideo_NTSC_M, _T("Belize")},
  195. {502, AnalogVideo_NTSC_M, _T("Guatemala")},
  196. {503, AnalogVideo_NTSC_M, _T("El Salvador")},
  197. {504, AnalogVideo_NTSC_M, _T("Honduras")},
  198. {505, AnalogVideo_NTSC_M, _T("Nicaragua")},
  199. {506, AnalogVideo_NTSC_M, _T("Costa Rica")},
  200. {507, AnalogVideo_NTSC_M, _T("Panama")},
  201. {508, AnalogVideo_SECAM_K, _T("St. Pierre and Miquelon")},
  202. {509, AnalogVideo_NTSC_M, _T("Haiti")},
  203. {590, AnalogVideo_SECAM_K, _T("Guadeloupe")},
  204. // {590, AnalogVideo_NTSC_M, _T("French Antilles")},
  205. {591, AnalogVideo_PAL_N, _T("Bolivia")},
  206. {592, AnalogVideo_SECAM_K, _T("Guyana")},
  207. {593, AnalogVideo_NTSC_M, _T("Ecuador")},
  208. {594, AnalogVideo_SECAM_K, _T("French Guiana")},
  209. {595, AnalogVideo_PAL_N, _T("Paraguay")},
  210. {596, AnalogVideo_SECAM_K, _T("Martinique")},
  211. {597, AnalogVideo_NTSC_M, _T("Suriname")},
  212. {598, AnalogVideo_PAL_N, _T("Uruguay")},
  213. {599, AnalogVideo_NTSC_M, _T("Netherlands Antilles")},
  214. {670, AnalogVideo_NTSC_M, _T("Saipan Island")},
  215. // {670, AnalogVideo_NTSC_M, _T("Rota Island")},
  216. // {670, AnalogVideo_NTSC_M, _T("Tinian Island")},
  217. {671, AnalogVideo_NTSC_M, _T("Guam")},
  218. {672, AnalogVideo_NTSC_M, _T("Christmas Island")},
  219. {672, AnalogVideo_NTSC_M, _T("Australian Antarctic Territory")},
  220. //{672, AnalogVideo_PAL_B, _T("Norfolk Island")},
  221. {673, AnalogVideo_PAL_B, _T("Brunei")},
  222. {674, AnalogVideo_NTSC_M, _T("Nauru")},
  223. {675, AnalogVideo_PAL_B, _T("Papua New Guinea")},
  224. {676, AnalogVideo_NTSC_M, _T("Tonga")},
  225. {677, AnalogVideo_NTSC_M, _T("Solomon Islands")},
  226. {678, AnalogVideo_NTSC_M, _T("Vanuatu")},
  227. {679, AnalogVideo_NTSC_M, _T("Fiji Islands")},
  228. {680, AnalogVideo_NTSC_M, _T("Palau")},
  229. {681, AnalogVideo_SECAM_K, _T("Wallis and Futuna Islands")},
  230. {682, AnalogVideo_PAL_B, _T("Cook Islands")},
  231. {683, AnalogVideo_NTSC_M, _T("Niue")},
  232. {684, AnalogVideo_NTSC_M, _T("Territory of American Samoa")},
  233. {685, AnalogVideo_PAL_B, _T("Samoa")},
  234. {686, AnalogVideo_PAL_B, _T("Kiribati Republic")},
  235. {687, AnalogVideo_SECAM_K, _T("New Caledonia")},
  236. {688, AnalogVideo_NTSC_M, _T("Tuvalu")},
  237. {689, AnalogVideo_SECAM_K, _T("French Polynesia")},
  238. {690, AnalogVideo_NTSC_M, _T("Tokelau")},
  239. {691, AnalogVideo_NTSC_M, _T("Micronesia")},
  240. {692, AnalogVideo_NTSC_M, _T("Marshall Islands")},
  241. {850, AnalogVideo_SECAM_D, _T("Korea (North)")},
  242. {852, AnalogVideo_PAL_I, _T("Hong Kong SAR")},
  243. {853, AnalogVideo_PAL_I, _T("Macao SAR")},
  244. {855, AnalogVideo_PAL_B, _T("Cambodia")},
  245. {856, AnalogVideo_PAL_B, _T("Laos")},
  246. {871, AnalogVideo_NTSC_M, _T("INMARSAT (Atlantic-East)")},
  247. {872, AnalogVideo_NTSC_M, _T("INMARSAT (Pacific)")},
  248. {873, AnalogVideo_NTSC_M, _T("INMARSAT (Indian)")},
  249. {874, AnalogVideo_NTSC_M, _T("INMARSAT (Atlantic-West)")},
  250. {880, AnalogVideo_PAL_B, _T("Bangladesh")},
  251. {886, AnalogVideo_NTSC_M, _T("Taiwan")},
  252. {960, AnalogVideo_PAL_B, _T("Maldives")},
  253. {961, AnalogVideo_SECAM_B, _T("Lebanon")},
  254. {962, AnalogVideo_PAL_B, _T("Jordan")},
  255. {963, AnalogVideo_SECAM_B, _T("Syria")},
  256. {964, AnalogVideo_SECAM_B, _T("Iraq")},
  257. {965, AnalogVideo_PAL_B, _T("Kuwait")},
  258. {966, AnalogVideo_SECAM_B, _T("Saudi Arabia")},
  259. {967, AnalogVideo_PAL_B, _T("Yemen")},
  260. {968, AnalogVideo_PAL_B, _T("Oman")},
  261. {971, AnalogVideo_PAL_B, _T("United Arab Emirates")},
  262. {972, AnalogVideo_PAL_B, _T("Israel")},
  263. {973, AnalogVideo_PAL_B, _T("Bahrain")},
  264. {974, AnalogVideo_PAL_B, _T("Qatar")},
  265. {975, AnalogVideo_NTSC_M, _T("Bhutan")},
  266. {976, AnalogVideo_SECAM_D, _T("Mongolia")},
  267. {977, AnalogVideo_PAL_B, _T("Nepal")},
  268. {994, AnalogVideo_SECAM_D, _T("Azerbaijan")},
  269. {995, AnalogVideo_SECAM_D,_T("Georgia")},
  270. };
  271. // COpenCapDeviceDlg dialog
  272. //IMPLEMENT_DYNAMIC(COpenCapDeviceDlg, CResizableDialog)
  273. COpenCapDeviceDlg::COpenCapDeviceDlg(CWnd* pParent /*=NULL*/)
  274. : CResizableDialog(COpenCapDeviceDlg::IDD, pParent)
  275. , m_vidstr(_T(""))
  276. , m_audstr(_T(""))
  277. , m_country(1)
  278. {
  279. }
  280. COpenCapDeviceDlg::~COpenCapDeviceDlg()
  281. {
  282. }
  283. void COpenCapDeviceDlg::DoDataExchange(CDataExchange* pDX)
  284. {
  285. __super::DoDataExchange(pDX);
  286. DDX_Control(pDX, IDC_COMBO1, m_vidctrl);
  287. DDX_Control(pDX, IDC_COMBO2, m_audctrl);
  288. DDX_Control(pDX, IDC_COMBO9, m_countryctrl);
  289. }
  290. BEGIN_MESSAGE_MAP(COpenCapDeviceDlg, CResizableDialog)
  291. ON_BN_CLICKED(IDOK, OnBnClickedOk)
  292. END_MESSAGE_MAP()
  293. // COpenCapDeviceDlg message handlers
  294. BOOL COpenCapDeviceDlg::OnInitDialog()
  295. {
  296. __super::OnInitDialog();
  297. AddAnchor(m_vidctrl, TOP_LEFT, TOP_RIGHT);
  298. AddAnchor(m_audctrl, TOP_LEFT, TOP_RIGHT);
  299. AddAnchor(m_countryctrl, TOP_LEFT, TOP_RIGHT);
  300. AddAnchor(IDOK, TOP_CENTER);
  301. AddAnchor(IDCANCEL, TOP_CENTER);
  302. CRect r;
  303. GetWindowRect(r);
  304. CSize s = r.Size();
  305. SetMinTrackSize(s);
  306. s.cx = 1000;
  307. SetMaxTrackSize(s);
  308. CString dummy = _T("dummy");
  309. CString vidstr = AfxGetApp()->GetProfileString(_T("Capture"), _T("VidDispName"), dummy);
  310. CString audstr = AfxGetApp()->GetProfileString(_T("Capture"), _T("AudDispName"), dummy);
  311. long country = AfxGetApp()->GetProfileInt(_T("Capture"), _T("Country"), 1);
  312. int iSel = vidstr == dummy ? 0 : -1;
  313. BeginEnumSysDev(CLSID_VideoInputDeviceCategory, pMoniker)
  314. {
  315. CComPtr<IPropertyBag> pPB;
  316. pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void**)&pPB);
  317. CComVariant var;
  318. pPB->Read(CComBSTR(_T("FriendlyName")), &var, NULL);
  319. int i = m_vidctrl.AddString(CString(var.bstrVal));
  320. LPOLESTR strName = NULL;
  321. if(SUCCEEDED(pMoniker->GetDisplayName(NULL, NULL, &strName)))
  322. {
  323. m_vidnames.Add(CString(strName));
  324. if(vidstr == CString(strName)) iSel = i;
  325. CoTaskMemFree(strName);
  326. }
  327. }
  328. EndEnumSysDev
  329. if(m_vidctrl.GetCount())
  330. m_vidctrl.SetCurSel(iSel);
  331. iSel = audstr == dummy ? 0 : -1;
  332. BeginEnumSysDev(CLSID_AudioInputDeviceCategory, pMoniker)
  333. {
  334. CComPtr<IPropertyBag> pPB;
  335. pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void**)&pPB);
  336. CComVariant var;
  337. pPB->Read(CComBSTR(_T("FriendlyName")), &var, NULL);
  338. int i = m_audctrl.AddString(CString(var.bstrVal));
  339. LPOLESTR strName = NULL;
  340. if(SUCCEEDED(pMoniker->GetDisplayName(NULL, NULL, &strName)))
  341. {
  342. m_audnames.Add(CString(strName));
  343. if(audstr == CString(strName)) iSel = i;
  344. CoTaskMemFree(strName);
  345. }
  346. }
  347. EndEnumSysDev
  348. {
  349. int i = m_audctrl.AddString(_T("<Video Capture Device>"));
  350. m_audnames.Add(_T(""));
  351. if(audstr.IsEmpty()) iSel = i;
  352. }
  353. if(m_audctrl.GetCount())
  354. m_audctrl.SetCurSel(iSel);
  355. iSel = 0;
  356. for(int j = 0; j < countof(s_countrycodes); j++)
  357. {
  358. CString standard;
  359. switch(s_countrycodes[j].standard)
  360. {
  361. case AnalogVideo_NTSC_M: standard = _T("NTSC M"); break;
  362. case AnalogVideo_NTSC_M_J: standard = _T("NTSC M J"); break;
  363. case AnalogVideo_NTSC_433: standard = _T("NTSC 433"); break;
  364. case AnalogVideo_PAL_B: standard = _T("PAL B"); break;
  365. case AnalogVideo_PAL_D: standard = _T("PAL D"); break;
  366. case AnalogVideo_PAL_G: standard = _T("PAL G"); break;
  367. case AnalogVideo_PAL_H: standard = _T("PAL H"); break;
  368. case AnalogVideo_PAL_I: standard = _T("PAL I"); break;
  369. case AnalogVideo_PAL_M: standard = _T("PAL M"); break;
  370. case AnalogVideo_PAL_N: standard = _T("PAL N"); break;
  371. case AnalogVideo_PAL_60: standard = _T("PAL 60"); break;
  372. case AnalogVideo_SECAM_B: standard = _T("SECAM B"); break;
  373. case AnalogVideo_SECAM_D: standard = _T("SECAM D"); break;
  374. case AnalogVideo_SECAM_G: standard = _T("SECAM G"); break;
  375. case AnalogVideo_SECAM_H: standard = _T("SECAM H"); break;
  376. case AnalogVideo_SECAM_K: standard = _T("SECAM K"); break;
  377. case AnalogVideo_SECAM_K1: standard = _T("SECAM K1"); break;
  378. case AnalogVideo_SECAM_L: standard = _T("SECAM L"); break;
  379. case AnalogVideo_SECAM_L1: standard = _T("SECAM L1"); break;
  380. case AnalogVideo_PAL_N_COMBO: standard = _T("PAL N COMBO"); break;
  381. }
  382. CString str;
  383. str.Format(_T("%d - %s - %s"), s_countrycodes[j].code, s_countrycodes[j].str, standard);
  384. int i = m_countryctrl.AddString(str);
  385. m_countryctrl.SetItemDataPtr(i, &s_countrycodes[j]);
  386. if(country == s_countrycodes[j].code) iSel = i;
  387. }
  388. if(m_countryctrl.GetCount())
  389. m_countryctrl.SetCurSel(iSel);
  390. return TRUE;  // return TRUE unless you set the focus to a control
  391. // EXCEPTION: OCX Property Pages should return FALSE
  392. }
  393. void COpenCapDeviceDlg::OnBnClickedOk()
  394. {
  395. UpdateData();
  396. if(m_vidctrl.GetCurSel() >= 0) 
  397. {
  398. m_vidstr = m_vidnames[m_vidctrl.GetCurSel()];
  399. AfxGetApp()->WriteProfileString(_T("Capture"), _T("VidDispName"), m_vidstr);
  400. }
  401. if(m_audctrl.GetCurSel() >= 0)
  402. {
  403. m_audstr = m_audnames[m_audctrl.GetCurSel()];
  404. AfxGetApp()->WriteProfileString(_T("Capture"), _T("AudDispName"), m_audstr);
  405. }
  406. if(m_countryctrl.GetCurSel() >= 0)
  407. {
  408. m_country = ((cc_t*)m_countryctrl.GetItemDataPtr(m_countryctrl.GetCurSel()))->code;
  409. AfxGetApp()->WriteProfileInt(_T("Capture"), _T("Country"), m_country);
  410. }
  411. OnOK();
  412. }