hMenu := WindowFromDC(ACanvas.Handle);
  //Border flat...
  if ( hMenu <> Handle ) and ( hMenu <> 0 ) then
  begin
    TmpCanvas := TCanvas.Create;    TmpCanvas.Handle := GetDC(0);
    TmpCanvas.Pen.Color  := $AE7323;//CF9365;
    TmpCanvas.Brush.Color:= $AE7323;//CF9365;
    GetWindowRect(hMenu, TmpRect);    TmpCanvas.FrameRect(TmpRect);
    InflateRect(TmpRect, -1, -1);
    TmpCanvas.Brush.Color := $FFFFFF;//DFDBDF;
    TmpCanvas.FrameRect(TmpRect);
    InflateRect(TmpRect, -1, -1);
    TmpCanvas.FrameRect(TmpRect);    ReleaseDC(0, TmpCanvas.Handle);
    TmpCanvas.Free;
  end;这部分代码是DELPHI版绘制边框部分,你可以参考下。

解决方案 »

  1.   

    大哥 按照你的方法 不成功呢void __fastcall TPopMenu::OwnerMeasureItem(TObject* Sender, TCanvas* ACanvas, int &Width, int &Height)
    {
    HWND hMenu= WindowFromDC(ACanvas->Handle);
    if( hMenu!=this->Handle&&hMenu!=0 )
    {
    TCanvas *tempCanvas = new TCanvas();
    tempCanvas->Handle = GetDC(0);
    tempCanvas->Pen->Color = RGB(0,255,0);
    tempCanvas->Brush->Color = RGB(0,0,255); tagRECT temRect;
    GetWindowRect(hMenu,&temRect); TRect  tempRect((int)(temRect.left),(int)(temRect.top),(int)(temRect.right),(int)(temRect.bottom) );
    //////////////////////
    tempCanvas->FrameRect(tempRect);
    InflateRect(tempRect,-1,-1); tempCanvas->Brush->Color = RGB(0,0,0);
    tempCanvas->FrameRect(tempRect);
    InflateRect(tempRect,-1,-1);
    tempCanvas->FrameRect(tempRect); ReleaseDC(0,tempCanvas->Handle); delete tempCanvas;
    }
    }