ReactOS  0.4.15-dev-448-gd6c4411
gui.cpp
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS Applications Manager
3  * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4  * FILE: base/applications/rapps/gui.cpp
5  * PURPOSE: GUI classes for RAPPS
6  * COPYRIGHT: Copyright 2015 David Quintana (gigaherz@gmail.com)
7  * Copyright 2017 Alexander Shaposhnikov (sanchaez@reactos.org)
8  */
9 #include "rapps.h"
10 
11 #include "rapps.h"
12 #include "rosui.h"
13 #include "crichedit.h"
14 
15 #include <shlobj_undoc.h>
16 #include <shlguid_undoc.h>
17 
18 #include <atlbase.h>
19 #include <atlcom.h>
20 #include <atlwin.h>
21 #include <wininet.h>
22 #include <shellutils.h>
23 #include <rosctrls.h>
24 
25 #define SEARCH_TIMER_ID 'SR'
26 #define LISTVIEW_ICON_SIZE 24
27 #define TREEVIEW_ICON_SIZE 24
28 
30 {
31  DEVMODEW pDevMode;
32  INT ColorDepth;
33 
34  pDevMode.dmSize = sizeof(pDevMode);
35  pDevMode.dmDriverExtra = 0;
36 
38  {
39  /* TODO: Error message */
40  return ILC_COLOR;
41  }
42 
43  switch (pDevMode.dmBitsPerPel)
44  {
45  case 32: ColorDepth = ILC_COLOR32; break;
46  case 24: ColorDepth = ILC_COLOR24; break;
47  case 16: ColorDepth = ILC_COLOR16; break;
48  case 8: ColorDepth = ILC_COLOR8; break;
49  case 4: ColorDepth = ILC_COLOR4; break;
50  default: ColorDepth = ILC_COLOR; break;
51  }
52 
53  return ColorDepth;
54 }
55 
56 class CAppRichEdit:
57  public CUiWindow<CRichEdit>
58 {
59 private:
61  const ATL::CStringW& szText,
62  DWORD StringFlags,
63  DWORD TextFlags)
64  {
65  ATL::CStringW szLoadedText;
66  if (!szText.IsEmpty() && szLoadedText.LoadStringW(uStringID))
67  {
68  InsertText(szLoadedText, StringFlags);
69  InsertText(szText, TextFlags);
70  }
71  }
72 
74  DWORD StringFlags)
75  {
76  ATL::CStringW szLoadedText;
77  if (szLoadedText.LoadStringW(uStringID))
78  {
79  InsertText(L"\n", 0);
80  InsertText(szLoadedText, StringFlags);
81  InsertText(L"\n", 0);
82  }
83  }
84 
86  {
87  if (Info->IsInstalled())
88  {
89  if (Info->HasInstalledVersion())
90  {
91  if (Info->HasUpdate())
93  else
95 
96  LoadAndInsertText(IDS_AINFO_VERSION, Info->m_szInstalledVersion, CFE_BOLD, 0);
97  }
98  else
99  {
101  }
102  }
103  else
104  {
106  }
107 
109  }
110 
112  {
113  ATL::CStringW szLicense;
114  switch (Info->m_LicenseType)
115  {
116  case LICENSE_OPENSOURCE:
117  szLicense.LoadStringW(IDS_LICENSE_OPENSOURCE);
118  break;
119  case LICENSE_FREEWARE:
120  szLicense.LoadStringW(IDS_LICENSE_FREEWARE);
121  break;
122  case LICENSE_TRIAL:
123  szLicense.LoadStringW(IDS_LICENSE_TRIAL);
124  break;
125  default:
127  return;
128  }
129 
130  szLicense += L" (" + Info->m_szLicense + L")";
132  }
133 
135  {
136  if (!Info->HasLanguageInfo())
137  {
138  return;
139  }
140 
141  const INT nTranslations = Info->m_LanguageLCIDs.GetSize();
142  ATL::CStringW szLangInfo;
143  ATL::CStringW szLoadedTextAvailability;
144  ATL::CStringW szLoadedAInfoText;
145 
146  szLoadedAInfoText.LoadStringW(IDS_AINFO_LANGUAGES);
147 
148  if (Info->HasNativeLanguage())
149  {
150  szLoadedTextAvailability.LoadStringW(IDS_LANGUAGE_AVAILABLE_TRANSLATION);
151  if (nTranslations > 1)
152  {
154  buf.LoadStringW(IDS_LANGUAGE_MORE_PLACEHOLDER);
155  szLangInfo.Format(buf, nTranslations - 1);
156  }
157  else
158  {
159  szLangInfo.LoadStringW(IDS_LANGUAGE_SINGLE);
160  szLangInfo = L" (" + szLangInfo + L")";
161  }
162  }
163  else if (Info->HasEnglishLanguage())
164  {
165  szLoadedTextAvailability.LoadStringW(IDS_LANGUAGE_ENGLISH_TRANSLATION);
166  if (nTranslations > 1)
167  {
170  szLangInfo.Format(buf, nTranslations - 1);
171  }
172  else
173  {
174  szLangInfo.LoadStringW(IDS_LANGUAGE_SINGLE);
175  szLangInfo = L" (" + szLangInfo + L")";
176  }
177  }
178  else
179  {
180  szLoadedTextAvailability.LoadStringW(IDS_LANGUAGE_NO_TRANSLATION);
181  }
182 
183  InsertText(szLoadedAInfoText, CFE_BOLD);
184  InsertText(szLoadedTextAvailability, NULL);
185  InsertText(szLangInfo, CFE_ITALIC);
186  }
187 
188 public:
190  {
191  if (!Info) return FALSE;
192 
193  SetText(Info->m_szName, CFE_BOLD);
197 
202 
203  return TRUE;
204  }
205 
207  {
209  ATL::CStringW szInfo;
210 
211  if (!Info || !Info->hSubKey)
212  return FALSE;
213 
214  Info->GetApplicationString(L"DisplayName", szText);
216  InsertText(L"\n", 0);
217 
218 #define GET_INFO(a, b, c, d) \
219  if (Info->GetApplicationString(a, szInfo)) \
220  { \
221  LoadAndInsertText(b, szInfo, c, d); \
222  }
223 
224  GET_INFO(L"DisplayVersion", IDS_INFO_VERSION, CFE_BOLD, 0);
225  GET_INFO(L"Publisher", IDS_INFO_PUBLISHER, CFE_BOLD, 0);
226  GET_INFO(L"RegOwner", IDS_INFO_REGOWNER, CFE_BOLD, 0);
227  GET_INFO(L"ProductID", IDS_INFO_PRODUCTID, CFE_BOLD, 0);
229  GET_INFO(L"HelpTelephone", IDS_INFO_HELPPHONE, CFE_BOLD, 0);
230  GET_INFO(L"Readme", IDS_INFO_README, CFE_BOLD, 0);
231  GET_INFO(L"Contact", IDS_INFO_CONTACT, CFE_BOLD, 0);
232  GET_INFO(L"URLUpdateInfo", IDS_INFO_UPDATEINFO, CFE_BOLD, CFM_LINK);
233  GET_INFO(L"URLInfoAbout", IDS_INFO_INFOABOUT, CFE_BOLD, CFM_LINK);
234  GET_INFO(L"Comments", IDS_INFO_COMMENTS, CFE_BOLD, 0);
235  GET_INFO(L"InstallDate", IDS_INFO_INSTALLDATE, CFE_BOLD, 0);
236  GET_INFO(L"InstallLocation", IDS_INFO_INSTLOCATION, CFE_BOLD, 0);
237  GET_INFO(L"InstallSource", IDS_INFO_INSTALLSRC, CFE_BOLD, 0);
238  GET_INFO(L"UninstallString", IDS_INFO_UNINSTALLSTR, CFE_BOLD, 0);
239  GET_INFO(L"InstallSource", IDS_INFO_INSTALLSRC, CFE_BOLD, 0);
240  GET_INFO(L"ModifyPath", IDS_INFO_MODIFYPATH, CFE_BOLD, 0);
241 
242  return TRUE;
243  }
244 
246  {
248 
249  szText.LoadStringW(IDS_WELCOME_TITLE);
251 
252  szText.LoadStringW(IDS_WELCOME_TEXT);
253  InsertText(szText, 0);
254 
255  szText.LoadStringW(IDS_WELCOME_URL);
257  }
258 };
259 
261  public CUiWindow< CToolbar<> >
262 {
265 
270 
271  VOID AddImageToImageList(HIMAGELIST hImageList, UINT ImageIndex)
272  {
273  HICON hImage;
274 
275  if (!(hImage = (HICON) LoadImageW(hInst,
276  MAKEINTRESOURCE(ImageIndex),
277  IMAGE_ICON,
280  0)))
281  {
282  /* TODO: Error message */
283  }
284 
285  ImageList_AddIcon(hImageList, hImage);
286  DeleteObject(hImage);
287  }
288 
290  {
291  HIMAGELIST hImageList;
292 
293  /* Create the toolbar icon image list */
294  hImageList = ImageList_Create(m_iToolbarHeight,//GetSystemMetrics(SM_CXSMICON),
295  m_iToolbarHeight,//GetSystemMetrics(SM_CYSMICON),
297  1, 1);
298  if (!hImageList)
299  {
300  /* TODO: Error message */
301  return NULL;
302  }
303 
304  AddImageToImageList(hImageList, IDI_INSTALL);
305  AddImageToImageList(hImageList, IDI_UNINSTALL);
306  AddImageToImageList(hImageList, IDI_MODIFY);
307  AddImageToImageList(hImageList, IDI_CHECK_ALL);
308  AddImageToImageList(hImageList, IDI_REFRESH);
309  AddImageToImageList(hImageList, IDI_UPDATE_DB);
310  AddImageToImageList(hImageList, IDI_SETTINGS);
311  AddImageToImageList(hImageList, IDI_EXIT);
312 
313  return hImageList;
314  }
315 
316 public:
318  {
319  }
320 
322  {
323  UINT idButton = (UINT) lpttt->hdr.idFrom;
324 
325  switch (idButton)
326  {
327  case ID_EXIT:
328  lpttt->lpszText = MAKEINTRESOURCEW(IDS_TOOLTIP_EXIT);
329  break;
330 
331  case ID_INSTALL:
332  lpttt->lpszText = MAKEINTRESOURCEW(IDS_TOOLTIP_INSTALL);
333  break;
334 
335  case ID_UNINSTALL:
336  lpttt->lpszText = MAKEINTRESOURCEW(IDS_TOOLTIP_UNINSTALL);
337  break;
338 
339  case ID_MODIFY:
340  lpttt->lpszText = MAKEINTRESOURCEW(IDS_TOOLTIP_MODIFY);
341  break;
342 
343  case ID_SETTINGS:
344  lpttt->lpszText = MAKEINTRESOURCEW(IDS_TOOLTIP_SETTINGS);
345  break;
346 
347  case ID_REFRESH:
348  lpttt->lpszText = MAKEINTRESOURCEW(IDS_TOOLTIP_REFRESH);
349  break;
350 
351  case ID_RESETDB:
352  lpttt->lpszText = MAKEINTRESOURCEW(IDS_TOOLTIP_UPDATE_DB);
353  break;
354  }
355  }
356 
358  {
359  /* Create buttons */
360  TBBUTTON Buttons[] =
361  { /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */
366  { -1, 0, TBSTATE_ENABLED, BTNS_SEP, { 0 }, 0, 0 },
367  { 4, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, 0 },
368  { 5, ID_RESETDB, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, 0 },
369  { -1, 0, TBSTATE_ENABLED, BTNS_SEP, { 0 }, 0, 0 },
370  { 6, ID_SETTINGS, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, 0 },
371  { 7, ID_EXIT, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, { 0 }, 0, 0 },
372  };
373 
378 
381  0, 0, 0, 0,
382  hwndParent,
383  0, hInst, NULL);
384 
385  if (!m_hWnd)
386  {
387  /* TODO: Show error message */
388  return FALSE;
389  }
390 
393 
394  /* Set image list */
395  HIMAGELIST hImageList = InitImageList();
396 
397  if (!hImageList)
398  {
399  /* TODO: Show error message */
400  return FALSE;
401  }
402 
403  ImageList_Destroy(SetImageList(hImageList));
404 
406 
407  /* Remember ideal width to use as a max width of buttons */
408  SIZE size;
411 
412  return m_hWnd;
413  }
414 
416  {
417  DWORD dCurrentExStyle = (DWORD) SendMessageW(TB_GETEXTENDEDSTYLE, 0, 0);
419  }
420 
422  {
423  DWORD dCurrentExStyle = (DWORD) SendMessageW(TB_GETEXTENDEDSTYLE, 0, 0);
425  }
426 
428  {
429  return m_dButtonsWidthMax;
430  }
431 };
432 
434  public CUiWindow<CListView>
435 {
436  struct SortContext
437  {
440  };
441 
445 
447 
448 public:
453  nLastHeaderID(-1)
454  {
455  }
456 
458  {
459  if (bIsVisible)
460  {
462  }
463  else
464  {
466  }
467 
468  bHasCheckboxes = bIsVisible;
469  }
470 
472  {
473  HWND hHeader;
474  HDITEMW hColumn;
475  INT nHeaderID = pnmv->iSubItem;
476 
478  return;
479 
480  hHeader = (HWND) SendMessage(LVM_GETHEADER, 0, 0);
481  ZeroMemory(&hColumn, sizeof(hColumn));
482 
483  /* If the sorting column changed, remove the sorting style from the old column */
484  if ((nLastHeaderID != -1) && (nLastHeaderID != nHeaderID))
485  {
486  hColumn.mask = HDI_FORMAT;
487  Header_GetItem(hHeader, nLastHeaderID, &hColumn);
488  hColumn.fmt &= ~(HDF_SORTUP | HDF_SORTDOWN);
489  Header_SetItem(hHeader, nLastHeaderID, &hColumn);
490  }
491 
492  /* Set the sorting style to the new column */
493  hColumn.mask = HDI_FORMAT;
494  Header_GetItem(hHeader, nHeaderID, &hColumn);
495 
496  hColumn.fmt &= (bIsAscending ? ~HDF_SORTDOWN : ~HDF_SORTUP);
497  hColumn.fmt |= (bIsAscending ? HDF_SORTUP : HDF_SORTDOWN);
498  Header_SetItem(hHeader, nHeaderID, &hColumn);
499 
500  /* Sort the list, using the current values of nHeaderID and bIsAscending */
501  SortContext ctx = {this, nHeaderID};
502  SortItems(s_CompareFunc, &ctx);
503 
504  /* Save new values */
505  nLastHeaderID = nHeaderID;
507  }
508 
510  {
511  return AddColumn(Index, const_cast<LPWSTR>(Text.GetString()), Width, Format);
512  }
513 
515  {
516  LVCOLUMNW Column;
517 
518  ZeroMemory(&Column, sizeof(Column));
519 
521  Column.iSubItem = Index;
522  Column.pszText = lpText;
523  Column.cx = Width;
524  Column.fmt = Format;
525 
526  return (InsertColumn(Index, &Column) == -1) ? FALSE : TRUE;
527  }
528 
530  {
531  LVITEMW Item;
532 
533  ZeroMemory(&Item, sizeof(Item));
534 
536  Item.pszText = const_cast<LPWSTR>(lpText);
537  Item.lParam = lParam;
538  Item.iItem = ItemIndex;
539  Item.iImage = IconIndex;
540 
541  return InsertItem(&Item);
542  }
543 
544  static INT CALLBACK s_CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
545  {
546  SortContext * ctx = ((SortContext*) lParamSort);
547  return ctx->lvw->CompareFunc(lParam1, lParam2, ctx->iSubItem);
548  }
549 
550  INT CompareFunc(LPARAM lParam1, LPARAM lParam2, INT iSubItem)
551  {
552  ATL::CStringW Item1, Item2;
553  LVFINDINFOW IndexInfo;
554  INT Index;
555 
556  IndexInfo.flags = LVFI_PARAM;
557 
558  IndexInfo.lParam = lParam1;
559  Index = FindItem(-1, &IndexInfo);
560  GetItemText(Index, iSubItem, Item1.GetBuffer(MAX_STR_LEN), MAX_STR_LEN);
561  Item1.ReleaseBuffer();
562 
563  IndexInfo.lParam = lParam2;
564  Index = FindItem(-1, &IndexInfo);
565  GetItemText(Index, iSubItem, Item2.GetBuffer(MAX_STR_LEN), MAX_STR_LEN);
566  Item2.ReleaseBuffer();
567 
568  return bIsAscending ? Item1.Compare(Item2) : Item2.Compare(Item1);
569  }
570 
572  {
573  RECT r = {205, 28, 465, 250};
576 
578 
579  if (hwnd)
580  {
582  }
583 
584  return hwnd;
585  }
586 
588  {
589  return (BOOL) (GetItemState(item, LVIS_STATEIMAGEMASK) >> 12) - 1;
590  }
591 
593  {
594  if (bHasCheckboxes)
595  {
597  SetSelected(item, fCheck);
598  }
599  }
600 
602  {
603  if (item < 0)
604  {
605  for (INT i = 0; i >= 0; i = GetNextItem(i, LVNI_ALL))
606  {
608  if (pAppInfo)
609  {
610  pAppInfo->m_IsSelected = value;
611  }
612  }
613  }
614  else
615  {
617  if (pAppInfo)
618  {
619  pAppInfo->m_IsSelected = value;
620  }
621  }
622  }
623 
625  {
626  if (bHasCheckboxes)
627  {
630  }
631  }
632 
634  {
635  if (!bHasCheckboxes)
636  {
638  }
639 
641  for (INT i = 0; i >= 0; i = GetNextItem(i, LVNI_ALL))
642  {
643  if (GetCheckState(i) != FALSE)
644  {
646  list.Add(*pAppInfo);
647  }
648  }
649  return list;
650  }
651 
653  {
656  }
657 };
658 
660  public CUiWindow<CTreeView>
661 {
663 
664 public:
666  CUiWindow(),
669  0, 1))
670  {
671  }
672 
674  {
675  return CUiWindow<CTreeView>::AddItem(hParent, const_cast<LPWSTR>(Text.GetString()), Image, SelectedImage, lParam);
676  }
677 
679  {
681  INT Index;
682  HICON hIcon;
683 
686  IMAGE_ICON,
690  if (hIcon)
691  {
694  }
695 
696  szText.LoadStringW(TextIndex);
697  return AddItem(hRootItem, szText, Index, Index, TextIndex);
698  }
699 
701  {
703  }
704 
706  {
707  if (hImageTreeView)
709  }
710 
712  {
714  }
715 };
716 
717 class CSearchBar :
718  public CWindow
719 {
720 public:
721  const INT m_Width;
722  const INT m_Height;
723 
725  {
726  }
727 
728  VOID SetText(LPCWSTR lpszText)
729  {
731  }
732 
734  {
735  ATL::CStringW szBuf;
738  0, 0, m_Width, m_Height,
739  hwndParent, (HMENU) NULL,
740  hInst, 0);
741 
743  szBuf.LoadStringW(IDS_SEARCH_TEXT);
744  SetWindowTextW(szBuf);
745  return m_hWnd;
746  }
747 
748 };
749 
750 class CMainWindow :
751  public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits>
752 {
756 
759 
763 
766 
768 
770 
773 
776 
777 public:
780  pLink(NULL),
783  {
784  }
785 
786 private:
788  {
790 
791  /* Add columns to ListView */
792  szText.LoadStringW(IDS_APP_NAME);
794 
795  szText.LoadStringW(IDS_APP_INST_VERSION);
797 
798  szText.LoadStringW(IDS_APP_DESCRIPTION);
800 
801  // Unnesesary since the list updates on every TreeView selection
802  // UpdateApplicationsList(ENUM_ALL_COMPONENTS);
803  }
804 
806  {
807  HTREEITEM hRootItemInstalled, hRootItemAvailable;
808 
809  hRootItemInstalled = m_TreeView->AddCategory(TVI_ROOT, IDS_INSTALLED, IDI_CATEGORY);
810  m_TreeView->AddCategory(hRootItemInstalled, IDS_APPLICATIONS, IDI_APPS);
811  m_TreeView->AddCategory(hRootItemInstalled, IDS_UPDATES, IDI_APPUPD);
812 
814 
816  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_AUDIO, IDI_CAT_AUDIO);
817  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_VIDEO, IDI_CAT_VIDEO);
819  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_GAMES, IDI_CAT_GAMES);
821  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_OFFICE, IDI_CAT_OFFICE);
822  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_DEVEL, IDI_CAT_DEVEL);
823  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_EDU, IDI_CAT_EDU);
825  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_FINANCE, IDI_CAT_FINANCE);
826  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_SCIENCE, IDI_CAT_SCIENCE);
827  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_TOOLS, IDI_CAT_TOOLS);
828  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_DRIVERS, IDI_CAT_DRIVERS);
829  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_LIBS, IDI_CAT_LIBS);
830  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_THEMES, IDI_CAT_THEMES);
831  m_TreeView->AddCategory(hRootItemAvailable, IDS_CAT_OTHER, IDI_CAT_OTHER);
832 
834  m_TreeView->Expand(hRootItemInstalled, TVE_EXPAND);
835  m_TreeView->Expand(hRootItemAvailable, TVE_EXPAND);
836  m_TreeView->SelectItem(hRootItemAvailable);
837  }
838 
840  {
845 
847  }
848 
850  {
851  m_Toolbar = new CMainToolbar();
855 
856  return m_Toolbar->Create(m_hWnd) != NULL;
857  }
858 
860  {
861  m_TreeView = new CSideTreeView();
865 
866  return m_TreeView->Create(m_hWnd) != NULL;
867  }
868 
870  {
871  m_ListView = new CAppsListView();
875 
876  return m_ListView->Create(m_hWnd) != NULL;
877  }
878 
880  {
881  m_RichEdit = new CAppRichEdit();
885 
886  return m_RichEdit->Create(m_hWnd) != NULL;
887  }
888 
890  {
891  m_VSplitter = new CUiSplitPanel();
896  m_VSplitter->m_MinFirst = 0;
897  m_VSplitter->m_MinSecond = 320;
898  m_VSplitter->m_Pos = 240;
900 
901  return m_VSplitter->Create(m_hWnd) != NULL;
902  }
903 
905  {
906  m_HSplitter = new CUiSplitPanel();
911  m_HSplitter->m_Pos = INT_MAX; //set INT_MAX to use lowest possible position (m_MinSecond)
912  m_HSplitter->m_MinFirst = 10;
913  m_HSplitter->m_MinSecond = 140;
915 
916  return m_HSplitter->Create(m_hWnd) != NULL;
917  }
918 
920  {
924  m_SearchBar->m_Margin.top = 4;
926 
927  return m_SearchBar->Create(m_Toolbar->m_hWnd) != NULL;
928  }
929 
931  {
932  BOOL b = TRUE;
933  bUpdating = TRUE;
934 
935  m_ClientPanel = new CUiPanel();
938 
939  // Top level
940  b = b && CreateStatusBar();
941  b = b && CreateToolbar();
942  b = b && CreateSearchBar();
943  b = b && CreateVSplitter();
944 
945  // Inside V Splitter
946  b = b && CreateHSplitter();
947  b = b && CreateTreeView();
948 
949  // Inside H Splitter
950  b = b && CreateListView();
951  b = b && CreateRichEdit();
952 
953  if (b)
954  {
955  RECT rTop;
956  RECT rBottom;
957 
958  /* Size status bar */
959  m_StatusBar->SendMessageW(WM_SIZE, 0, 0);
960 
961  /* Size tool bar */
962  m_Toolbar->AutoSize();
963 
964  ::GetWindowRect(m_Toolbar->m_hWnd, &rTop);
965  ::GetWindowRect(m_StatusBar->m_hWnd, &rBottom);
966 
967  m_VSplitter->m_Margin.top = rTop.bottom - rTop.top;
968  m_VSplitter->m_Margin.bottom = rBottom.bottom - rBottom.top;
969  }
970 
971  bUpdating = FALSE;
972  return b;
973  }
974 
976  {
977  if (CreateLayout())
978  {
979 
982 
983  nSelectedApps = 0;
985 
986  return TRUE;
987  }
988 
989  return FALSE;
990  }
991 
993  {
995  {
996  if (Index == -1)
998 
1000 
1002  }
1004  {
1005  if (Index == -1)
1006  return;
1007 
1009 
1011  }
1012  }
1013 
1015  {
1016  if (wParam == SIZE_MINIMIZED)
1017  return;
1018 
1019  /* Size status bar */
1020  m_StatusBar->SendMessage(WM_SIZE, 0, 0);
1021 
1022  /* Size tool bar */
1023  m_Toolbar->AutoSize();
1024 
1025  /* Automatically hide captions */
1026  DWORD dToolbarTreshold = m_Toolbar->GetMaxButtonsWidth();
1027  DWORD dSearchbarMargin = (LOWORD(lParam) - m_SearchBar->m_Width);
1028 
1029  if (dSearchbarMargin > dToolbarTreshold)
1030  {
1032  }
1033  else if (dSearchbarMargin < dToolbarTreshold)
1034  {
1036  }
1037 
1038  RECT r = {0, 0, LOWORD(lParam), HIWORD(lParam)};
1039  HDWP hdwp = NULL;
1041 
1042  hdwp = BeginDeferWindowPos(count);
1043  if (hdwp)
1044  {
1045  hdwp = m_ClientPanel->OnParentSize(r, hdwp);
1046  if (hdwp)
1047  {
1048  EndDeferWindowPos(hdwp);
1049  }
1050 
1051  }
1052 
1053  // TODO: Sub-layouts for children of children
1055  hdwp = BeginDeferWindowPos(count);
1056  if (hdwp)
1057  {
1058  hdwp = m_SearchBar->OnParentSize(r, hdwp);
1059  if (hdwp)
1060  {
1061  EndDeferWindowPos(hdwp);
1062  }
1063  }
1064 
1065  }
1066 
1068  {
1070  WCHAR szFullName[MAX_PATH] = L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\";
1071  ATL::CStringW szMsgText, szMsgTitle;
1072  INT ItemIndex = m_ListView->GetNextItem(-1, LVNI_FOCUSED);
1073 
1075  return;
1076 
1077  Info = reinterpret_cast<PINSTALLED_INFO>(m_ListView->GetItemData(ItemIndex));
1078  if (!Info || !Info->hSubKey || (ItemIndex == -1))
1079  return;
1080 
1081  if (!szMsgText.LoadStringW(IDS_APP_REG_REMOVE) ||
1082  !szMsgTitle.LoadStringW(IDS_INFORMATION))
1083  return;
1084 
1085  if (MessageBoxW(szMsgText, szMsgTitle, MB_YESNO | MB_ICONQUESTION) == IDYES)
1086  {
1087  ATL::CStringW::CopyChars(szFullName,
1088  MAX_PATH,
1089  Info->szKeyName.GetString(),
1090  MAX_PATH - wcslen(szFullName));
1091 
1092  if (RegDeleteKeyW(Info->hRootKey, szFullName) == ERROR_SUCCESS)
1093  {
1094  m_ListView->DeleteItem(ItemIndex);
1095  return;
1096  }
1097 
1098  if (!szMsgText.LoadStringW(IDS_UNABLE_TO_REMOVE))
1099  return;
1100 
1101  MessageBoxW(szMsgText.GetString(), NULL, MB_OK | MB_ICONERROR);
1102  }
1103  }
1104 
1106  {
1108 
1110  return FALSE;
1111 
1112  INT ItemIndex = m_ListView->GetNextItem(-1, LVNI_FOCUSED);
1113  if (ItemIndex == -1)
1114  return FALSE;
1115 
1117  WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_REMOVE, szAppName);
1118 
1119  PINSTALLED_INFO ItemInfo = (PINSTALLED_INFO)m_ListView->GetItemData(ItemIndex);
1120  return UninstallApplication(ItemInfo, bModify);
1121  }
1123  {
1124  theResult = 0;
1125  switch (Msg)
1126  {
1127  case WM_CREATE:
1128  if (!InitControls())
1129  ::PostMessageW(hwnd, WM_CLOSE, 0, 0);
1130  break;
1131 
1132  case WM_DESTROY:
1133  {
1135  SaveSettings(hwnd);
1136 
1137  FreeLogs();
1139 
1142 
1143  delete m_ClientPanel;
1144 
1145  PostQuitMessage(0);
1146  return 0;
1147  }
1148 
1149  case WM_COMMAND:
1151  break;
1152 
1153  case WM_NOTIFY:
1154  {
1155  LPNMHDR data = (LPNMHDR) lParam;
1156 
1157  switch (data->code)
1158  {
1159  case TVN_SELCHANGED:
1160  {
1161  if (data->hwndFrom == m_TreeView->m_hWnd)
1162  {
1163  switch (((LPNMTREEVIEW) lParam)->itemNew.lParam)
1164  {
1165  case IDS_INSTALLED:
1167  break;
1168 
1169  case IDS_APPLICATIONS:
1171  break;
1172 
1173  case IDS_UPDATES:
1175  break;
1176 
1177  case IDS_AVAILABLEFORINST:
1179  break;
1180 
1181  case IDS_CAT_AUDIO:
1183  break;
1184 
1185  case IDS_CAT_DEVEL:
1187  break;
1188 
1189  case IDS_CAT_DRIVERS:
1191  break;
1192 
1193  case IDS_CAT_EDU:
1195  break;
1196 
1197  case IDS_CAT_ENGINEER:
1199  break;
1200 
1201  case IDS_CAT_FINANCE:
1203  break;
1204 
1205  case IDS_CAT_GAMES:
1207  break;
1208 
1209  case IDS_CAT_GRAPHICS:
1211  break;
1212 
1213  case IDS_CAT_INTERNET:
1215  break;
1216 
1217  case IDS_CAT_LIBS:
1219  break;
1220 
1221  case IDS_CAT_OFFICE:
1223  break;
1224 
1225  case IDS_CAT_OTHER:
1227  break;
1228 
1229  case IDS_CAT_SCIENCE:
1231  break;
1232 
1233  case IDS_CAT_TOOLS:
1235  break;
1236 
1237  case IDS_CAT_VIDEO:
1239  break;
1240 
1241  case IDS_CAT_THEMES:
1243  break;
1244 
1245  case IDS_SELECTEDFORINST:
1247  break;
1248  }
1249  }
1250 
1251  HMENU mainMenu = ::GetMenu(hwnd);
1252  HMENU lvwMenu = ::GetMenu(m_ListView->m_hWnd);
1253 
1254  /* Disable/enable items based on treeview selection */
1256  {
1258  EnableMenuItem(mainMenu, ID_INSTALL, MF_GRAYED);
1260  EnableMenuItem(mainMenu, ID_MODIFY, MF_ENABLED);
1261 
1263  EnableMenuItem(lvwMenu, ID_INSTALL, MF_GRAYED);
1265  EnableMenuItem(lvwMenu, ID_MODIFY, MF_ENABLED);
1266 
1267  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_REGREMOVE, TRUE);
1268  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, FALSE);
1269  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_UNINSTALL, TRUE);
1270  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_MODIFY, TRUE);
1271  }
1272  else
1273  {
1275  EnableMenuItem(mainMenu, ID_INSTALL, MF_ENABLED);
1277  EnableMenuItem(mainMenu, ID_MODIFY, MF_GRAYED);
1278 
1282  EnableMenuItem(lvwMenu, ID_MODIFY, MF_GRAYED);
1283 
1284  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_REGREMOVE, FALSE);
1285  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_INSTALL, TRUE);
1286  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_UNINSTALL, FALSE);
1287  m_Toolbar->SendMessageW(TB_ENABLEBUTTON, ID_MODIFY, FALSE);
1288  }
1289  }
1290  break;
1291 
1292  case LVN_ITEMCHANGED:
1293  {
1294  LPNMLISTVIEW pnic = (LPNMLISTVIEW) lParam;
1295 
1296  if (pnic->hdr.hwndFrom == m_ListView->m_hWnd)
1297  {
1298  /* Check if this is a valid item
1299  * (technically, it can be also an unselect) */
1300  INT ItemIndex = pnic->iItem;
1301  if (ItemIndex == -1 ||
1302  ItemIndex >= ListView_GetItemCount(pnic->hdr.hwndFrom))
1303  {
1304  break;
1305  }
1306 
1307  /* Check if the focus has been moved to another item */
1308  if ((pnic->uChanged & LVIF_STATE) &&
1309  (pnic->uNewState & LVIS_FOCUSED) &&
1310  !(pnic->uOldState & LVIS_FOCUSED))
1311  {
1312  ShowAppInfo(ItemIndex);
1313  }
1314  /* Check if the item is checked */
1315  if ((pnic->uNewState & LVIS_STATEIMAGEMASK) && !bUpdating)
1316  {
1317  BOOL checked = m_ListView->GetCheckState(pnic->iItem);
1318  /* FIXME: HAX!
1319  - preventing decremention below zero as a safeguard for ReactOS
1320  In ReactOS this action is triggered whenever user changes *selection*, but should be only when *checkbox* state toggled
1321  Maybe LVIS_STATEIMAGEMASK is set incorrectly
1322  */
1323  nSelectedApps +=
1324  (checked)
1325  ? 1
1326  : ((nSelectedApps > 0)
1327  ? -1
1328  : 0);
1329 
1330  /* Update item's selection status */
1331  m_ListView->SetSelected(pnic->iItem, checked);
1332 
1334  }
1335  }
1336  }
1337  break;
1338 
1339  case LVN_COLUMNCLICK:
1340  {
1341  LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam;
1342 
1343  m_ListView->ColumnClick(pnmv);
1344  }
1345  break;
1346 
1347  case NM_CLICK:
1348  {
1349  if (data->hwndFrom == m_ListView->m_hWnd && ((LPNMLISTVIEW) lParam)->iItem != -1)
1350  {
1351  ShowAppInfo(-1);
1352  }
1353  }
1354  break;
1355 
1356  case NM_DBLCLK:
1357  {
1358  if (data->hwndFrom == m_ListView->m_hWnd && ((LPNMLISTVIEW) lParam)->iItem != -1)
1359  {
1360  /* this won't do anything if the program is already installed */
1362  }
1363  }
1364  break;
1365 
1366  case NM_RCLICK:
1367  {
1368  if (data->hwndFrom == m_ListView->m_hWnd && ((LPNMLISTVIEW) lParam)->iItem != -1)
1369  {
1370  ShowPopupMenu(m_ListView->m_hWnd, 0, ID_INSTALL);
1371  }
1372  }
1373  break;
1374 
1375  case EN_LINK:
1376  OnLink((ENLINK*) lParam);
1377  break;
1378 
1379  case TTN_GETDISPINFO:
1381  break;
1382  }
1383  }
1384  break;
1385 
1386  case WM_SIZE:
1387  OnSize(hwnd, wParam, lParam);
1388  break;
1389 
1390  case WM_SIZING:
1391  {
1392  LPRECT pRect = (LPRECT) lParam;
1393 
1394  if (pRect->right - pRect->left < 565)
1395  pRect->right = pRect->left + 565;
1396 
1397  if (pRect->bottom - pRect->top < 300)
1398  pRect->bottom = pRect->top + 300;
1399 
1400  return TRUE;
1401  }
1402 
1403  case WM_SYSCOLORCHANGE:
1404  {
1405  /* Forward WM_SYSCOLORCHANGE to common controls */
1406  m_ListView->SendMessageW(WM_SYSCOLORCHANGE, 0, 0);
1407  m_TreeView->SendMessageW(WM_SYSCOLORCHANGE, 0, 0);
1408  m_Toolbar->SendMessageW(WM_SYSCOLORCHANGE, 0, 0);
1410  }
1411  break;
1412 
1413  case WM_TIMER:
1414  if (wParam == SEARCH_TIMER_ID)
1415  {
1417  if (bSearchEnabled)
1419  }
1420  break;
1421  }
1422 
1423  return FALSE;
1424  }
1425 
1427  {
1428  switch (Link->msg)
1429  {
1430  case WM_LBUTTONUP:
1431  case WM_RBUTTONUP:
1432  {
1433  if (pLink) HeapFree(GetProcessHeap(), 0, pLink);
1434 
1436  (max(Link->chrg.cpMin, Link->chrg.cpMax) -
1437  min(Link->chrg.cpMin, Link->chrg.cpMax) + 1) * sizeof(WCHAR));
1438  if (!pLink)
1439  {
1440  /* TODO: Error message */
1441  return;
1442  }
1443 
1444  m_RichEdit->SendMessageW(EM_SETSEL, Link->chrg.cpMin, Link->chrg.cpMax);
1445  m_RichEdit->SendMessageW(EM_GETSELTEXT, 0, (LPARAM) pLink);
1446 
1447  ShowPopupMenu(m_RichEdit->m_hWnd, IDR_LINKMENU, -1);
1448  }
1449  break;
1450  }
1451  }
1452 
1454  {
1455  HTREEITEM hSelectedItem = m_TreeView->GetSelection();
1456  TV_ITEM tItem;
1457 
1458  tItem.mask = TVIF_PARAM | TVIF_HANDLE;
1459  tItem.hItem = hSelectedItem;
1460  m_TreeView->GetItem(&tItem);
1461  switch (tItem.lParam)
1462  {
1463  case IDS_INSTALLED:
1464  case IDS_APPLICATIONS:
1465  case IDS_UPDATES:
1466  return TRUE;
1467  default:
1468  return FALSE;
1469  }
1470  }
1471 
1473  {
1474  ATL::CStringW szApp;
1475  ATL::CStringW szAuthors;
1476  HICON hIcon;
1477 
1478  szApp.LoadStringW(IDS_APPTITLE);
1479  szAuthors.LoadStringW(IDS_APP_AUTHORS);
1481  ShellAboutW(m_hWnd, szApp, szAuthors, hIcon);
1482  DestroyIcon(hIcon);
1483  }
1484 
1486  {
1487  WORD wCommand = LOWORD(wParam);
1488 
1489  if (lParam == (LPARAM) m_SearchBar->m_hWnd)
1490  {
1491  ATL::CStringW szBuf;
1492 
1493  switch (HIWORD(wParam))
1494  {
1495  case EN_SETFOCUS:
1496  {
1497  ATL::CStringW szWndText;
1498 
1499  szBuf.LoadStringW(IDS_SEARCH_TEXT);
1500  m_SearchBar->GetWindowTextW(szWndText);
1501  if (szBuf == szWndText)
1502  {
1504  m_SearchBar->SetWindowTextW(L"");
1505  }
1506  }
1507  break;
1508 
1509  case EN_KILLFOCUS:
1510  {
1511  m_SearchBar->GetWindowTextW(szBuf);
1512  if (szBuf.IsEmpty())
1513  {
1514  szBuf.LoadStringW(IDS_SEARCH_TEXT);
1516  m_SearchBar->SetWindowTextW(szBuf.GetString());
1517  }
1518  }
1519  break;
1520 
1521  case EN_CHANGE:
1522  {
1523  ATL::CStringW szWndText;
1524 
1525  if (!bSearchEnabled)
1526  {
1527  bSearchEnabled = TRUE;
1528  break;
1529  }
1530 
1531  szBuf.LoadStringW(IDS_SEARCH_TEXT);
1532  m_SearchBar->GetWindowTextW(szWndText);
1533  if (szBuf == szWndText)
1534  {
1536  }
1537  else
1538  {
1539  szSearchPattern = szWndText;
1540  }
1541 
1542  DWORD dwDelay;
1543  SystemParametersInfoW(SPI_GETMENUSHOWDELAY, 0, &dwDelay, 0);
1544  SetTimer(SEARCH_TIMER_ID, dwDelay);
1545  }
1546  break;
1547  }
1548 
1549  return;
1550  }
1551 
1552  switch (wCommand)
1553  {
1554  case ID_OPEN_LINK:
1556  HeapFree(GetProcessHeap(), 0, pLink);
1557  break;
1558 
1559  case ID_COPY_LINK:
1561  HeapFree(GetProcessHeap(), 0, pLink);
1562  break;
1563 
1564  case ID_SETTINGS:
1566  break;
1567 
1568  case ID_EXIT:
1569  PostMessageW(WM_CLOSE, 0, 0);
1570  break;
1571 
1572  case ID_SEARCH:
1573  m_SearchBar->SetFocus();
1574  break;
1575 
1576  case ID_INSTALL:
1578  {
1579  if (nSelectedApps > 0)
1580  {
1584  }
1586  {
1588  }
1589 
1590  }
1591  break;
1592 
1593  case ID_UNINSTALL:
1596  break;
1597 
1598  case ID_MODIFY:
1601  break;
1602 
1603  case ID_REGREMOVE:
1605  break;
1606 
1607  case ID_REFRESH:
1609  break;
1610 
1611  case ID_RESETDB:
1614  break;
1615 
1616  case ID_HELP:
1617  MessageBoxW(L"Help not implemented yet", NULL, MB_OK);
1618  break;
1619 
1620  case ID_ABOUT:
1621  ShowAboutDlg();
1622  break;
1623 
1624  case ID_CHECK_ALL:
1625  m_ListView->CheckAll();
1626  break;
1627  }
1628  }
1629 
1631  {
1632  INT Count = m_ListView->GetItemCount() - 1;
1634 
1635  while (Count >= 0)
1636  {
1638  if (Info)
1639  {
1640  RegCloseKey(Info->hSubKey);
1641  delete Info;
1642  }
1643  Count--;
1644  }
1645  }
1646 
1647  static BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
1648  {
1649  if (!*szNeedle)
1650  return TRUE;
1651  /* TODO: Improve pattern search beyond a simple case-insensitive substring search. */
1652  return StrStrIW(szHaystack, szNeedle) != NULL;
1653  }
1654 
1656  {
1657  PINSTALLED_INFO ItemInfo;
1659  INT Index;
1660 
1661  if (!SearchPatternMatch(m_szName.GetString(), szSearchPattern))
1662  {
1663  RegCloseKey(Info->hSubKey);
1664  return TRUE;
1665  }
1666 
1667  ItemInfo = new INSTALLED_INFO(*Info);
1668  if (!ItemInfo)
1669  {
1670  RegCloseKey(Info->hSubKey);
1671  return FALSE;
1672  }
1673 
1674  Index = m_ListView->AddItem(ItemIndex, 0, m_szName.GetString(), (LPARAM) ItemInfo);
1675 
1676  /* Get version info */
1677  ItemInfo->GetApplicationString(L"DisplayVersion", szText);
1678  m_ListView->SetItemText(Index, 1, szText.GetString());
1679 
1680  /* Get comments */
1681  ItemInfo->GetApplicationString(L"Comments", szText);
1682  m_ListView->SetItemText(Index, 2, szText.GetString());
1683 
1684  return TRUE;
1685  }
1686 
1688  {
1689  INT Index;
1690  HICON hIcon = NULL;
1691 
1692  HIMAGELIST hImageListView = (HIMAGELIST)m_ListView->SendMessage(LVM_GETIMAGELIST, LVSIL_SMALL, 0);
1693 
1694  if (!SearchPatternMatch(Info->m_szName.GetString(), szSearchPattern) &&
1696  {
1697  return TRUE;
1698  }
1699 
1700  /* Load icon from file */
1701  ATL::CStringW szIconPath;
1702  szIconPath.Format(L"%lsicons\\%ls.ico", szFolderPath, Info->m_szName.GetString());
1703  hIcon = (HICON) LoadImageW(NULL,
1704  szIconPath.GetString(),
1705  IMAGE_ICON,
1708  LR_LOADFROMFILE);
1709 
1710  if (!hIcon || GetLastError() != ERROR_SUCCESS)
1711  {
1712  /* Load default icon */
1714  }
1715 
1716  Index = ImageList_AddIcon(hImageListView, hIcon);
1717  DestroyIcon(hIcon);
1718 
1719  Index = m_ListView->AddItem(Info->m_Category, Index, Info->m_szName.GetString(), (LPARAM) Info);
1720  m_ListView->SetImageList(hImageListView, LVSIL_SMALL);
1721  m_ListView->SetItemText(Index, 1, Info->m_szVersion.GetString());
1722  m_ListView->SetItemText(Index, 2, Info->m_szDesc.GetString());
1723  m_ListView->SetCheckState(Index, Info->m_IsSelected);
1724 
1725  return TRUE;
1726  }
1727 
1729  {
1730  CMainWindow* pThis = (CMainWindow*)param;
1731  return pThis->EnumInstalledAppProc(ItemIndex, m_szName, Info);
1732  }
1733 
1735  {
1736  CMainWindow* pThis = (CMainWindow*)param;
1737  return pThis->EnumAvailableAppProc(Info, szFolderPath);
1738  }
1739 
1741  {
1742  if (m_StatusBar)
1743  {
1744  ATL::CStringW szBuffer;
1745 
1747  m_StatusBar->SetText(szBuffer);
1748  }
1749  }
1750 
1752  {
1753  ATL::CStringW szBuffer1, szBuffer2;
1754  HIMAGELIST hImageListView;
1755  BOOL bWasInInstalled = IsInstalledEnum(SelectedEnumType);
1756 
1757  bUpdating = TRUE;
1759 
1760  if (EnumType < 0)
1761  {
1762  EnumType = SelectedEnumType;
1763  }
1764 
1765  //if previous one was INSTALLED purge the list
1766  //TODO: make the Installed category a separate class to avoid doing this
1767  if (bWasInInstalled)
1768  {
1770  }
1771 
1773 
1774  // Create new ImageList
1775  hImageListView = ImageList_Create(LISTVIEW_ICON_SIZE,
1778  0, 1);
1779  HIMAGELIST hImageListBuf = m_ListView->SetImageList(hImageListView, LVSIL_SMALL);
1780  if (hImageListBuf)
1781  {
1782  ImageList_Destroy(hImageListBuf);
1783  }
1784 
1785  if (IsInstalledEnum(EnumType))
1786  {
1787  if (!bWasInInstalled)
1788  {
1790  }
1791 
1793  ImageList_AddIcon(hImageListView, hIcon);
1794  DestroyIcon(hIcon);
1795 
1796  // Enum installed applications and updates
1799  }
1800  else if (IsAvailableEnum(EnumType))
1801  {
1802  if (bWasInInstalled)
1803  {
1805  }
1806 
1807  // Enum available applications
1808  m_AvailableApps.Enum(EnumType, s_EnumAvailableAppProc, this);
1809  }
1810 
1811  SelectedEnumType = EnumType;
1814 
1815  // Set automatic column width for program names if the list is not empty
1816  if (m_ListView->GetItemCount() > 0)
1817  {
1819  }
1820 
1821  bUpdating = FALSE;
1823  }
1824 
1825 public:
1827  {
1828  DWORD csStyle = CS_VREDRAW | CS_HREDRAW;
1829  static ATL::CWndClassInfo wc =
1830  {
1831  {
1832  sizeof(WNDCLASSEX),
1833  csStyle,
1835  0,
1836  0,
1837  NULL,
1838  LoadIconW(_AtlBaseModule.GetModuleInstance(), MAKEINTRESOURCEW(IDI_MAIN)),
1840  (HBRUSH) (COLOR_BTNFACE + 1),
1842  L"RAppsWnd",
1843  NULL
1844  },
1845  NULL, NULL, IDC_ARROW, TRUE, 0, _T("")
1846  };
1847  return wc;
1848  }
1849 
1851  {
1852  ATL::CStringW szWindowName;
1853  szWindowName.LoadStringW(IDS_APPTITLE);
1854 
1855  RECT r = {
1860  };
1861  r.right += r.left;
1862  r.bottom += r.top;
1863 
1865  }
1866 
1867  void HandleTabOrder(int direction)
1868  {
1869  HWND Controls[] = { m_Toolbar->m_hWnd, m_SearchBar->m_hWnd, m_TreeView->m_hWnd, m_ListView->m_hWnd, m_RichEdit->m_hWnd };
1870  // When there is no control found, go to the first or last (depending on tab vs shift-tab)
1871  int current = direction > 0 ? 0 : (_countof(Controls) - 1);
1872  HWND hActive = ::GetFocus();
1873  for (size_t n = 0; n < _countof(Controls); ++n)
1874  {
1875  if (hActive == Controls[n])
1876  {
1877  current = n + direction;
1878  break;
1879  }
1880  }
1881 
1882  if (current < 0)
1883  current = (_countof(Controls) - 1);
1884  else if ((UINT)current >= _countof(Controls))
1885  current = 0;
1886 
1887  ::SetFocus(Controls[current]);
1888  }
1889 };
1890 
1892 {
1893  HACCEL KeyBrd;
1894  MSG Msg;
1895 
1896  CMainWindow* wnd = new CMainWindow();
1897  if (!wnd)
1898  return;
1899 
1900  hMainWnd = wnd->Create();
1901  if (!hMainWnd)
1902  return;
1903 
1904  /* Maximize it if we must */
1906  wnd->UpdateWindow();
1907 
1908  /* Load the menu hotkeys */
1910 
1911  /* Message Loop */
1912  while (GetMessageW(&Msg, NULL, 0, 0))
1913  {
1914  if (!TranslateAcceleratorW(hMainWnd, KeyBrd, &Msg))
1915  {
1916  if (Msg.message == WM_CHAR &&
1917  Msg.wParam == VK_TAB)
1918  {
1919  // Move backwards if shift is held down
1920  int direction = (GetKeyState(VK_SHIFT) & 0x8000) ? -1 : 1;
1921 
1922  wnd->HandleTabOrder(direction);
1923  continue;
1924  }
1925 
1928  }
1929  }
1930 
1931  delete wnd;
1932 }
BOOL bIsAscending
Definition: gui.cpp:443
HGDIOBJ WINAPI GetStockObject(_In_ int)
struct @1608 Msg[]
#define IDS_AINFO_VERSION
Definition: resource.h:157
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
DWORD GetMaxButtonsWidth() const
Definition: gui.cpp:427
#define IDS_INFO_INSTALLDATE
Definition: resource.h:154
VOID ShowPopupMenu(HWND hwnd, UINT MenuID, UINT DefaultItem)
Definition: misc.cpp:74
CUiSplitPanel * m_VSplitter
Definition: gui.cpp:754
DWORD_PTR GetItemData(int i)
Definition: rosctrls.h:204
#define IDI_UNINSTALL
Definition: resource.h:7
INT GetSystemColorDepth()
Definition: gui.cpp:29
#define IDS_INFO_PUBLISHER
Definition: resource.h:140
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
static INT CALLBACK s_CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
Definition: gui.cpp:544
#define ILC_COLOR16
Definition: commctrl.h:352
#define MAKEINTRESOURCE
Definition: winuser.h:591
#define WS_EX_WINDOWEDGE
Definition: winuser.h:407
#define IDR_MAINMENU
Definition: resource.h:40
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1608
VOID OnGetDispInfo(LPTOOLTIPTEXT lpttt)
Definition: gui.cpp:321
#define max(a, b)
Definition: svc.c:63
BOOL WINAPI TranslateMessage(_In_ const MSG *)
static HICON
Definition: imagelist.c:84
int iImage
Definition: commctrl.h:2363
HDWP WINAPI BeginDeferWindowPos(_In_ int)
#define TRUE
Definition: types.h:120
HWND SetFocus()
Definition: atlwin.h:1130
#define ID_REFRESH
Definition: resource.h:16
VOID ShowMainWindow(INT nShowCmd)
Definition: gui.cpp:1891
#define IMAGE_ICON
Definition: winuser.h:212
INT nLastHeaderID
Definition: gui.cpp:446
#define IDC_STATUSBAR
Definition: resource.h:12
#define IDS_STATUS_INSTALLED
Definition: resource.h:189
#define ID_SETTINGS
Definition: resource.h:80
#define LVCF_WIDTH
Definition: commctrl.h:2583
BOOL InitControls()
Definition: gui.cpp:975
#define LVSIL_SMALL
Definition: commctrl.h:2295
ATL::CStringW szSearchPattern
Definition: gui.cpp:774
#define SW_SHOWNOACTIVATE
Definition: winuser.h:768
CUiCollection & Second()
Definition: rosui.h:555
#define ERROR_SUCCESS
Definition: deptool.c:10
#define WM_CHAR
Definition: winuser.h:1699
UINT uNewState
Definition: commctrl.h:3032
#define INT_MAX
Definition: limits.h:40
#define IDYES
Definition: winuser.h:829
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define TBSTYLE_EX_HIDECLIPPEDBUTTONS
Definition: commctrl.h:1009
#define ID_REGREMOVE
Definition: resource.h:82
#define IDS_LANGUAGE_SINGLE
Definition: resource.h:207
#define LVCF_TEXT
Definition: commctrl.h:2584
VOID ShowButtonCaption()
Definition: gui.cpp:421
#define IDS_APPTITLE
Definition: resource.h:3
#define LVM_GETIMAGELIST
Definition: commctrl.h:2291
#define IDS_AINFO_AVAILABLEVERSION
Definition: resource.h:163
#define LVS_SHOWSELALWAYS
Definition: commctrl.h:2263
int GetSelectionMark()
Definition: rosctrls.h:156
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2022
BOOL CreateStatusBar()
Definition: gui.cpp:839
#define SW_HIDE
Definition: winuser.h:762
#define IDS_CAT_DEVEL
Definition: resource.h:172
#define IDS_SELECT_ALL
Definition: resource.h:114
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
_In_ BOOLEAN Create
Definition: pstypes.h:519
#define LR_LOADFROMFILE
Definition: winuser.h:1082
#define IDS_APPS_COUNT
Definition: resource.h:93
#define LVS_REPORT
Definition: commctrl.h:2258
BOOL bUpdating
Definition: gui.cpp:772
#define IDS_AINFO_LICENSE
Definition: resource.h:161
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:472
GLuint GLuint GLsizei count
Definition: gl.h:1545
#define IDS_INFO_INSTALLSRC
Definition: resource.h:151
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
BOOL CreateTreeView()
Definition: gui.cpp:859
#define LVN_ITEMCHANGED
Definition: commctrl.h:3127
VOID InsertLicenseInfo(CAvailableApplicationInfo *Info)
Definition: gui.cpp:111
#define IDS_AINFO_URLSITE
Definition: resource.h:160
INT Height
Definition: winmain.h:18
void SetRedraw(BOOL redraw)
Definition: rosctrls.h:27
#define LVCFMT_RIGHT
Definition: commctrl.h:2595
INT m_MinFirst
Definition: rosui.h:531
LPARAM lParam
Definition: commctrl.h:2454
#define CALLBACK
Definition: compat.h:27
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
Definition: reg.c:1237
#define TOOLBARCLASSNAMEW
Definition: commctrl.h:939
#define IDS_UNABLE_TO_REMOVE
Definition: resource.h:106
GLdouble n
Definition: glext.h:7729
ATL::CSimpleArray< CAvailableApplicationInfo > GetCheckedItems()
Definition: gui.cpp:633
#define LVS_EX_FULLROWSELECT
Definition: commctrl.h:2730
LONG top
Definition: windef.h:307
HANDLE HWND
Definition: compat.h:13
WORD dmDriverExtra
Definition: wingdi.h:1620
const INT m_Width
Definition: gui.cpp:721
#define IDS_TOOLTIP_EXIT
Definition: resource.h:129
static BOOL CALLBACK s_EnumInstalledAppProc(INT ItemIndex, ATL::CStringW &m_szName, PINSTALLED_INFO Info, PVOID param)
Definition: gui.cpp:1728
#define IDS_INFO_README
Definition: resource.h:143
#define IDS_WELCOME_TITLE
Definition: resource.h:94
int GetNextItem(int i, WORD flags)
Definition: rosctrls.h:161
#define IDS_WELCOME_TEXT
Definition: resource.h:95
#define LVCFMT_LEFT
Definition: commctrl.h:2594
#define LPNMTREEVIEW
Definition: commctrl.h:3639
~CSideTreeView()
Definition: gui.cpp:711
HTREEITEM AddCategory(HTREEITEM hRootItem, UINT TextIndex, UINT IconIndex)
Definition: gui.cpp:678
#define IDS_CAT_OFFICE
Definition: resource.h:181
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
#define ZeroMemory
Definition: winbase.h:1648
#define CS_HREDRAW
Definition: winuser.h:648
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
VOID SetWelcomeText()
Definition: gui.cpp:245
void __cdecl Format(UINT nFormatID,...)
Definition: cstringt.h:688
#define IDI_CAT_DEVEL
Definition: resource.h:20
#define IDI_CATEGORY
Definition: resource.h:13
#define HDF_SORTUP
Definition: commctrl.h:720
#define CFE_LINK
Definition: richedit.h:411
BOOL CreateHSplitter()
Definition: gui.cpp:904
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
#define BTNS_AUTOSIZE
Definition: commctrl.h:1000
UINT_PTR WPARAM
Definition: windef.h:207
#define VK_TAB
Definition: winuser.h:2174
#define ID_RESETDB
Definition: resource.h:83
#define WS_CHILD
Definition: pedump.c:617
INT SelectedEnumType
Definition: gui.cpp:775
LONG left
Definition: windef.h:306
DWORD GetIdealSize(BOOL useHeight, LPSIZE size)
Definition: rosctrls.h:386
DWORD dmBitsPerPel
Definition: wingdi.h:1646
#define IDS_SEARCH_TEXT
Definition: resource.h:89
#define IDS_CAT_VIDEO
Definition: resource.h:185
BOOL GetApplicationString(LPCWSTR lpKeyName, ATL::CStringW &String)
Definition: installed.cpp:15
int32_t INT_PTR
Definition: typedefs.h:63
int GetItemCount()
Definition: rosctrls.h:121
#define WS_CLIPCHILDREN
Definition: pedump.c:619
CSideTreeView()
Definition: gui.cpp:665
CAvailableApplicationInfo * GetSelectedData()
Definition: gui.cpp:652
VOID FreeLogs()
Definition: misc.cpp:232
LONG right
Definition: windef.h:308
BOOL Maximized
Definition: winmain.h:14
#define IDS_CAT_FINANCE
Definition: resource.h:176
HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
Definition: rosctrls.h:8
const INT m_Height
Definition: gui.cpp:722
DWORD SetButtonStructSize()
Definition: rosctrls.h:284
#define ID_UNINSTALL
Definition: resource.h:74
DWORD m_dButtonsWidthMax
Definition: gui.cpp:264
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define DWORD
Definition: nt_native.h:44
int32_t INT
Definition: typedefs.h:57
static int Link(const char **args)
Definition: vfdcmd.c:2414
DWORD WINAPI GetSysColor(_In_ int)
WPARAM wParam
Definition: combotst.c:138
#define IDS_AVAILABLEFORINST
Definition: resource.h:98
#define IDR_APPLICATIONMENU
Definition: resource.h:69
struct TraceInfo Info
struct tagNMHDR * LPNMHDR
#define ENUM_CURRENT_SETTINGS
Definition: winuser.h:179
BOOL ShowInstalledAppInfo(PINSTALLED_INFO Info)
Definition: gui.cpp:206
#define IDI_UPDATE_DB
Definition: resource.h:14
#define ILC_COLOR4
Definition: commctrl.h:350
#define IDS_INSTALLED
Definition: resource.h:97
#define LVFI_PARAM
Definition: commctrl.h:2432
BOOL CALLBACK EnumInstalledAppProc(INT ItemIndex, ATL::CStringW &m_szName, PINSTALLED_INFO Info)
Definition: gui.cpp:1655
BOOL ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT &theResult, DWORD dwMapId)
Definition: gui.cpp:1122
VOID ColumnClick(LPNMLISTVIEW pnmv)
Definition: gui.cpp:471
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:928
DWORD SetExtendedListViewStyle(DWORD dw, DWORD dwMask=0)
Definition: rosctrls.h:47
#define ILC_COLOR32
Definition: commctrl.h:354
#define CFE_BOLD
Definition: richedit.h:406
BOOL IsSelectedNodeInstalled()
Definition: gui.cpp:1453
#define IDS_INFO_COMMENTS
Definition: resource.h:149
#define IDI_CAT_ENGINEER
Definition: resource.h:23
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:417
#define LVIF_TEXT
Definition: commctrl.h:2305
#define LVCF_SUBITEM
Definition: commctrl.h:2585
ATL::CSimpleArray< CAvailableApplicationInfo > GetSelected() const
Definition: available.cpp:429
BOOL bSearchEnabled
Definition: gui.cpp:771
void SaveSettings(void)
Definition: settings.c:115
VOID InitApplicationsList()
Definition: gui.cpp:787
LPWSTR pLink
Definition: gui.cpp:767
VOID RemoveSelectedAppFromRegistry()
Definition: gui.cpp:1067
VOID FreeInstalledAppList()
Definition: gui.cpp:1630
VOID OnSize(HWND hwnd, WPARAM wParam, LPARAM lParam)
Definition: gui.cpp:1014
#define IDS_INSTALL
Definition: resource.h:9
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define BTNS_BUTTON
Definition: commctrl.h:994
HWND Create(HWND hwndParent)
Definition: gui.cpp:357
#define EN_KILLFOCUS
Definition: winuser.h:2007
BOOL WINAPI EnableMenuItem(_In_ HMENU, _In_ UINT, _In_ UINT)
#define IDS_MODIFY
Definition: resource.h:92
#define EN_SETFOCUS
Definition: winuser.h:2009
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
BOOL CreateSearchBar()
Definition: gui.cpp:919
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
Definition: imagelist.c:804
DWORD AddButtons(int count, TBBUTTON *buttons)
Definition: rosctrls.h:330
BOOL DeleteAllItems()
Definition: rosctrls.h:126
INT Append(T *ptr)
Definition: rosui.h:79
void ReleaseBuffer(_In_ int nNewLength=-1)
Definition: atlsimpstr.h:372
#define IDI_CAT_OFFICE
Definition: resource.h:29
BOOL SetItemText(int i, int subItem, LPCWSTR text)
Definition: rosctrls.h:186
#define MB_YESNO
Definition: winuser.h:811
static const WCHAR szText[]
Definition: dialog.c:139
#define ListView_SetColumnWidth(hwnd, iCol, cx)
Definition: commctrl.h:2644
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define IDI_CAT_VIDEO
Definition: resource.h:33
const INT m_iToolbarHeight
Definition: gui.cpp:263
BOOL EnumAvailableAppProc(CAvailableApplicationInfo *Info, LPCWSTR szFolderPath)
Definition: gui.cpp:1687
unsigned int BOOL
Definition: ntddk_ex.h:94
LPWSTR WINAPI StrStrIW(LPCWSTR lpszStr, LPCWSTR lpszSearch)
Definition: string.c:384
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
VOID InsertLanguageInfo(CAvailableApplicationInfo *Info)
Definition: gui.cpp:134
HIMAGELIST hImageTreeView
Definition: gui.cpp:662
#define IDS_STATUS_UPDATE_AVAILABLE
Definition: resource.h:192
UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse, void(CALLBACK *lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)=NULL)
Definition: atlwin.h:1190
BOOL WINAPI EndDeferWindowPos(_In_ HDWP)
HTREEITEM AddItem(HTREEITEM hParent, ATL::CStringW &Text, INT Image, INT SelectedImage, LPARAM lParam)
Definition: gui.cpp:673
#define HDI_FORMAT
Definition: commctrl.h:701
BOOL Expand(HTREEITEM item, DWORD action)
Definition: rosctrls.h:597
LPARAM lParam
Definition: commctrl.h:2364
#define ILC_COLOR
Definition: commctrl.h:348
CUiAlignment m_HorizontalAlignment
Definition: rosui.h:238
#define Header_GetItem(hwndHD, i, phdi)
Definition: commctrl.h:747
INT AddItem(INT ItemIndex, INT IconIndex, LPCWSTR lpText, LPARAM lParam)
Definition: gui.cpp:529
#define LISTVIEW_ICON_SIZE
Definition: gui.cpp:26
#define TTN_GETDISPINFO
Definition: commctrl.h:1874
#define TB_ENABLEBUTTON
Definition: commctrl.h:1038
#define CW_USEDEFAULT
Definition: winuser.h:225
BOOL KillTimer(UINT_PTR nIDEvent)
Definition: atlwin.h:908
BOOL GetWindowRect(LPRECT lpRect) const
Definition: atlwin.h:764
VOID FreeCachedEntries()
Definition: available.cpp:250
#define VK_SHIFT
Definition: winuser.h:2177
#define WM_SIZING
Definition: winuser.h:1789
HACCEL WINAPI LoadAcceleratorsW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
virtual VOID OnLink(ENLINK *Link)
Definition: gui.cpp:1426
#define IDS_UNINSTALL
Definition: resource.h:91
CAppsListView()
Definition: gui.cpp:449
BOOL GetCheckState(INT item)
Definition: gui.cpp:587
#define TB_GETEXTENDEDSTYLE
Definition: commctrl.h:1187
#define LVS_SORTASCENDING
Definition: commctrl.h:2264
INT nSelectedApps
Definition: gui.cpp:769
smooth NULL
Definition: ftsmooth.c:416
BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc, PVOID param)
Definition: installed.cpp:62
static HWND hwndParent
Definition: cryptui.c:300
#define MB_ICONQUESTION
Definition: winuser.h:783
VOID SetSelected(INT item, BOOL value)
Definition: gui.cpp:601
SETTINGS_INFO SettingsInfo
Definition: winmain.cpp:18
UINT uOldState
Definition: commctrl.h:3033
LONG_PTR LPARAM
Definition: windef.h:208
#define LPRECT
Definition: precomp.h:28
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2303
DWORD AutoSize()
Definition: rosctrls.h:376
#define IDS_SELECTEDFORINST
Definition: resource.h:117
BOOL IsAvailableEnum(INT x)
Definition: defines.h:65
#define IDS_INFO_CONTACT
Definition: resource.h:146
VOID InsertVersionInfo(CAvailableApplicationInfo *Info)
Definition: gui.cpp:85
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR lpszDeviceName, DWORD iModeNum, LPDEVMODEW lpDevMode)
Definition: display.c:408
#define ID_ABOUT
Definition: charmap.c:18
#define EM_SETBKGNDCOLOR
Definition: richedit.h:100
#define LVNI_FOCUSED
Definition: commctrl.h:2419
switch(r->id)
Definition: btrfs.c:2980
#define IDS_CAT_INTERNET
Definition: resource.h:179
#define LVIS_STATEIMAGEMASK
Definition: commctrl.h:2322
HIMAGELIST SetImageList(HIMAGELIST himl)
Definition: rosctrls.h:422
INT m_MinSecond
Definition: rosui.h:532
void GetItemText(int iItem, int iSubItem, LPTSTR pszText, int cchTextMax)
Definition: rosctrls.h:221
BOOL CreateToolbar()
Definition: gui.cpp:849
HIMAGELIST SetImageList()
Definition: gui.cpp:700
#define b
Definition: ke_i.h:79
static ATL::CWndClassInfo & GetWndClassInfo()
Definition: gui.cpp:1826
#define WM_DESTROY
Definition: winuser.h:1591
WCHAR szSelectAll[MAX_STR_LEN]
Definition: gui.cpp:269
#define IDS_APP_DESCRIPTION
Definition: resource.h:135
WCHAR szModifyBtn[MAX_STR_LEN]
Definition: gui.cpp:268
#define IDS_CAT_DRIVERS
Definition: resource.h:173
SHORT WINAPI GetKeyState(_In_ int)
HWND Create(HWND hwndParent, HMENU hMenu)
Definition: rosctrls.h:460
#define IDI_CAT_OTHER
Definition: resource.h:30
CUiSplitPanel * m_HSplitter
Definition: gui.cpp:755
BOOL SelectItem(HTREEITEM item, DWORD action=TVGN_CARET)
Definition: rosctrls.h:602
HWND Create(HWND hwndParent)
Definition: rosui.h:790
#define LPTOOLTIPTEXT
Definition: commctrl.h:1886
#define CS_VREDRAW
Definition: winuser.h:653
BOOL WINAPI SystemParametersInfoW(_In_ UINT, _In_ UINT, _Inout_opt_ PVOID, _In_ UINT)
#define IDS_TOOLTIP_MODIFY
Definition: resource.h:126
HMENU GetMenu() const
Definition: atlwin.h:636
HWND GetWindow()
Definition: rosui.h:454
#define EVENTLOG_SUCCESS
Definition: winnt_old.h:2629
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define _T(x)
Definition: vfdio.h:22
VOID OnCommand(WPARAM wParam, LPARAM lParam)
Definition: gui.cpp:1485
static const TBBUTTON Buttons[]
Definition: mplay32.c:41
GLsizeiptr size
Definition: glext.h:5919
#define GetProcessHeap()
Definition: compat.h:404
#define BTNS_SEP
Definition: commctrl.h:995
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPCWSTR lpMsg)
Definition: misc.cpp:241
VOID AddImageToImageList(HIMAGELIST hImageList, UINT ImageIndex)
Definition: gui.cpp:271
BOOL m_DynamicFirst
Definition: rosui.h:530
#define IDS_CAT_OTHER
Definition: resource.h:182
BOOL Enum(INT EnumType, AVAILENUMPROC lpEnumProc, PVOID param)
Definition: available.cpp:325
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
__wchar_t WCHAR
Definition: xmlstorage.h:180
VOID SetCheckState(INT item, BOOL fCheck)
Definition: gui.cpp:592
void HandleTabOrder(int direction)
Definition: gui.cpp:1867
#define WM_SIZE
Definition: winuser.h:1593
#define IDS_STATUS_NOTINSTALLED
Definition: resource.h:190
#define IDS_TOOLTIP_REFRESH
Definition: resource.h:48
BOOL bHasCheckboxes
Definition: gui.cpp:444
#define _countof(array)
Definition: sndvol32.h:68
#define ILC_COLOR24
Definition: commctrl.h:353
#define TVN_SELCHANGED
Definition: commctrl.h:3731
#define WM_TIMER
Definition: winuser.h:1724
LPWSTR pszText
Definition: commctrl.h:2361
BOOL CreateLayout()
Definition: gui.cpp:930
#define MF_ENABLED
Definition: winuser.h:128
#define WM_CLOSE
Definition: winuser.h:1603
#define INDEXTOSTATEIMAGEMASK(i)
Definition: commctrl.h:2324
#define IDS_AINFO_LANGUAGES
Definition: resource.h:164
WORD dmSize
Definition: wingdi.h:1619
BOOL AddColumn(INT Index, ATL::CStringW &Text, INT Width, INT Format)
Definition: gui.cpp:509
#define IDI_CAT_TOOLS
Definition: resource.h:32
GLfloat param
Definition: glext.h:5796
#define MAX_PATH
Definition: compat.h:26
BOOL UpdateWindow()
Definition: atlwin.h:1277
#define IDI_CAT_EDU
Definition: resource.h:22
HWND Create(HWND hwndParent)
Definition: gui.cpp:733
PCXSTR GetString() const
Definition: atlsimpstr.h:361
#define EM_SETSEL
Definition: winuser.h:2000
CUiCollection & First()
Definition: rosui.h:554
#define LVIF_IMAGE
Definition: commctrl.h:2306
VOID ShowAboutDlg()
Definition: gui.cpp:1472
static const UCHAR Index[8]
Definition: usbohci.c:18
LPWSTR pszText
Definition: commctrl.h:2563
#define LVS_SINGLESEL
Definition: commctrl.h:2262
unsigned short WORD
Definition: ntddk_ex.h:93
#define HDF_SORTDOWN
Definition: commctrl.h:721
VOID GetWindowTextW(ATL::CStringW &szText)
Definition: rosui.h:501
unsigned long DWORD
Definition: ntddk_ex.h:95
#define ID_COPY_LINK
Definition: resource.h:79
#define IDS_INFO_VERSION
Definition: resource.h:138
#define IDI_CAT_INTERNET
Definition: resource.h:27
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2074
#define HOTKEYS
Definition: resource.h:217
#define SIZE_MINIMIZED
Definition: winuser.h:2481
#define TBSTYLE_TOOLTIPS
Definition: commctrl.h:985
BOOL m_Horizontal
Definition: rosui.h:529
#define IDS_LANGUAGE_AVAILABLE_TRANSLATION
Definition: resource.h:204
VOID LoadAndInsertText(UINT uStringID, DWORD StringFlags)
Definition: gui.cpp:73
UINT GetItemState(int i, UINT mask)
Definition: rosctrls.h:173
INT WINAPI ImageList_AddIcon(HIMAGELIST himl, HICON hIcon)
Definition: imagelist.c:540
#define WM_RBUTTONUP
Definition: winuser.h:1762
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
BOOL IsInstalledEnum(INT x)
Definition: defines.h:70
#define ID_CHECK_ALL
Definition: resource.h:84
#define TVE_EXPAND
Definition: commctrl.h:3419
#define TVI_ROOT
Definition: commctrl.h:3364
#define DEFAULT_GUI_FONT
Definition: wingdi.h:908
CUiWindow< CSearchBar > * m_SearchBar
Definition: gui.cpp:764
INT CompareFunc(LPARAM lParam1, LPARAM lParam2, INT iSubItem)
Definition: gui.cpp:550
UINT mask
Definition: commctrl.h:2356
#define IDI_MODIFY
Definition: resource.h:9
static const WCHAR IconIndex[]
Definition: install.c:52
#define IDS_CAT_LIBS
Definition: resource.h:180
int WINAPI TranslateAcceleratorW(_In_ HWND, _In_ HACCEL, _In_ LPMSG)
void AddItem(DWORD, DWORD, DWORD, DWORD, int)
Definition: toolspage.c:25
HWND hMainWnd
Definition: magnifier.c:32
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: winproc.cpp:304
int InsertItem(const LV_ITEM *pitem)
Definition: rosctrls.h:96
WCHAR szInstallBtn[MAX_STR_LEN]
Definition: gui.cpp:266
VOID DestroyImageList()
Definition: gui.cpp:705
static const WCHAR L[]
Definition: oid.c:1250
#define IDS_TOOLTIP_UNINSTALL
Definition: resource.h:125
static BOOL SearchPatternMatch(LPCWSTR szHaystack, LPCWSTR szNeedle)
Definition: gui.cpp:1647
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define LVS_EX_CHECKBOXES
Definition: commctrl.h:2727
#define IDS_CAT_THEMES
Definition: resource.h:186
#define CFE_ITALIC
Definition: richedit.h:407
#define IDI_MAIN
Definition: resource.h:4
#define SB_SETTEXT
Definition: commctrl.h:1945
struct _IMAGELIST * HIMAGELIST
Definition: commctrl.h:320
HWND Create()
Definition: gui.cpp:1850
#define COLOR_BTNFACE
Definition: winuser.h:918
#define MB_ICONERROR
Definition: winuser.h:781
const DOCKBAR PVOID HWND hParent
Definition: tooldock.h:22
VOID HideButtonCaption()
Definition: gui.cpp:415
VOID UpdateStatusBarText()
Definition: gui.cpp:1740
BOOL WINAPI ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon)
#define ILC_MASK
Definition: commctrl.h:347
static VOID SetImageList(HWND hwnd)
Definition: mplay32.c:238
#define IDS_CAT_SCIENCE
Definition: resource.h:183
static LRESULT CALLBACK StartWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: atlwin.h:1530
VOID InsertText(LPCWSTR lpszText, DWORD dwEffects)
Definition: crichedit.h:72
HWND m_hWnd
Definition: atlwin.h:268
#define IDS_CAT_GRAPHICS
Definition: resource.h:178
BOOL UninstallSelectedApp(BOOL bModify)
Definition: gui.cpp:1105
HWND Create(HWND hwndParent)
Definition: crichedit.h:95
#define IDS_LICENSE_FREEWARE
Definition: resource.h:200
BOOL GetItem(TV_ITEM *pitem)
Definition: rosctrls.h:543
HMENU WINAPI GetSubMenu(_In_ HMENU, _In_ int)
VOID CreateSettingsDlg(HWND hwnd)
#define CFM_LINK
Definition: richedit.h:337
#define WM_COMMAND
Definition: winuser.h:1722
#define IDS_CAT_AUDIO
Definition: resource.h:171
CAppsListView * lvw
Definition: gui.cpp:438
BOOL FindItem(int iStart, const LV_FINDINFO *plvfi)
Definition: rosctrls.h:116
HWND hwndFrom
Definition: winuser.h:3132
#define NM_CLICK
Definition: commctrl.h:130
#define IDI_EXIT
Definition: resource.h:5
CSearchBar()
Definition: gui.cpp:724
GLsizei const GLfloat * value
Definition: glext.h:6069
#define IDS_INFO_UNINSTALLSTR
Definition: resource.h:152
static BOOL ForceUpdateAppsDB()
Definition: available.cpp:319
CUiAlignment m_VerticalAlignment
Definition: rosui.h:239
#define IDS_AINFO_SIZE
Definition: resource.h:159
#define ID_EXIT
Definition: resource.h:10
VOID CopyTextToClipboard(LPCWSTR lpszText)
Definition: misc.cpp:48
#define IDS_CAT_EDU
Definition: resource.h:174
BOOL AddColumn(INT Index, LPWSTR lpText, INT Width, INT Format)
Definition: gui.cpp:514
#define TVIF_HANDLE
Definition: commctrl.h:3266
#define IDS_CAT_ENGINEER
Definition: resource.h:175
CAvailableApps m_AvailableApps
Definition: gui.cpp:765
TCHAR szAppName[128]
Definition: solitaire.cpp:16
#define IDS_APPLICATIONS
Definition: resource.h:100
#define IDS_LICENSE_TRIAL
Definition: resource.h:201
#define IDS_LANGUAGE_AVAILABLE_PLACEHOLDER
Definition: resource.h:209
#define IDS_AINFO_URLDOWNLOAD
Definition: resource.h:162
#define IDS_INFO_UPDATEINFO
Definition: resource.h:147
#define GWL_STYLE
Definition: winuser.h:846
#define LVNI_ALL
Definition: commctrl.h:2418
bool IsEmpty() const
Definition: atlsimpstr.h:379
BOOL CreateListView()
Definition: gui.cpp:869
VOID SetText(LPCWSTR lpszText)
Definition: rosctrls.h:455
#define SEARCH_TIMER_ID
Definition: gui.cpp:25
INSTALLED_INFO * PINSTALLED_INFO
Definition: installed.h:15
INT m_Pos
Definition: rosui.h:528
#define TV_ITEM
Definition: commctrl.h:3296
#define LVCF_FMT
Definition: commctrl.h:2582
#define IDS_APP_REG_REMOVE
Definition: resource.h:104
#define ID_SEARCH
Definition: resource.h:85
VOID UpdateApplicationsList(INT EnumType)
Definition: gui.cpp:1751
HINSTANCE hInst
Definition: dxdiag.c:13
HWND Create(HWND hwndParent)
Definition: gui.cpp:571
#define IDI_CAT_LIBS
Definition: resource.h:28
static ATOM item
Definition: dde.c:856
#define WS_EX_CLIENTEDGE
Definition: winuser.h:384
BOOL ShowWindow(int nCmdShow)
Definition: atlwin.h:1265
HIMAGELIST InitImageList()
Definition: gui.cpp:289
void SetItemState(int i, UINT state, UINT mask)
Definition: rosctrls.h:178
#define NM_DBLCLK
Definition: commctrl.h:131
#define ID_INSTALL
Definition: resource.h:73
#define LVSCW_AUTOSIZE
Definition: commctrl.h:2640
VOID LoadAndInsertText(UINT uStringID, const ATL::CStringW &szText, DWORD StringFlags, DWORD TextFlags)
Definition: gui.cpp:60
#define IDS_TOOLTIP_UPDATE_DB
Definition: resource.h:130
#define IDS_LANGUAGE_MORE_PLACEHOLDER
Definition: resource.h:208
CMainToolbar * m_Toolbar
Definition: gui.cpp:757
struct tagNMLISTVIEW * LPNMLISTVIEW
HICON hIcon
Definition: msconfig.c:44
#define IDI_CAT_GRAPHICS
Definition: resource.h:26
#define NM_RCLICK
Definition: commctrl.h:133
#define IDS_WELCOME_URL
Definition: resource.h:96
#define EN_LINK
Definition: richedit.h:202
#define IDS_INFO_PRODUCTID
Definition: resource.h:145
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_LBUTTONUP
Definition: winuser.h:1759
#define LR_CREATEDIBSECTION
Definition: winuser.h:1088
#define IDS_TOOLTIP_SETTINGS
Definition: resource.h:127
#define IDI_INSTALL
Definition: resource.h:6
#define GET_INFO(a, b, c, d)
#define IDI_CHECK_ALL
Definition: resource.h:15
#define list
Definition: rosglue.h:35
#define IDS_INFO_HELPPHONE
Definition: resource.h:142
#define IDI_CAT_THEMES
Definition: resource.h:34
HRESULT GetString(REFGUID guidKey, [out, size_is(cchBufSize)] LPWSTR pwszValue, UINT32 cchBufSize, [in, out, ptr] UINT32 *pcchLength)
CAppsListView * m_ListView
Definition: gui.cpp:758
static void __cdecl CopyChars(_Out_writes_to_(nDestLen, nChars) XCHAR *pchDest, _In_ size_t nDestLen, _In_reads_opt_(nChars) const XCHAR *pchSrc, _In_ int nChars)
Definition: atlsimpstr.h:423
#define min(a, b)
Definition: monoChain.cc:55
#define IDI_CAT_FINANCE
Definition: resource.h:24
unsigned int UINT
Definition: ndis.h:50
#define IDS_UPDATES
Definition: resource.h:99
LRESULT OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
Definition: winproc.cpp:372
#define IDI_CAT_DRIVERS
Definition: resource.h:21
#define IDR_LINKMENU
Definition: resource.h:68
#define MB_OK
Definition: winuser.h:784
#define IDS_LANGUAGE_NO_TRANSLATION
Definition: resource.h:205
#define LVN_COLUMNCLICK
Definition: commctrl.h:3135
#define IDS_LANGUAGE_ENGLISH_TRANSLATION
Definition: resource.h:206
#define IDS_INFORMATION
Definition: resource.h:105
#define IDS_APP_NAME
Definition: resource.h:133
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define ID_OPEN_LINK
Definition: resource.h:78
#define IDS_LICENSE_OPENSOURCE
Definition: resource.h:199
CMainToolbar()
Definition: gui.cpp:317
CUiCollection & Children()
Definition: rosui.h:355
#define WM_SETFONT
Definition: winuser.h:1632
BOOL DownloadListOfApplications(const ATL::CSimpleArray< CAvailableApplicationInfo > &AppsList, BOOL bIsModal)
Definition: loaddlg.cpp:952
#define MAX_STR_LEN
Definition: defines.h:34
CMainWindow()
Definition: gui.cpp:778
BOOL ShowAvailableAppInfo(CAvailableApplicationInfo *Info)
Definition: gui.cpp:189
#define IDI_CAT_AUDIO
Definition: resource.h:19
UINT mask
Definition: commctrl.h:680
HWND WINAPI GetFocus(void)
Definition: window.c:1909
HWND Create(HWND hwndParent)
Definition: rosctrls.h:481
#define IDI_CAT_GAMES
Definition: resource.h:25
#define IDC_ARROW
Definition: winuser.h:682
#define IDS_APP_INST_VERSION
Definition: resource.h:134
VOID CheckAll()
Definition: gui.cpp:624
VOID ShowAppInfo(INT Index)
Definition: gui.cpp:992
#define TVSIL_NORMAL
Definition: commctrl.h:3439
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define LVM_GETHEADER
Definition: commctrl.h:2646
#define IDS_CAT_TOOLS
Definition: resource.h:184
#define SendMessage
Definition: winuser.h:5818
#define LVIF_PARAM
Definition: commctrl.h:2307
#define TBSTATE_ENABLED
Definition: commctrl.h:970
#define WM_CREATE
Definition: winuser.h:1590
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
Definition: shlexec.cpp:2274
HMENU WINAPI LoadMenuW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define IDS_INFO_MODIFYPATH
Definition: resource.h:153
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
BOOL bSaveWndPos
Definition: winmain.h:8
#define HIWORD(l)
Definition: typedefs.h:246
#define IDS_INFO_INSTLOCATION
Definition: resource.h:150
#define TBSTYLE_EX_MIXEDBUTTONS
Definition: commctrl.h:1008
#define ILC_COLOR8
Definition: commctrl.h:351
#define IDI_CAT_SCIENCE
Definition: resource.h:31
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2044
VOID InitCategoriesList()
Definition: gui.cpp:805
LONG bottom
Definition: windef.h:309
int InsertColumn(int iCol, LV_COLUMN *pcol)
Definition: rosctrls.h:52
HIMAGELIST SetImageList(HIMAGELIST himl, int iImageList)
Definition: rosctrls.h:91
#define LVS_NOSORTHEADER
Definition: commctrl.h:2281
#define IDS_INFO_HELPLINK
Definition: resource.h:141
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
WNDCLASSEXA WNDCLASSEX
Definition: winuser.h:5694
#define TVIF_PARAM
Definition: commctrl.h:3264
#define GetWindowLongPtr
Definition: treelist.c:73
#define MF_GRAYED
Definition: winuser.h:129
static BOOL CALLBACK s_EnumAvailableAppProc(CAvailableApplicationInfo *Info, LPCWSTR szFolderPath, PVOID param)
Definition: gui.cpp:1734
#define Header_SetItem(hwndHD, i, phdi)
Definition: commctrl.h:754
int Compare(_In_z_ PCXSTR psz) const
Definition: cstringt.h:625
#define IDS_INFO_REGOWNER
Definition: resource.h:144
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LVIF_STATE
Definition: commctrl.h:2308
#define IDI_APPS
Definition: resource.h:11
LONG_PTR LRESULT
Definition: windef.h:209
CUiMargin m_Margin
Definition: rosui.h:236
BOOL CreateVSplitter()
Definition: gui.cpp:889
#define ID_HELP
Definition: resource.h:26
Arabic default style
Definition: afstyles.h:93
#define EM_GETSELTEXT
Definition: richedit.h:95
WCHAR szUninstallBtn[MAX_STR_LEN]
Definition: gui.cpp:267
#define ES_LEFT
Definition: pedump.c:664
#define WS_VISIBLE
Definition: pedump.c:620
#define IDS_AINFO_DESCRIPTION
Definition: resource.h:158
BOOL CreateRichEdit()
Definition: gui.cpp:879
#define TREEVIEW_ICON_SIZE
Definition: gui.cpp:27
VOID SetText(LPCWSTR lpszText, DWORD dwEffects)
Definition: crichedit.h:84
#define IDI_REFRESH
Definition: resource.h:10
#define SW_MAXIMIZE
Definition: winuser.h:766
BOOL DownloadApplication(CAvailableApplicationInfo *pAppInfo, BOOL bIsModal)
Definition: loaddlg.cpp:969
VOID SetText(LPCWSTR lpszText)
Definition: gui.cpp:728
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
#define IDI_SETTINGS
Definition: resource.h:8
#define IDS_APP_AUTHORS
Definition: resource.h:120
CUiPanel * m_ClientPanel
Definition: gui.cpp:753
virtual DWORD_PTR CountSizableChildren()
Definition: rosui.h:403
#define IDS_CAT_GAMES
Definition: resource.h:177
#define TBSTYLE_LIST
Definition: commctrl.h:989
LPARAM lParam
Definition: combotst.c:139
virtual HDWP OnParentSize(RECT parentRect, HDWP hDwp)
Definition: rosui.h:477
#define IDI_SELECTEDFORINST
Definition: resource.h:16
#define SBT_NOBORDERS
Definition: commctrl.h:1967
#define ES_AUTOHSCROLL
Definition: pedump.c:672
#define LOWORD(l)
Definition: pedump.c:82
#define ID_MODIFY
Definition: resource.h:77
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
Definition: compat.h:403
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
int fmt
Definition: commctrl.h:685
#define TBSTYLE_FLAT
Definition: commctrl.h:988
#define LVIS_FOCUSED
Definition: commctrl.h:2314
#define TB_SETEXTENDEDSTYLE
Definition: commctrl.h:1186
BOOL bHasAllChecked
Definition: gui.cpp:442
#define WM_NOTIFY
Definition: richedit.h:61
BOOL UninstallApplication(PINSTALLED_INFO ItemInfo, BOOL bModify)
Definition: installed.cpp:40
BOOL SortItems(PFNLVCOMPARE pfnCompare, PVOID lParam)
Definition: rosctrls.h:141
#define IDS_INFO_INFOABOUT
Definition: resource.h:148
#define IDS_TOOLTIP_INSTALL
Definition: resource.h:124
VOID SetCheckboxesVisible(BOOL bIsVisible)
Definition: gui.cpp:457
char * Text
Definition: combotst.c:136
struct task_struct * current
Definition: linux.c:32
HTREEITEM GetSelection()
Definition: rosctrls.h:592
#define IDI_APPUPD
Definition: resource.h:12
CAppRichEdit * m_RichEdit
Definition: gui.cpp:762
BOOL DeleteItem(int i)
Definition: rosctrls.h:101
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char * Format
Definition: acpixf.h:1216
CSideTreeView * m_TreeView
Definition: gui.cpp:760
CUiWindow< CStatusBar > * m_StatusBar
Definition: gui.cpp:761
#define EN_CHANGE
Definition: winuser.h:2004