InitList.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. // InitList.cpp
  2. //
  3. #include "stdafx.h"
  4. #include "resource.h"
  5. #include VIEWCLASS_HEADER_FILE
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. int VIEWCLASS::m_nColWidths[6] = { 8, 14, 12, 9, 12, 9 }; // sixty-fourths
  12. ///////////////////////////////////////////////////////////////////////////////
  13. // InitListCtrl
  14. void VIEWCLASS::InitListCtrl(CXListCtrl * pList)
  15. {
  16. ASSERT(pList);
  17. if (!pList)
  18. return;
  19. // set column width according to window rect
  20. CRect rect;
  21. pList->GetWindowRect(&rect);
  22. int w = rect.Width() - 2;
  23. TCHAR * lpszHeaders[] = { _T("Enable"),
  24. _T("Item"),
  25. _T("Pct"),
  26. _T("Status"),
  27. _T("City"),
  28. _T("Population"),
  29. NULL };
  30. int i;
  31. int total_cx = 0;
  32. LV_COLUMN lvcolumn;
  33. memset(&lvcolumn, 0, sizeof(lvcolumn));
  34. w = w - ::GetSystemMetrics(SM_CXVSCROLL); // width of vertical scroll bar
  35. // add columns
  36. for (i = 0; ; i++)
  37. {
  38. if (lpszHeaders[i] == NULL)
  39. break;
  40. lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
  41. lvcolumn.fmt = (i == 1) ? LVCFMT_LEFT : LVCFMT_CENTER;
  42. lvcolumn.fmt = (i == 5) ? LVCFMT_RIGHT : lvcolumn.fmt;
  43. lvcolumn.pszText = lpszHeaders[i];
  44. lvcolumn.iSubItem = i;
  45. lvcolumn.cx = (lpszHeaders[i+1] == NULL) ? w - total_cx - 2 : (w * m_nColWidths[i]) / 64;
  46. total_cx += lvcolumn.cx;
  47. pList->InsertColumn(i, &lvcolumn);
  48. }
  49. #if 0 // -----------------------------------------------------------
  50. // create the image list from bitmap resource
  51. VERIFY(pList->m_cImageList.Create(13, 13, ILC_COLOR24, 3, 1));
  52. CBitmap bm;
  53. bm.LoadBitmap(IDB_CHECKBOXES);
  54. pList->m_cImageList.Add(&bm, RGB(255, 0, 255));
  55. pList->m_HeaderCtrl.SetImageList(&pList->m_cImageList);
  56. #endif // -----------------------------------------------------------
  57. // iterate through header items and attach the image list
  58. HDITEM hditem;
  59. for (i = 0; i < pList->m_HeaderCtrl.GetItemCount(); i++)
  60. {
  61. hditem.mask = HDI_IMAGE | HDI_FORMAT;
  62. pList->m_HeaderCtrl.GetItem(i, &hditem);
  63. hditem.fmt |= HDF_IMAGE;
  64. if (i == 0 || i == 3)
  65. hditem.iImage = XHEADERCTRL_UNCHECKED_IMAGE;
  66. else
  67. hditem.iImage = XHEADERCTRL_NO_IMAGE;
  68. pList->m_HeaderCtrl.SetItem(i, &hditem);
  69. }
  70. memset(&lvcolumn, 0, sizeof(lvcolumn));
  71. // set the format again - must do this twice or first column does not get set
  72. for (i = 0; ; i++)
  73. {
  74. if (lpszHeaders[i] == NULL)
  75. break;
  76. lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM;
  77. lvcolumn.fmt = (i == 1) ? LVCFMT_LEFT : LVCFMT_CENTER;
  78. lvcolumn.fmt = (i == 5) ? LVCFMT_RIGHT : lvcolumn.fmt;
  79. lvcolumn.iSubItem = i;
  80. pList->SetColumn(i, &lvcolumn);
  81. }
  82. }
  83. ///////////////////////////////////////////////////////////////////////////////
  84. // FillListCtrl
  85. void VIEWCLASS::FillListCtrl(CXListCtrl * pList)
  86. {
  87. static TCHAR * szCityNames[] =
  88. {
  89. _T("Tokyo"),
  90. _T("Mexico City"),
  91. _T("Seoul"),
  92. _T("New York"),
  93. _T("Sao Paulo"),
  94. _T("Bombay"),
  95. _T("Delhi"),
  96. _T("Shanghai"),
  97. _T("Los Angeles"),
  98. _T("Osaka"),
  99. _T("Jakarta"),
  100. _T("Calcutta"),
  101. _T("Cairo"),
  102. _T("Manila"),
  103. _T("Karachi"),
  104. _T("Moscow"),
  105. _T("Buenos Aires"),
  106. _T("Dacca"),
  107. _T("Rio de Janeiro"),
  108. _T("Beijing"),
  109. _T("London"),
  110. _T("Tehran"),
  111. _T("Istanbul"),
  112. _T("Lagos"),
  113. _T("Shenzhen"),
  114. _T("Paris"),
  115. _T("Chicago"),
  116. _T("Canton"),
  117. _T("Chungking"),
  118. _T("Wuhan"),
  119. _T("Lima"),
  120. _T("Bangkok"),
  121. _T("Bogota"),
  122. _T("Washington"),
  123. _T("Nagoya"),
  124. _T("Madras"),
  125. _T("Lahore"),
  126. _T("Hong Kong"),
  127. _T("Johannesburg"),
  128. _T("San Francisco"),
  129. _T("Bangalore"),
  130. _T("Kinshasa"),
  131. _T("Taipei"),
  132. _T("Hyderabad"),
  133. _T("Tientsin"),
  134. _T("Dallas"),
  135. _T("Philadelphia"),
  136. _T("Santiago"),
  137. _T("Detroit"),
  138. _T("Ruhr"),
  139. _T("Boston"),
  140. _T("Khartoum"),
  141. _T("Ahmadabad"),
  142. _T("Belo Horizonte"),
  143. _T("Madrid"),
  144. _T("Baghdad"),
  145. _T("Miami"),
  146. _T("Houston"),
  147. _T("Ho Chi Minh City"),
  148. _T("Toronto"),
  149. _T("St. Petersburg"),
  150. _T("Atlanta"),
  151. _T("Alexandria"),
  152. _T("Caracas"),
  153. _T("Singapore"),
  154. _T("Riyadh"),
  155. _T("Shenyang"),
  156. _T("Rangoon"),
  157. _T("Poona"),
  158. _T("Guadalajara"),
  159. _T("Sydney"),
  160. _T("Chittagong"),
  161. _T("Kuala Lumpur"),
  162. _T("Berlin"),
  163. _T("Algiers"),
  164. _T("Porto Alegre"),
  165. _T("Abidjan"),
  166. _T("Monterrey"),
  167. _T("Phoenix"),
  168. _T("Casablanca"),
  169. _T("Milan"),
  170. _T("Barcelona"),
  171. _T("Ankara"),
  172. _T("Recife"),
  173. _T("Seattle"),
  174. _T("Busan"),
  175. _T("Melbourne"),
  176. _T("Surat"),
  177. _T("Montreal"),
  178. _T("Brasília"),
  179. _T("Pyongyang"),
  180. _T("Sian"),
  181. _T("Athens"),
  182. _T("Durban"),
  183. _T("Fortaleza"),
  184. _T("Nanking"),
  185. _T("Salvador"),
  186. _T("Medellin"),
  187. _T("Harbin"),
  188. _T("Minneapolis"),
  189. NULL
  190. };
  191. static TCHAR * szCityPopulations[] =
  192. {
  193. _T("34,200,000"),
  194. _T("22,800,000"),
  195. _T("22,300,000"),
  196. _T("21,900,000"),
  197. _T("20,200,000"),
  198. _T("19,850,000"),
  199. _T("19,700,000"),
  200. _T("18,150,000"),
  201. _T("18,000,000"),
  202. _T("16,800,000"),
  203. _T("16,550,000"),
  204. _T("15,650,000"),
  205. _T("15,600,000"),
  206. _T("14,950,000"),
  207. _T("14,300,000"),
  208. _T("13,750,000"),
  209. _T("13,450,000"),
  210. _T("13,250,000"),
  211. _T("12,150,000"),
  212. _T("12,100,000"),
  213. _T("12,000,000"),
  214. _T("11,850,000"),
  215. _T("11,500,000"),
  216. _T("11,100,000"),
  217. _T("10,700,000"),
  218. _T("9,950,000"),
  219. _T("9,750,000"),
  220. _T("9,550,000"),
  221. _T("9,350,000"),
  222. _T("9,100,000"),
  223. _T("8,550,000"),
  224. _T("8,450,000"),
  225. _T("8,350,000"),
  226. _T("8,150,000"),
  227. _T("8,050,000"),
  228. _T("7,600,000"),
  229. _T("7,550,000"),
  230. _T("7,400,000"),
  231. _T("7,400,000"),
  232. _T("7,250,000"),
  233. _T("7,100,000"),
  234. _T("7,000,000"),
  235. _T("6,950,000"),
  236. _T("6,700,000"),
  237. _T("6,350,000"),
  238. _T("6,000,000"),
  239. _T("6,000,000"),
  240. _T("5,900,000"),
  241. _T("5,800,000"),
  242. _T("5,800,000"),
  243. _T("5,700,000"),
  244. _T("5,650,000"),
  245. _T("5,600,000"),
  246. _T("5,600,000"),
  247. _T("5,600,000"),
  248. _T("5,550,000"),
  249. _T("5,550,000"),
  250. _T("5,400,000"),
  251. _T("5,400,000"),
  252. _T("5,400,000"),
  253. _T("5,250,000"),
  254. _T("5,100,000"),
  255. _T("5,000,000"),
  256. _T("4,700,000"),
  257. _T("4,650,000"),
  258. _T("4,550,000"),
  259. _T("4,550,000"),
  260. _T("4,500,000"),
  261. _T("4,450,000"),
  262. _T("4,350,000"),
  263. _T("4,350,000"),
  264. _T("4,300,000"),
  265. _T("4,300,000"),
  266. _T("4,200,000"),
  267. _T("4,150,000"),
  268. _T("4,150,000"),
  269. _T("4,100,000"),
  270. _T("3,950,000"),
  271. _T("3,900,000"),
  272. _T("3,850,000"),
  273. _T("3,850,000"),
  274. _T("3,800,000"),
  275. _T("3,750,000"),
  276. _T("3,750,000"),
  277. _T("3,750,000"),
  278. _T("3,700,000"),
  279. _T("3,700,000"),
  280. _T("3,700,000"),
  281. _T("3,650,000"),
  282. _T("3,600,000"),
  283. _T("3,600,000"),
  284. _T("3,600,000"),
  285. _T("3,500,000"),
  286. _T("3,500,000"),
  287. _T("3,500,000"),
  288. _T("3,500,000"),
  289. _T("3,500,000"),
  290. _T("3,450,000"),
  291. _T("3,400,000"),
  292. _T("3,400,000"),
  293. NULL
  294. };
  295. /////////////////////////////////////////////////////////////////
  296. /////////////////////////////////////////////////////////////////
  297. //
  298. // Note - the string arrays must persist for life of list control
  299. //
  300. /////////////////////////////////////////////////////////////////
  301. /////////////////////////////////////////////////////////////////
  302. // a list of some of my favorite things - note that this list
  303. // is not sorted
  304. m_sa1.RemoveAll();
  305. m_sa1.Add(_T("banana"));
  306. m_sa1.Add(_T("strawberry"));
  307. m_sa1.Add(_T("tangerine"));
  308. m_sa1.Add(_T("cherry"));
  309. m_sa1.Add(_T("plum"));
  310. m_sa1.Add(_T("cranberry"));
  311. m_sa1.Add(_T("blueberry"));
  312. m_sa1.Add(_T("lime"));
  313. m_sa1.Add(_T("pear"));
  314. m_sa1.Add(_T("lemon"));
  315. m_sa1.Add(_T("orange"));
  316. m_sa1.Add(_T("peach"));
  317. m_sa1.Add(_T("apple"));
  318. m_sa1.Add(_T("raspberry"));
  319. m_sa1.Add(_T("grape"));
  320. // a list of some more of my favorite things
  321. m_sa2.RemoveAll();
  322. m_sa2.Add(_T("Aidi"));
  323. m_sa2.Add(_T("Akbas"));
  324. m_sa2.Add(_T("Ariegeois"));
  325. m_sa2.Add(_T("Boerboel"));
  326. m_sa2.Add(_T("Boolomo"));
  327. m_sa2.Add(_T("Borzoi"));
  328. m_sa2.Add(_T("Broholmer"));
  329. m_sa2.Add(_T("Caniche"));
  330. m_sa2.Add(_T("Charplaninatz"));
  331. m_sa2.Add(_T("Drok"));
  332. m_sa2.Add(_T("Elo"));
  333. m_sa2.Add(_T("Farou"));
  334. m_sa2.Add(_T("Godo"));
  335. m_sa2.Add(_T("Groenendael"));
  336. m_sa2.Add(_T("Hahoavu"));
  337. m_sa2.Add(_T("Heidewachtel"));
  338. m_sa2.Add(_T("Hovawart"));
  339. m_sa2.Add(_T("Juzak"));
  340. m_sa2.Add(_T("Kai"));
  341. m_sa2.Add(_T("Kangal"));
  342. m_sa2.Add(_T("Karabash"));
  343. m_sa2.Add(_T("Kishu"));
  344. m_sa2.Add(_T("Kuvasz"));
  345. m_sa2.Add(_T("Landseer"));
  346. m_sa2.Add(_T("Levesque"));
  347. m_sa2.Add(_T("Licaon"));
  348. m_sa2.Add(_T("Maliki"));
  349. m_sa2.Add(_T("Mechelaar"));
  350. m_sa2.Add(_T("Mirigung"));
  351. m_sa2.Add(_T("Mudi"));
  352. m_sa2.Add(_T("Noggum"));
  353. m_sa2.Add(_T("Ocherese"));
  354. m_sa2.Add(_T("Phalene"));
  355. m_sa2.Add(_T("Pocadan"));
  356. m_sa2.Add(_T("Podhalan"));
  357. m_sa2.Add(_T("Poitevin"));
  358. m_sa2.Add(_T("Saluki"));
  359. m_sa2.Add(_T("Samojedskaja"));
  360. m_sa2.Add(_T("Samoyed"));
  361. m_sa2.Add(_T("Spion"));
  362. m_sa2.Add(_T("Stichelhaar"));
  363. m_sa2.Add(_T("Taygan"));
  364. m_sa2.Add(_T("Telomian"));
  365. m_sa2.Add(_T("Tornjak"));
  366. m_sa2.Add(_T("Virelade"));
  367. m_sa2.Add(_T("Warrigal"));
  368. pList->LockWindowUpdate(); // ***** lock window updates while filling list *****
  369. pList->DeleteAllItems();
  370. CString str = _T("");
  371. int nItem, nSubItem;
  372. // insert the items and subitems into the list
  373. for (nItem = 0; nItem < 50; nItem++)
  374. {
  375. for (nSubItem = 0; nSubItem < 6; nSubItem++)
  376. {
  377. str = _T("");
  378. if (nSubItem == 0) // checkbox
  379. str = _T(" ");
  380. else if (nSubItem == 1) // combo
  381. str = _T("");
  382. else if (nSubItem == 2) // progress
  383. str = _T("Complete");
  384. else if (nSubItem == 3) // checkbox
  385. str = _T("OK");
  386. else if (nSubItem == 4) // city name
  387. str = szCityNames[nItem];
  388. else if (nSubItem == 5) // city population
  389. str = szCityPopulations[nItem];
  390. // show background coloring
  391. if (nSubItem == 0)
  392. pList->InsertItem(nItem, str);
  393. else if (nItem == 0 && nSubItem == 4)
  394. pList->SetItemText(nItem, nSubItem, str, RGB(0,0,0), RGB(210,221,244));
  395. else if (nItem == 3 && nSubItem == 1)
  396. pList->SetItemText(nItem, nSubItem, str, RGB(0,0,0), RGB(255,230,162));
  397. else if (nItem == 8 && nSubItem == 3)
  398. pList->SetItemText(nItem, nSubItem, str, RGB(0,0,0), RGB(194,209,166));
  399. else if (nItem == 1 && nSubItem == 2)
  400. pList->SetItemText(nItem, nSubItem, str, RGB(0,0,0), RGB(247,202,202));
  401. else
  402. pList->SetItemText(nItem, nSubItem, str);
  403. if (nSubItem == 1 && ((nItem & 1) == 1))
  404. pList->SetComboBox(nItem, nSubItem,
  405. TRUE, // enable combobox
  406. &m_sa1, // pointer to persistent CStringArray
  407. 5, // size of dropdown
  408. 0, // initial combo selection
  409. TRUE); // sort CStringArray
  410. if (nSubItem == 1 && ((nItem & 1) == 0))
  411. pList->SetComboBox(nItem, nSubItem,
  412. TRUE, // enable combobox
  413. &m_sa2, // pointer to persistent CStringArray
  414. 10, // size of dropdown
  415. 3, // initial combo selection
  416. TRUE); // sort CStringArray
  417. if (nSubItem == 0 || nSubItem == 3)
  418. pList->SetCheckbox(nItem, nSubItem, 1);
  419. if (nSubItem == 4)
  420. pList->SetEdit(nItem, nSubItem);
  421. }
  422. }
  423. #ifndef NO_XLISTCTRL_TOOL_TIPS
  424. // set tool tips in second row
  425. nItem = 1;
  426. for (nSubItem = 0; nSubItem < 6; nSubItem++)
  427. {
  428. str.Format(_T("This is %d,%d"), nItem, nSubItem);
  429. pList->SetItemToolTipText(nItem, nSubItem, str);
  430. }
  431. #endif
  432. pList->UnlockWindowUpdate(); // ***** unlock window updates *****
  433. }