根據獲取的窗口句柄遍歷窗口Edit控件


網上說遍歷窗口控件有兩種方法:
1),使用EnumChildWindows,沒有深究,
2),使用::FindWindowEx和GetWindow組合
下面只說第二種方法,
首先根據標題獲取窗口的句柄,
HWND hWnd=::FindWindow(NULL,“zhang001”);
      findwindow原型:
   FindWindow(
      lpClassName,        {窗口的類名}
      lpWindowName: PChar {窗口的標題}
    ): HWND;              {返回窗口的句柄; 失敗返回 0}
根據窗口句柄獲取窗口上的一個Edit控件,
HWND hChild = ::FindWindowEx(hWnd,NULL,_T("Edit"),NULL);
//FindWindowEx 比 FindWindow 多出兩個句柄參數:
FindWindowEx(
  Parent: HWND;     {要查找子窗口的父窗口句柄}
  Child: HWND;      {子窗口句柄}
  ClassName: PChar; {}
  WindowName: PChar {}
): HWND;
{
如果 Parent 是 0, 則函數以桌面窗口為父窗口, 查找桌面窗口的所有子窗口;
如果  是 HWND_MESSAGE, 函數僅查找所有消息窗口;
子窗口必須是 Parent 窗口的直接子窗口;
如果 Child 是 0, 查找從 Parent 的第一個子窗口開始;
如果 Parent 和 Child 同時是 0, 則函數查找所有的頂層窗口及消息窗口.
}
這樣可以獲取窗口上的第一個Edit控件,第幾個控件應該是以ID的大小編號的
 
         
要根據第一個Edit控件找到下一個Edit控件,使用GetWindow。
Getwindow的函數原型如下:
函數原型:HWND GetWindow(HWND hWnd,UNIT nCmd);
 
  參數:
 
  hWnd:窗口句柄。要獲得的窗口句柄是依據nCmd參數值相對於這個窗口的句柄。
 
  nCmd:說明指定窗口與要獲得句柄的窗口之間的關系。   
GetWindow()具體的使用方法見:http://blog.163.com/sdzhangyuyin@126/blog/static/1384137482014684254551/
hChild = ::GetWindow(h,GW_HWNDNEXT);//獲取窗口的下一個控件
 
         
HWND hwndChild=::GetWindow(m_hWnd,GW_CHILD); //列出所有控件   
 while(hwndChild)   
 {   
  .....
  .....
  hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT);   
 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM