请教,知道一个窗体的HANDLE如何获得其STYLE(50分)

  • 主题发起人 白河愁
  • 开始时间

白河愁

Unregistered / Unconfirmed
GUEST, unregistred user!
用 ShowWindow 可以设置一个以知handle的窗体的STYLE,<br>那反之如何获得呢?<br>谢谢。
 
getwindowslong()类似的函数
 
如果用GetWindowLong 的话,后面那个应该填什么?
 
1、取窗口样式: GetWindowLong(Handle, GWL_STYLE);<br>2、取窗口扩展样式 :GetWindowLong(Handle, GWL_EXSTYLE);<br>返回值为长整型,是窗口样式“按位或(|)”的结果。
 
看帮助,或者MSDN,
 
能否举个例子?如何得知是GWL_STYLE还是GWL_EXSTYLE?<br>得到结果后如果得到相应的SW_NORMAL之类的值?<br>按位或的话或一个什么数?
 
窗口样式有很多种,比如:WS_CAPTION代表窗口有标题栏,<br>WS_MINIMIZEBOX代表窗口有最小化按钮,等等。<br>当你创建窗口时可以指定其样式,也可以在窗口创建完成后指定,<br>使用SetWindowLong(Handle, GWL_STYLE, WS_CAPTION|WS_MINIMIZEBOX);<br>最后一个参数就是按位或运算,结果此窗口将带有标题栏和最小化按钮。
 
还是不明白...能否给一个例子?<br>showwindow(handle,sw_normal);<br>showmessage(inttostr(GetWindowLong(Handle, GWL_STYLE)));<br><br>得到的结果要和 sw_normal相等的
 
建议你读一读win32 sdk程序开发方面的书,或查阅MSDN的sdk文档,<br>先清楚一些windwos程序开发的基本原理。<br>
 
我要的不就是一个例子么,如果什么事情都看MSDN的话,那还来这里干什么?<br>我搜索过整个论坛的数据库,似乎还没有类似的资料,<br>去读MSDN的另一层含义莫非就是“我也没试过,你自己去找答案吧”?
 
GetWindowLong(Handle, GWL_STYLE)
 
to 爱元元的哥哥:<br>你可以试试<br>if GetWindowLong(Handle, GWL_STYLE)=sw_normal then shwomessage('发分');
 
procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; wp: TWindowPlacement;<br>begin<br>&nbsp; ShowWindow(Handle, SW_SHOWMAXIMIZED);<br>&nbsp; FillChar(wp, SizeOf(wp), 0);<br>&nbsp; if GetWindowPlacement(Handle, @wp) then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowMessage(IntToStr(wp.showCmd));<br>&nbsp; end;<br>end;<br>
 
if GetWindowPlacement 返回的是false值
 
你试试:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; wp: TWindowPlacement;<br>begin<br>&nbsp; ShowWindow(0, SW_SHOWMAXIMIZED);<br>&nbsp; FillChar(wp, SizeOf(wp), 0);<br>&nbsp; if GetWindowPlacement(0, @wp) then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowMessage(IntToStr(wp.showCmd));<br>&nbsp; end<br>&nbsp; else<br>&nbsp; &nbsp; ShowMessage(SysErrorMessage(GetLastError));<br>end;
 
其曰,“不能创建已存在的文件”
 
Sorry:<br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; wp: TWindowPlacement;<br>begin<br>&nbsp; ShowWindow(GetDesktopWindow, SW_HIDE);<br>&nbsp; FillChar(wp, SizeOf(wp), 0);<br>[blue] &nbsp;wp.length := SizeOf(wp);[/blue]<br>&nbsp; if GetWindowPlacement(GetDesktopWindow, @wp) then<br>&nbsp; begin<br>&nbsp; &nbsp; ShowMessage(IntToStr(wp.showCmd));<br>&nbsp; end<br>&nbsp; else<br>&nbsp; &nbsp; ShowMessage(SysErrorMessage(GetLastError));<br>end;<br><br><br>
 
为何SW_HIDE和SW_NROAML的结果均为1?<br>
 
真是不知说什么好!<br>if GetWindowLong(Handle, GWL_STYLE)=sw_normal then shwomessage('发分');<br>本身是矛盾的,因为sw_normal是窗口的显示状态,而GWL_STYLE代表的<br>是窗口的样式,两者一点关系都没有,所以我建议你读一读win32 sdk程序开发方面的书,<br>这样基础比较牢。
 
to yyii_yyii:<br>使用GetWindowLong是张无忌大侠提出的,<br>既然你指出“因为sw_normal是窗口的显示状态,而GWL_STYLE代表的<br>是窗口的样式,两者一点关系都没有”<br>那为什么还就这个作解释呢?毕竟我的题目不是“如何使用GetWindowLong函数"
 
顶部