当前位置: 代码迷 >> Delphi >> 关于PopupMenu显示空白的有关问题
  详细解决方案

关于PopupMenu显示空白的有关问题

热度:4835   发布时间:2013-02-26 00:00:00.0
关于PopupMenu显示空白的问题

如图所示,我用系统的TPopupMenu做的一个快捷菜单,有时候显示一片空白,鼠标移上去就一项一项的显示。没有其它多余的代码,就是一个TFORM中放一个TPopupMenu,这个问题最先是在我的程序中出现的,当我的程序中出现这个问题的时候,系统所有的PopupMenu都会出现这个问题。小弟我跟踪到
procedure TPopupMenu.Popup(X, Y: Integer);
const
  Flags: array[Boolean, TPopupAlignment] of Word =
    ((TPM_LEFTALIGN, TPM_RIGHTALIGN, TPM_CENTERALIGN),
     (TPM_RIGHTALIGN, TPM_LEFTALIGN, TPM_CENTERALIGN));
  Buttons: array[TTrackButton] of Word = (TPM_RIGHTBUTTON, TPM_LEFTBUTTON);
var
  AFlags: Integer;
begin
  SetPopupPoint(Point(X, Y));
  SetBiDiModeFromPopupControl;
  DoPopup(Self);
  FItems.InternalRethinkHotkeys(False);
  FItems.InternalRethinkLines(False);
  FItems.RebuildHandle;
  AdjustBiDiBehavior;
  AFlags := Flags[UseRightToLeftAlignment, FAlignment] or Buttons[FTrackButton] or
    (Byte(FMenuAnimation) shl 10);
  TrackPopupMenu(FItems.Handle, AFlags, X, Y, 0 { reserved }, PopupList.Window, nil);
end;
就无能为力了。
另外我用:
for i := 0 to 10 do
    TThread.CreateAnonymousThread
      ( procedure()
begin 
while True do 
begin 
SendMessage(Handle, 1100, 200,200);
 sleep(100);
 end;
    end).Start();
消息处理:
procedure TForm6.WMPopupMain(var Msg: TMessage);//1100消息
begin
  PopupMenuMain.Popup(Msg.WParam, Msg.LParam);
end;
反复运行上面的代码可以重现上面所描述的现象。
小弟我求各位大大解析一下原因。

------解决方案--------------------------------------------------------
是不是显示卡问题啊,到别计算机也是这样吗?
------解决方案--------------------------------------------------------
是你电脑太慢了。。
------解决方案--------------------------------------------------------
估计是windows中招了。
如方便的话,将工程发来测试下:190814570@qq.com
------解决方案--------------------------------------------------------
你用的WIN7?
估计跟这个类似
http://bbs.csdn.net/topics/370218370
  相关解决方案