Pergunta

Eu escrevi um programa que pinta Widget no papel de parede do desktop, sob ícones do desktop, e tudo foi bom. Mas eu revelar um bug estranho - meu programa não foi funciona em alguns outros computadores - eles exibições a mesma área de trabalho, sem Widget depois de começar.

Assim, tenho ninguém qualquer expirience, alguns conhecimentos nesta área? Por favor me ajude! :)

(não consigo encontrar qualquer computador próximo, onde widget não funciona, no meu computador todos os trabalhos bem. Eu escrevi um monte de programas de teste, cujas tentativas desenhar qualquer coisa na área de trabalho com em vez de métodos, mas teste exibe nada muito em meus amigos computadores.)

método de desenho:

Eu escrevi uma dll, que encontra janela do desktop (progman-> criança-> criança)) e cria um gancho e procedimento de instalação própria janela para desktop. No procedimento de janela i gancho WM_ERASEBKGND:

case WM_ERASEBKGND:
  HDC hdc = (HDC)wparam;
  PaintDesktop(hdc);
  WidgetPaint(hdc);
  return 1;

// Eu pular neste código obter e definir áreas de recorte para desenho rápido. (Eu tentei todas as combinações com trajeto e sem recortes)

E, em testes que eu também tentando pintar widget na mensagem WM_PAINT com os mesmos resultados -. Todos já trabalha para mim, mas não funciona em todos os meus amigos

upd: Eu resolvi isso! :)

Foi útil?

Solução

Eu resolvi isso! É simples era um 64-bit máquinas) Então eu compilar meu código para 64-bit e widget começar a trabalhar muito bom!

E, também -

PaintDesktop(hdc);

vai produzir wallpaper muito brilhante no Windows7 (e Vista) com Aero. (Papel de parede do usuário vem iluminar). Deve ser

CallWindowProc(OldWndProc, WM_ERASEBKGND, wparam, lparam);

causa deste -. Aero trata PaintDesktop () como a pintura usual (sobre papel de parede da tela virtual, que é o mesmo que no desktop) com somatório de cor

Saudações! :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top