Получить DC & RC с нового рабочего стола - PullRequest
1 голос
/ 07 апреля 2010

Я создаю новый рабочий стол с помощью CreateDesktop и хочу получить его DC и RC.

   RECT deskRC;
   HDC deskDC;
   HDESK hNewDesktop = CreateDesktop(...);

   GetWindowRect(hNewDesktop, &deskRC);
   deskDC = GetDC(hNewDesktop);

Возвращает только 0. В чем проблема? Или, может быть, есть другой способ получения этих значений.

P.S .: Рабочий стол создает нормально.

Еще одна проблема:

Спасибо. Я столкнулся с другой проблемой, с DC на этот раз.

   HDESK hNewDesktop = CreateDesktop("text_here", NULL, NULL, 0, GENERIC_ALL, NULL);
   SetThreadDesktop(hNewDesktop);
   SwitchDesktop(hNewDesktop);

HWND deskHW = GetDesktopWindow();
GetWindowRect(deskHW, &deskRC);
deskDC = GetWindowDC(deskHW);

deskDC неверен :( (Протестировано с оригинальным и все в порядке; я использую его для рисования)

Понятия не имею, что не так в этот раз.

1 Ответ

1 голос
/ 07 апреля 2010

GetWindowRect и GetDC работают с окнами; рабочий стол - это не окно. Вы можете попробовать переключиться на рабочий стол через SwitchDesktop, а затем получить его окно через GetDesktopWindow; не забудьте вернуться к предыдущему рабочему столу.

...