Net/WFP窗体枚举类


using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows;
using System.Xml;

// author: andy , 20140521
// WPF下窗体枚举
namespace DrawCanvas {
public class XmalWinEnumHelper {
private delegate bool EnumChildDelegateProc(IntPtr hWnd, IntPtr lParam);
public struct POINT
{
public int X;
public int Y;
public POINT(int x, int y)
{
this.X = x;
this.Y = y;
}
}

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool EnumChildWindows(IntPtr hwndParent, XmalWinEnumHelper.EnumChildDelegateProc lpEnumFunc, IntPtr lParam);
[DllImport("user32.dll")]
private static extern bool ScreenToClient(IntPtr hWnd, ref XmalWinEnumHelper.POINT lpPoint);
[DllImport("user32.dll")]
private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool IsWindowVisible(IntPtr hWnd);

//=> FUNCITON
public static List<int> GetChildWindows(IntPtr hWndParent) {
List<int> list = new List<int>();
GCHandle value = GCHandle.Alloc(list);
XmalWinEnumHelper.EnumChildDelegateProc lpEnumFunc = new XmalWinEnumHelper.EnumChildDelegateProc(XmalWinEnumHelper.DoEnumChildWindowsProc);
XmalWinEnumHelper.EnumChildWindows(hWndParent, lpEnumFunc, GCHandle.ToIntPtr(value));
value.Free();
list.Sort();
return list;
}
private static bool DoEnumChildWindowsProc(IntPtr hWnd, IntPtr lParam) {
List<int> list = GCHandle.FromIntPtr(lParam).Target as List<int>;
if (list != null && XmalWinEnumHelper.IsWindowVisible(hWnd)) {
list.Add(hWnd.ToInt32());
}
return true;
}

public static bool ConvertPointFromScreenToClient(IntPtr hWnd, ref System.Windows.Point pt) {
if (hWnd.ToInt32() == 0) {
return false;
}
XmalWinEnumHelper.POINT pOINT = new XmalWinEnumHelper.POINT((int)pt.X, (int)pt.Y);
bool flag = XmalWinEnumHelper.ScreenToClient(hWnd, ref pOINT);
if (flag) {
pt.X = (double)pOINT.X / 1.0;
pt.Y = (double)pOINT.Y / 1.0;
}
return flag;
}
public static string GetWindowTitle(IntPtr hWnd) {
StringBuilder stringBuilder = new StringBuilder(512);
XmalWinEnumHelper.GetWindowText(hWnd, stringBuilder, 512);
return stringBuilder.ToString();
}
}
}

Net/WFP窗体枚举类

时间: 2024-08-19 17:31:45

Net/WFP窗体枚举类的相关文章

JavaSE复习_6 枚举类

△单例类是指只有一个实例,而枚举类实际上就是有有限个实例的类,在类里已经把实例定义好了. △枚举类的三种创建形式: 1) enum Week { MON,TUE,WED;//枚举类有默认构造函数创建的三个实例} } 2) enum Week { MON("星期一"), TUE( "星期二"),WED ("星期三" ); //具有参数的构造函数 private String name; Week(String name) { this. name=

zend framework获取数据库中枚举类enum的数据并将其转换成数组

在model中建立这样的模型,在其中写入获取枚举类的方法 class Student extends Zend_Db_Table{ protected $_name ='student'; protected $_primary ='id'; function getPartyEnum($enumname){ //适配器并获取数据 $db = $this->getAdapter(); $db->query("SET NAMES GBK"); $sql = $db->q

枚举类

enum SeasonEnum //这是一个枚举类,有四个枚举值 { SPRING,SUMMER,FALL,WINTER; } public class EnumTest { public void judge(SeasonEnum s) { switch(s) { case SPRING: System.out.println("春天"); break; case SUMMER: System.out.println("夏天"); break; case FALL

包含抽象方法的枚举类

public enum Operation { PLUS,MINUS,TIMES,DIVIDE;//每一个枚举值都是一个实例 double eval(double x,double y)//我们定义一个方法,实现不同的操作 { switch(this) { case PLUS: return x + y; case MINUS: return x - y; case TIMES: return x * y; case DIVIDE: return x % y; default: return 0

python,使用枚举类,面向对象高级编程

python #针对常量 #枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例. from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) #这样我们就获得了Month类型的枚举类 for name, member in Month.__members__.items():

java 枚举类 enum 总结

枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型, 字符型或其它类型显然是不妥当的.为此,C语言提供了一种称为“枚举”的类型.在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变 量取值不能超过定义的范围.应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型. java中枚举类总

枚举类专题(有源代码)

简介:JDK1.5之前需要自定义枚举类,JDK1.5新增的enum关键字用于定义枚举类,若枚举只有一个成员,则可以作为一种单例模式的实现方式 枚举类的属性:枚举类对象的属性不应允许被改动,所以应该使用private final修饰 ·枚举类的使用private final修饰的属性应该在构造器中为其赋值 ·若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数 Enum枚举类: ·必须在枚举类的第一行声明枚举类对象. ·枚举类和普通类的区别: 1.使用enum定义的枚举类默认继

JAVA学习--枚举类的使用

* 一.枚举类  * 1.如何自定义枚举类  * 2.如何使用enum关键字定义枚举类  *     >常用的方法:values() valueOf(String name)  *     >如何让枚举类实现接口:可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同.(相当于让每个对象重写抽象方法) 1 //普通枚举类 2 class Season{ 3 //1.提供类的属性,声明为private final 4 private final String seasonName; 5 p

我在一个解决方案下有2个项目,那么在A项目下如何调用其他项目的资源,比如窗体,类,方法,属性等??

下面这些图展示了如何在一个项目中引用另一个项目 sln是解决方案csproj是c#项目项目是文件的集合解决方案是项目的集合包含关系,一个sln中包含多个csproj.一个csproj包含多个文件.sln:solusioncsproj:c sharp projectcsproj可以作为单独的项目运行,也可以在sln中添加csproj统一管理.如果你的解决方案中仅仅包含一个工程,那么是打开工程和解决方案的时候一样的.但是在系统中一个解决方案中可能有多个工程打开一个方案中的一个工程 这个工程打开的时候