【发布时间】:2018-12-13 16:01:31
【问题描述】:
我希望能够从任务栏中删除我的 Win32 应用程序的按钮。我也希望以后能够将其添加回来。如何才能做到这一点?我找到了this approach,但它是用 Delphi 编写的,而我使用的是 C++。
我尝试了modifying this code,将 Remy 的一行代码更改为:
SetWindowLong(hWnd, GWL_EXSTYLE, Style | WS_EX_APPWINDOW);
到
SetWindowLong(hWnd, GWL_EXSTYLE, Style | WS_EX_TOOLWINDOW);
但这不起作用,按钮仍在任务栏上。
更新:我正在使用的代码(当然来自 Remy):
void __fastcall TForm1::CreateHandle() // this is code from Remy i added to help me trap screen lock
{
TForm::CreateHandle();
HWND hWnd = Fmx::Platform::Win::FormToHWND(this);
if (SetWindowSubclass(hWnd, &SubclassWndProc, 1, reinterpret_cast<DWORD_PTR>(this)))
{
MonitoringWTS = WTSRegisterSessionNotification(hWnd, NOTIFY_FOR_THIS_SESSION);
if (!MonitoringWTS)
RemoveWindowSubclass(hWnd, &SubclassWndProc, 1);
}
else {
MonitoringWTS = false;
}
if (hWnd != NULL) // this code added from https://stackoverflow.com/questions/28929163/how-to-show-a-secondary-form-on-taskbar-using-fmx-c
{
LONG Style = GetWindowLong(hWnd, GWL_EXSTYLE); // <-- don't forget this step!
SetWindowLong(hWnd, GWL_EXSTYLE, Style | WS_EX_APPWINDOW);
}
}
使用 C++Builder 10.2 版本 25.0.31059.3231。
【问题讨论】:
-
我尝试将 BorderStyle 设置为这些选项,但图标仍显示在任务栏上(Windows 10)。我尝试了更正的
SetWindowLong,但也没有从任务栏中删除图标。我会将我的代码发布为上面的 UPDATE 1。 -
您使用的是哪个版本的 C++Builder?请将其包含在您的更新中。这有很大的不同,因为不同的版本处理 FMX 窗口的方式不同。
标签: firemonkey c++builder c++builder-10.2-tokyo