GetWindowLong
SetWindowLong
这两个函数不明白.麻烦帮我解释一下.不要拿百度的.我根本看不懂什么意思,不要用专业术语
procedure TForm1.TrackBar1Change(Sender: TObject);
var
 h: HWND;
 FormStyle: Integer;   
begin
  h := FindWindow('Notepad', nil);
  if h <> 0then
  begin    //GetWindowLong获得指定句柄扩展窗口风格?返回的是什么东西?别说什么32位的值.完全不明白
  FormStyle := GetWindowLong(h, GWL_EXSTYLE);
  //SetWindowLong第3个参数和第四个参数什么意思
  SetWindowLong(h, GWL_EXSTYLE, FormStyle or WS_EX_LAYERED);
  SetLayeredWindowAttributes(h, 0,trackbar1.Position, LWA_ALPHA);
  end;
end;

解决方案 »

  1.   

    函数原型:
    LONG GetWindowLong( HWND hWnd,int nIndex )参数:
    hWnd:指定窗口的句柄
    nIndex:需要获得的信息的类型返回值:
    成功时,返回一个请求的32位的值
    失败时,返回0,可以使用GetLastError来取得错误信息
    ==============================
    nIndex : GWL_EXSTYLE    得到扩展的窗口风格FormStyle := GetWindowLong(h, GWL_EXSTYLE);
    ------------------------------
    根据窗体句柄获得扩展的窗口风格-------32位的整形值.
    比如
    窗口置顶:WS_EX_TOPMOST=8 
    工具栏窗口:WS_EX_TOOLWINDOW=128
    组成的返回值就是WS_EX_TOPMOST + WS_EX_TOOLWINDOW = 136SetWindowLong(h, GWL_EXSTYLE, FormStyle or WS_EX_LAYERED);
    -----------------------------
    对当前句柄的窗体设置扩展的窗口风格, 新风格值是FormStyle or WS_EX_LAYERED
      

  2.   

    晕,你了解窗口类吗?WNDCLASSEX。。不知道说什么都是白搭
      

  3.   

    兄弟,你先了解一下Windows底层机制:Win32窗口类和消息循环机制