summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorKevin Walzer <kw@codebykevin.com>2021-08-19 12:53:04 (GMT)
committerKevin Walzer <kw@codebykevin.com>2021-08-19 12:53:04 (GMT)
commit38da147406ebb749ffdcd39627f107d7589c3396 (patch)
tree74be55c4cb8cf86eb137d2956e10f429edac011a /win
parenteed63d324d4263b6da2cfc6b95480f33485d15be (diff)
downloadtk-38da147406ebb749ffdcd39627f107d7589c3396.zip
tk-38da147406ebb749ffdcd39627f107d7589c3396.tar.gz
tk-38da147406ebb749ffdcd39627f107d7589c3396.tar.bz2
Tweak initialization of COM library
Diffstat (limited to 'win')
-rw-r--r--win/tkWinWm.c30
-rw-r--r--win/winMain.c6
2 files changed, 19 insertions, 17 deletions
diff --git a/win/tkWinWm.c b/win/tkWinWm.c
index c92d488..4008836 100644
--- a/win/tkWinWm.c
+++ b/win/tkWinWm.c
@@ -3858,17 +3858,13 @@ WmIconbadgeCmd(
char photoname[4096];
LPCWSTR string;
ITaskbarList3 *ptbl;
- UINT TaskbarButtonCreatedMessageId;
- /* Establish a COM interface to the ITaskBarList3 API. */
- hr = CoInitialize(0);
- TaskbarButtonCreatedMessageId = RegisterWindowMessage("TaskbarButtonCreated");
+ hr = CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, &IID_ITaskbarList3, &ptbl);
if (hr == S_OK) {
- CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, &IID_ITaskbarList3, &ptbl);
- ptbl->lpVtbl->HrInit(ptbl);
+ ptbl->lpVtbl->HrInit(ptbl);
} else {
- Tcl_SetResult(interp, "Unable to initialize taskbar icon", TCL_VOLATILE);
- return TCL_ERROR;
+ Tcl_SetResult(interp, "Unable to initialize taskbar icon", TCL_VOLATILE);
+ return TCL_ERROR;
}
if (objc < 4) {
@@ -3876,24 +3872,24 @@ WmIconbadgeCmd(
return TCL_ERROR;
}
- hwnd = Tk_GetHWND(winPtr -> window);
+ hwnd = Tk_GetHWND(winPtr->window);
badgestring = Tcl_GetString(objv[3]);
string = L"Alert";
badgenumber = atoi(badgestring);
if (badgenumber > 9) {
- strcpy(photoname, "::tk::icons::9plus-badge");
+ strcpy(photoname, "::tk::icons::9plus-badge");
} else {
- strcpy(photoname , "::tk::icons::");
- strcat(photoname, badgestring);
- strcat(photoname, "-badge");
+ strcpy(photoname, "::tk::icons::");
+ strcat(photoname, badgestring);
+ strcat(photoname, "-badge");
}
/* Get image. If NULL, remove badge icon. */
photo = Tk_FindPhoto(interp, photoname);
if (photo == NULL) {
- ptbl->lpVtbl->SetOverlayIcon(ptbl, hwnd, NULL, NULL);
- return TCL_OK;
+ ptbl->lpVtbl->SetOverlayIcon(ptbl, hwnd, NULL, NULL);
+ return TCL_OK;
}
/* We have found the image. Convert to icon. */
@@ -3902,8 +3898,8 @@ WmIconbadgeCmd(
overlayicon = CreateIcoFromPhoto(width, height, block);
if (overlayicon == NULL) {
- Tcl_SetResult(interp, "Failed to create icon photo", TCL_VOLATILE);
- return TCL_ERROR;
+ Tcl_SetResult(interp, "Failed to create icon photo", TCL_VOLATILE);
+ return TCL_ERROR;
}
/* Place overlay icon on taskbar icon. */
diff --git a/win/winMain.c b/win/winMain.c
index 9c23037..0231200 100644
--- a/win/winMain.c
+++ b/win/winMain.c
@@ -134,6 +134,10 @@ _tWinMain(
(void)lpszCmdLine;
(void)nCmdShow;
+
+ /* Load COM library for icon overlay. */
+ CoInitialize(NULL);
+
/*
* Create the console channels and install them as the standard channels.
* All I/O will be discarded until Tk_CreateConsoleWindow is called to
@@ -178,6 +182,8 @@ _tWinMain(
#endif
Tk_Main(argc, argv, TK_LOCAL_APPINIT);
+ /* COM library cleanup. */
+ CoUninitialize();
return 0; /* Needed only to prevent compiler warning. */
}