有些是MFC或SDK的东西,转到Delphi里比较没可能

解决方案 »

  1.   

    to daifei:
    按照语法来说:-> 应该改成 ^.
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    Type
        PLOGPALETTE=^LOGPALETTE;
    var
        PDC:HDC;
        pScrnPalette :HPalette;
        lplgpl:PLOGPALETTE;
        Palbuf:array[0..1047] of BYTE;
        k:integer;
    begin
    PDC:= GetDC(form1.Handle);
    lplgpl := PLOGPALETTE(@Palbuf);
    lplgpl.palNumEntries :=GetDeviceCaps(PDC,SIZEPALETTE);lplgpl.palVersion := $300;
    for k:=0 to integer(lplgpl.palNumEntries) do
    begin
        pScrnPalette:=CreatePalette(lplgpl^);
        SelectPalette(PDC,pScrnPalette,false);
        RealizePalette(PDc);
        ReleaseDC(form1.Handle ,pDC);
    end;
    end;
      

  3.   

    我试着想帮你翻译,但头一句就有问题,
    Win Api HDC GetDC(
        HWND hWnd  // handle of window  
       );你的
    CDC* pDC = GetDC();
    GetDC()的参数呢?还是别的东东?
      

  4.   

    刚才少了一段procedure TForm1.Button2Click(Sender: TObject);
    Type
        PLOGPALETTE=^LOGPALETTE;
    var
        PDC:HDC;
        pScrnPalette :HPalette;
        lplgpl:PLOGPALETTE;
        Palbuf:array[0..1047] of BYTE;
        k:integer;
    begin
    PDC:= GetDC(form1.Handle);
    lplgpl := PLOGPALETTE(@Palbuf);
    lplgpl.palNumEntries :=GetDeviceCaps(PDC,SIZEPALETTE);lplgpl.palVersion := $300;
    for k:=0 to integer(lplgpl.palNumEntries) do
    begin    lplgpl.palPalEntry[k].peRed := BYTE(k)+10;
         lplgpl.palPalEntry[k].peGreen := BYTE(k)+10;
            lplgpl.palPalEntry[k].peBlue:= BYTE(k)+10;
            lplgpl.palPalEntry[k].peFlags:= PC_NOCOLLAPSE;end;
        pScrnPalette:=CreatePalette(lplgpl^);
        SelectPalette(PDC,pScrnPalette,false);
        RealizePalette(PDc);
        ReleaseDC(form1.Handle ,pDC);end;
      

  5.   

    这样好象是桌面的PDC 了:PDC:= GetDC(0);
    ReleaseDC(0,pDC);
      

  6.   

    谢谢,Jera(天~~~~塌下来我也不怕...),您的代码加入我的工程完全OK!
    再次感谢!!