Почему мой код не отображает окно под значками на рабочем столе?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой код не отображает окно под значками на рабочем столе?

Сообщение Anonymous »

Я пишу живые обои. Итак, первым делом создайте окно и поместите его за значками на рабочем столе. Теперь я почти закончил его. Я не знаю, почему иногда значки отображаются над окном, а в большинстве случаев значки отображаются за окном.
Мои основные коды следующие.
Я нахожу окно SHELLDLL_DefView и устанавливаю для него дочернее окно, а затем устанавливаю его HWND_BOTTOM.
glfwInit();
GLFWwindow* window = glfwCreateWindow(800, 600, "my window", NULL, NULL);
HWND hwnd = glfwGetWin32Window(window);

SetWallpaperWindowPosition(hwnd);

void SetWallpaperWindowPosition(HWND hwnd)
{
auto r = GetSDDV();
HWND SDDV = std::get(r);
HWND SLV32 = std::get(r);
HWND WorkerW = std::get(r);

SetParent(hwnd, SDDV);
SetWindowLongPtr(hwnd, GWL_STYLE, WS_CHILD | WS_VISIBLE);
SetWindowPos(hwnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
}

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
std::tuple* result = reinterpret_cast(lParam);
TCHAR szClassName[256];
TCHAR szWindowName[256];

GetClassName(hwnd, szClassName, _countof(szClassName));
GetWindowText(hwnd, szWindowName, _countof(szWindowName));

if (!_tcscmp(szClassName, _T("WorkerW")))
{
HWND SDDV = FindWindowEx(hwnd, NULL, _T("SHELLDLL_DefView"), NULL);
if (SDDV)
{
HWND SLV32 = FindWindowEx(SDDV, NULL, _T("SysListView32"), _T("FolderView"));
std::get(*result) = SDDV;
std::get(*result) = SLV32;
std::get(*result) = hwnd;
return FALSE;
}
}

return TRUE;
}

std::tuple GetSDDV()
{
std::tuple P;
EnumWindows(EnumWindowsProc, reinterpret_cast(&P));

return P;
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... ktop-icons
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»