diff options
author | John Ankarström <john@ankarstrom.se> | 2022-07-14 02:34:42 +0200 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2022-07-14 02:34:42 +0200 |
commit | 26f70ab37bee8ffd70b662ff999613c643215605 (patch) | |
tree | 88f03e76a52675b2e3e18f5d4d5966188e4b2eaf /c/datalistview.cpp | |
parent | 8122c83bb3be30325f49d50dbafcd2f14c9b0d2e (diff) | |
download | EpisodeBrowser-26f70ab37bee8ffd70b662ff999613c643215605.tar.gz |
Initialize global variables in the right place.
The rules for what messages are sent at window creation -- and in
which order -- are neither intuitive or clear. WM_CREATE can NOT be
relied upon to initialize global state required by handlers of other
messages (such as WM_GETMINMAXINFO, which seems to be sent before
WM_CREATE).
Thus, the better solution is to initialize everything using a CBT hook
before the window procedure is even run. Because CBTProc creates
(child): windows of its own, though, one must be careful to only run
the initialization once, which is done by checking g_hWnd.
Diffstat (limited to 'c/datalistview.cpp')
-rw-r--r-- | c/datalistview.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/c/datalistview.cpp b/c/datalistview.cpp index 05d46a4..bd9b317 100644 --- a/c/datalistview.cpp +++ b/c/datalistview.cpp @@ -6,15 +6,12 @@ #include "resource.h" #include "defs.h" -extern EpisodeListView g_elv; +extern EpisodeListView *g_lpElv; -void -DataListView::Create() +DataListView::DataListView() : ListView((HMENU)IDC_DATALISTVIEW, LVS_NOCOLUMNHEADER) { LVCOLUMN lvc; - ListView::Create((HMENU)IDC_DATALISTVIEW, LVS_NOCOLUMNHEADER); - lvc.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM; lvc.iSubItem = DLVSIKEY; lvc.pszText = TEXT("Key"); @@ -75,7 +72,7 @@ DataListView::ShowEpisode(int iEpisode) LVFINDINFO lvfi; lvfi.flags = LVFI_PARAM; lvfi.lParam = iEpisode; - int iItem = ListView_FindItem(g_elv.HWnd(), -1, &lvfi); + int iItem = ListView_FindItem(g_lpElv->HWnd(), -1, &lvfi); if (iItem != -1) - ListView_EnsureVisible(g_elv.HWnd(), iItem, TRUE); + ListView_EnsureVisible(g_lpElv->HWnd(), iItem, TRUE); } |