⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 040103.htm

📁 提供一个VB学习教程,入门级。来源于网上
💻 HTM
📖 第 1 页 / 共 2 页
字号:
        声明:<br>
        Public Declare Function GetPixel Lib &quot;gdi32&quot; Alias &quot;GetPixel&quot; (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long<br>
        参数:<br>
        hDC--指定一个设备场景(即显示设备描述表)的句柄。<br>
        x,y--某点在该设备场景中的(x,y)坐标。以该设备场景的坐标系统来度量。<br>
        调用如:<br>
        ……<br>
        hDC=GetDC(hwnd)<br>
        lxn=GetPixel(hDC,50,50) <br>
        Picture1.BackColor=lxn<br>
        注:指定的点不能位于设备场景的区域外。如上例(50,50)在hDC所属窗口区域内<br>
        ====<br>
        EnableWindow函数:让窗口拒绝接受鼠标和键盘事件<br>
        使用此函数,可以让1个窗口不响应任何鼠标键盘操作。如果是VB内部的窗体或控件,则相当于它的Enabled属性。<br>
        声明:<br>
        Private Declare Function EnableWindow Lib &quot;user32&quot; (ByVal hwnd As Long, ByVal fEnable As Long) As Long<br>
        调用如: Call EnableWindow(Form1.hwnd, 0)为拒绝接受鼠标和键盘事件,<br>
        调用如: Call EnableWindow(Form1.hwnd, 1)为允许接受键盘和鼠标事件。<br>
        参数:hwnd不用说,就是一个窗口句柄,fEnable参数:窗口是否响应操作。为零禁止操作窗口,非零允许操作窗口。<br>
        =====<br>
        ShowWindow函数:显示或隐藏指定句柄的窗口<br>
        将1个隐藏的窗口显示出来,有意思,相当于VB自身内部控件的visible属性。而且超越于此,它还能指定显示时是否最大化,最小化等,声明如下:<br>
        Public Declare Function ShowWindow Lib &quot;user32&quot; (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long <br>
        调用如:<br>
        Const SW_HIDE = 0 参数nCmdShow之一,隐藏窗口<br>
        Const SW_SHOW = 5 显示窗口 <br>
        i = ShowWindow(form1.hwnd, SW_HIDE)<br>
        参数:<br>
        hwnd: Long,窗口句柄,要向这个窗口应用由nCmdShow指定的命令 <br>
        nCmdShow: Long,为窗口指定显示或隐藏的一个命令。请用下述任何一个常数 <br>
        SW_HIDE 隐藏窗口,活动状态给令一个窗口 <br>
        SW_MINIMIZE 最小化窗口,活动状态给令一个窗口 <br>
        SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态 <br>
        SW_SHOW=5 用当前的大小和位置显示一个窗口,同时令其进入活动状态 <br>
        SW_SHOWMAXIMIZED=3 最大化窗口,并将其激活 <br>
        SW_SHOWMINIMIZED=2 最小化窗口,并将其激活 <br>
        SW_SHOWDEFAULT=10 按窗口本来的方式显示,并激活。<br>
        SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口 <br>
        SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口 <br>
        SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口 <br>
        SW_SHOWNORMAL 与SW_RESTORE相同 <br>
        注:各常数的值请查阅API浏览器中的constants(常数列表)。<br>
        ======<br>
        关闭指定句柄的窗口:SendMessageA的WM_CLOSE消息 <br>
        SendMessageA的声明在前面有,消息WM_CLOSE的值为&amp;H10,后两个参数为空,用0&amp;。函数返回值若为0表示程序处理了此消息。调用如下:<br>
        Private Declare Function SendMessage Lib &quot;user32&quot; Alias &quot;SendMessageA&quot; (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long<br>
        Const WM_CLOSE = &amp;H10<br>
        Private Sub Command1_Click()<br>
        SendMessage Form1.hwnd, WM_CLOSE, 0&amp;, 0&amp;<br>
        End Sub<br>
        还有一个强制从内存中清除窗口的函数:DestroyWindow函数<br>
        其功能是直接清除掉内存中的1个窗口,返回非0表示成功,返回0表示失败。声明:<br>
        Public Declare Function DestroyWindow Lib &quot;user32&quot; (ByVal hwnd As Long) As Long)<br>
        很简单,参数只是指定1个窗口句柄。调用如:DestroyWindow Form1.hwnd。<br>
        =====<br>
        寻找窗口列表中第一个符合条件的父窗口: FindWindowA函数 <br>
        Declare Function FindWindow Lib &quot;user32&quot; Alias &quot;FindWindowA&quot; (ByVal lpClassName As String, ByVal lpWindowName As String) As Long<br>
        函数返回找到的窗口的句柄。比如要查找标题为&quot;未命名-记事本&quot;的窗口句柄:<br>
        hWndTmp = FindWindowA(vbNullString,&quot;未命名-记事本&quot;) 二个参数均为字符串,如果某个为空,则用vbNullString或0&amp;补上。<br>
        参数:<br>
        lpClassName:某窗口类名,或设为零或vbNullString,表示接收任何类 <br>
        lpWindowName:某窗口标题,或设为零或vbNullString,表示接收任何窗口标题 。<br>
        该函数常用来查找ThunderRTMain窗口类的隐藏窗口的句柄。例如:<br>
        Dim hw&amp;, cnt&amp;<br>
        Dim rttitle As String * 256<br>
        hw&amp; = FindWindowA(&quot;ThunderRT5Main&quot;, vbNullString) <br>
        cnt = GetWindowText(hw&amp;, rttitle, 255)<br>
        MsgBox Left$(rttitle, cnt), 0, &quot;RTMain title&quot; <br>
        =====<br>
        根据1个窗口句柄返回另1个相关窗口句柄 :GetWindow函数<br>
        传入一个源窗口句柄,返回另1个与之有关的窗口句柄,如源窗口的下1个兄弟窗口,第1个子窗口等。声明:<br>
        Declare Function GetWindow Lib &quot;user32&quot;(ByVal hwnd As Long, ByVal wCmd As Long) As Long<br>
        调用如:<br>
        Const GW_HWNDNEXT = 2 <br>
        hWndlxn = GetWindow(hWndTmp, GW_HWNDNEXT)<br>
        参数:hwnd:源窗口句柄。 <br>
        wCmd参数:指定结果窗口与源窗口的关系,它们建立在下述常数基础上: <br>
        GW_CHILD 寻找源窗口的第一个子窗口 <br>
        GW_HWNDFIRST 为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口 <br>
        GW_HWNDLAST 为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口 <br>
        GW_HWNDNEXT 为源窗口寻找下一个兄弟窗口 <br>
        GW_HWNDPREV 为源窗口寻找前一个兄弟窗口 <br>
        GW_OWNER 寻找窗口的所有者 <br>
        注解 <br>
        兄弟或同级是指在整个分级结构中位于同一级别的窗口。如某个窗口有五个子窗口,那五个窗口就是兄弟窗口。尽管GetWindow可用于枚举窗口,但倘若要在枚举过程中重新定位、创建和清除窗口,那么EnumWindows和EnumChildWindows更为可靠。<br>
        =====<br>
        GetWindowLongA函数:获得指定窗口某方面的结构信息(返回长整数)。<br>
        问题:什么叫&quot;窗口的结构数据信息&quot;?就是1个窗口的诸方面情况吧,象人有姓名性别年龄等一样,窗口有&quot;扩展样式(包含标题栏,如在Form1中表现为BorderStyle属性,有标题栏缩小、无标题栏等的组合值)&quot;,&quot;样式(包含滚动条、系统菜单、边框等可设置)&quot;,&quot;父窗口&quot;,&quot;子窗口&quot;,&quot;窗口函数&quot;等诸多方面,见下面nIndex参数值。这些方面的内容(每1方面只能有1个当前值)就构成了窗口的结构信息。<br>
        该函数从附加窗口内存中返回1个长整数值。<br>
        声明:<br>
        Public Declare Function GetWindowLong Lib &quot;user32&quot; Alias &quot;GetWindowLongA&quot; (ByVal hwnd As Long, ByVal nIndex As Long) As Long<br>
        此函数用来获取指定窗口的某方面&quot;结构数据&quot;信息。 函数返回值由参数nIndex来决定要返回哪个方面的当前值。若出错则返回0。<br>
        调用如:Const GWL_STYLE = -16<br>
        Private Sub Command1_Click()<br>
        X = GetWindowLongA(Form1.hwnd, GWL_STYLE)<br>
        Print X<br>
        End Sub<br>
        参数:<br>
        hwnd: Long,欲获取信息的窗口的句柄 <br>
        nIndex: Long,欲取回此窗口哪方面的信息,可以是下述任何一个常数: <br>
        GWL_EXSTYLE 扩展窗口样式 <br>
        (可能包含有:WS_EX_TOOLWINDOW=&amp;H80标题栏缩小可变大小,相当于BorderStyle=5; WS_EX_TRANSPARENT=&amp;H20&amp;隐藏绘图区,但显示其上的子控件。有意思。等,别的我也不太清楚,好象要去查MSDN才可查到) <br>
        GWL_STYLE 窗口样式 <br>
        (可能值有:WS_VSCROLL=?垂直滚动条,WS_HSCROLL=?水平滚动条,<br>
        WS_MAXIMIZEBOX=?标题栏右边最大化纽,WS_MINIMIZEBOX=?最小化纽等等)<br>
        GWL_WNDPROC 该窗口的窗口函数的地址 <br>
        GWL_HINSTANCE 拥有窗口的实例的句柄 <br>
        GWL_HWNDPARENT 该窗口之父的句柄。不要用SetWindowWord来改变这个值 <br>
        GWL_ID 对话框中一个子窗口的标识符 <br>
        GWL_USERDATA 含义由应用程序规定 <br>
        DWL_DLGPROC 这个窗口的对话框函数地址 <br>
        DWL_MSGRESULT 在对话框函数中处理的一条消息返回的值 <br>
        DWL_USER 含义由应用程序规定 <br>
        -----<br>
        SetWindowLongA函数:为窗口设置窗口结构信息<br>
        常用此函数来动态地设置窗口的风格(如样式,滚动条等等)。即不在属性窗口中设置。而在API中设置。 <br>
        声明:<br>
        Public Declare Function SetWindowLong Lib &quot;user32&quot; Alias &quot;SetWindowLongA&quot; (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long<br>
        调用如:<br>
        Public Const WS_EX_TOOLWINDOW = &amp;H80<br>
        lStyle = WS_EX_TOOLWINDOW<br>
        lRet = SetWindowLongA(Me.hwnd, GWL_EXSTYLE, GetWindowLongA(Me.hwnd, GWL_EXSTYLE) Or lStyle) 注:这里有1个Or&quot;或&quot;操作。为何要用OR呢?这是因为一个窗口的GWL_EXSTYLE包含了多项设置值的和(如同时可能有滚动条,标题栏等值的组合,如为262400),用or就可只改动其部分值,而保留其他方面原设置不变。<br>
        参数:<br>
        hwnd Long,欲设置信息的窗口的句柄 <br>
        nIndex Long,请参考GetWindowLong函数的nIndex参数的说明 <br>
        dwNewLong Long,由nIndex指定的窗口信息的新值 <br>
        -------<br>
        GetWindowWord函数:获得指定窗口的结构信息(返回字值) <br>
        该函数从附加窗口内存中返回字值。与GetWindowLong相似。 <br>
        声明: <br>
        Declare Function GetWindowWord Lib &quot;user32&quot; Alias &quot;GetWindowWord&quot; (ByVal hwnd As Long, ByVal nIndex As Long) As Integer<br>
        调用如:<br>
        Const GWL_HWNDPARENT = -8<br>
        parent = GetWindowWord(Form1.hwnd, GWL_HWNDPARENT) <br>
        这里调用后parent返回Form1的上一级父窗口的句柄。再例如command1在form1中, x=GetWindowWord(command1.hwnd,GWL_HWNDPARENT)返回的x就等于form1.hwnd.<br>
        参数见GetWindowLong.<br>
        ======<br>
        获得指定窗口所属的窗口类名称:GetClassNameA函数<br>
        声明:<br>
        Declare Function GetClassName Lib &quot;user32&quot; Alias &quot;GetClassNameA&quot; (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long<br>
        调用如--求Form1所属的窗口类的名称 :<br>
        pclass = Space(31) <br>
        nlen = GetClassNameA(form1.hwnd, pclass, 32)<br>
        pclass = Left(pclass, nlen)<br>
        第1个参数为某窗口句柄。第2个参数为字符串缓冲区,第3个参数为缓冲区长度。<br>
        参数lpClassName返回值为窗口类名称字符串,如上例为ThunderFormDC类。<br>
        函数返回值为类名字符串长度。如上面nlen为13。<br>
        ====<br>
        创建不规则窗口之&quot;圆角矩形&quot;:SetWindowRgn结合CreateRoundRectRgn函数<br>
        SetWindowRgn函数用于创建各种几何形状的窗口,声明前面已有,为:<br>
        Public Declare Function SetWindowRgn Lib &quot;user32&quot; Alias &quot;SetWindowRgn&quot; (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long<br>
        第1个参数为窗口句柄,第2个参数为几何形状区域句柄,第3个参数为是否立即重画。 <br>
        函数CreateRoundRectRgn为创建圆角矩形,函数返回创建的圆角区域句柄。声明:<br>
        Public Declare Function CreateRoundRectRgn Lib &quot;gdi32&quot; (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long<br>
        参数就是三个(X,Y)值,X1,Y1为左上角坐标,因为是用窗口自身坐标系统来度量,所以左上角坐标一般为0,0(注:FORM窗体为scaleleft,scaletop),X2,Y2为右下角坐标(注意不一定是直接的width或scalewidth,要用scaleleft+scalewidth才是&quot;右下角&quot;横坐标):如果是控件,就是其width,height的值,而如果是窗体,要加上其scaleleft,scaletop<br>
        得到右下角坐标值。X3,Y3表示圆角的大小。X3的取值范围是0(无圆角)到矩形宽(width或scalewidth,全圆),Y3的取值范围是0(无圆角)到矩形高(height或scaleheight,全圆),常乘以一个0至1的单精度数来表示。例如:<br>
        x = SetWindowRgn(form1.hwnd, CreateRoundRectRgn(form1.ScaleLeft, form1.ScaleTop, form1.ScaleWidth + form1.ScaleLeft, form1.ScaleHeight + form1.ScaleTop, form1.ScaleWidth * 0.6, form1.ScaleHeight * 0.6), True)<br>
        最后说明一下,还有一个API函数可直接画圆角矩形,就是RoundRect函数。声明:<br>
        Declare Function RoundRect Lib &quot;gdi32&quot; (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long<br>
        其中参数hDC是窗口的设备场景句柄。三个(X,Y)和CreateRoundRectRgn的是一样的,分别为左上角,右下角坐标和圆角大小。<br>
        ======<br>
        获取本程序活动窗口的句柄:GetActiveWindow函数<br>
        声明:<br>
        Declare Function GetActiveWindow Lib &quot;user32&quot;() As Long<br>
        很简单,函数返回值为当前本程序活动窗口句柄。调用如:x=GetActiveWindow,这个函数不如GetForegroundWindow函数,建议用下面的:<br>
        ----<br>
        获取屏幕上当前活动窗口的句柄:GetForegroundWindow函数<br>
        这个函数功能更强大,能获取前台应用程序的活动窗口句柄。声明:<br>
        Declare Function GetForegroundWindow Lib &quot;user32&quot; () As Long<br>
        函数返回值为当前屏幕上活动窗口的句柄,如:x=GetForegroundWindow。<br>
        -----<br>
        判断一个窗口是否是活动窗口:IsWindowEnabled函数<br>
        声明:<br>
        Declare Function IsWindowEnabled Lib &quot;user32&quot;(ByVal hwnd As Long) As Long <br>
        参数hwnd是待检测窗口句柄。<br>
        调用如:x=IsWindowEnabled(Form1.hwnd),函数返回值若非0表示为活动窗口,返回0表示为失效窗口。<br>
        ----<br>
        禁止任务条--任务条所属窗口类为&quot;Shell_traywnd&quot;,用FindWindowA函数去查,如下: TaskBarhWnd = FindWindowA(&quot;Shell_traywnd&quot;, &quot;&quot;),然后用EnableWindow函数: lxn = EnableWindow(TaskBarhWnd,0)就可以了。        <p align="center">
        <br>
        &lt; <a href="040102.htm">上一页</a>--<a href="http://www.xxby.com" target="_blank">华生小屋</a>--<a href="040104.htm">下一页</a>     
        &gt;<br>
      </td>
    </tr>
  </table>
  </center>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -