首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问一个有关EnumWindows回调函数的有关问题

2012-02-13 
请教一个有关EnumWindows回调函数的问题Delphi(Pascal) codefunction EnumWindowsProc(Wnd: DWORD lparam

请教一个有关EnumWindows回调函数的问题

Delphi(Pascal) code
  function EnumWindowsProc(Wnd: DWORD; lparam: LPARAM): Bool; stdcall;  var    PID: DWORD;  begin    GetWindowThreadProcessID(Wnd, @PID);    Result := (PID <> PEnumInfo(lparam).ProcessID) or      (not IsWindowVisible(WND)) or      (not IsWindowEnabled(WND));    if not Result then PEnumInfo(lparam).HWND := WND;  end;


程序中Result的返回值为什么还要加上‘(not IsWindowVisible(WND))’和‘(not IsWindowEnabled(WND));’两个条件?
个人认为只需要(PID <> PEnumInfo(lparam).ProcessID)即可。

[解决办法]
加不加在你怎么认为,不是规定的
[解决办法]
你沒理解他的話

這段代碼的意義是,找到可見并可操作的窗體即返回。
1、取得結果取決于枚舉的順序,當你把窗體狀態改為可見和不可見,可見時,可能是自己或其他,不可見時,則一定不是自己;
2、沒有注釋那代碼,取得的一定是可見并可操作的窗體;注釋掉,就包括了不可見或不可操作的窗體;結果都取決于枚舉窗口的順序

枚舉窗口的順序是按照Z-Order從頂層到底層遍歷...

热点排行