添加标题和放大器;位置属性这一习俗ColorDialog类 [英] Adding Title & Location properties to this custom ColorDialog
问题描述
我已经采取了从自定义ColorDialog类类一块,另一块的其他定制ColorDialog类。
第一类已经实现了Title属性。
这是第一类(标记为答案翻译成VBNET)的我如何改变ColorDialog类的标题?
第二类已经实现了实时挑的颜色。
这是第二类(标记为答案):<一href="http://stackoverflow.com/questions/16583139/get-color-property-while-colordialog-still-open-before-confirming-the-dialog/">Get颜色属性而ColorDialog类仍处于打开状态,确认对话框之前?
Unafortunatelly的位置属性我不知道任何关于如何落实到甚至被搜索的解决方案的对话框。
好了,现在我想合并两件code以获得一个强大的默认ColorDialog类。
自定义ColorDialog类类翻译成VB.NET与Title属性是工作,但是当我尝试合并两类title属性不工作,我可以在属性字段更改标题值,但没有显示任何标题(该ColorDialog类标题是空的)。
我的问题是什么样的变化,我需要作出此类正常工作Title属性,如果我怎么能在ColorDialog类在屏幕上实现一个位置属性来容易移居如果我的愿望,例如: MyColorDialog.Location =新的点(),我已经使用了RECT结构尝试过的事情了。
这就是我所做的更改合并类的重要组成部分:
(Title属性的东西都regioned和评论分开。)
导入了System.Runtime.InteropServices
公共类Colordialog_Realtime
继承ColorDialog类
#REGIONTitle属性的东西
&LT;的DllImport(user32.dll中)&GT; _
私人共享功能函数SetWindowText(HWND作为IntPtr的,lpString作为字符串)作为布尔
端功能
私人m_title作为字符串=的String.Empty
私人标题设置为布尔= FALSE
公共属性Title()作为字符串
得到
返回m_title
最终获取
设置(值作为字符串)
如果值状态并没有任何AndAlso值小于;&GT; m_title然后
m_title =价值
标题设置中=假
结束如果
结束设定
高端物业
#END地区
公共事件CurrentColor(BYVAL c以彩色)
私人常量GA_ROOT作为整数= 2
私人常量WM_CTLCOLOREDIT作为整数=安培; H133
公开声明函数GetAncestor库user32.dll中_
(BYVAL的HWND作为IntPtr的,BYVAL gaFlags为整数)作为IntPtr的
私人EditWindows方式列表(中ApiWindow)=无
公共子新()
Me.FullOpen = TRUE
结束小组
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand,名称:=FullTrust的)&GT; _
受保护的覆盖功能HOOKPROC(BYVAL的HWND作为IntPtr的,BYVAL味精作为整数,BYVAL wParam中的IntPtr,BYVAL lParam中的IntPtr)作为IntPtr的
Title属性的东西
如果不那么标题设置
SetWindowText函数(HWND,m_title)
标题设置为TRUE
结束如果
称号属性的东西完
选择案例味精
案例WM_CTLCOLOREDIT
如果IsNothing(EditWindows)然后
昏暗的主窗口作为IntPtr的= GetAncestor(HWND,GA_ROOT)
如果不mainWindow.Equals(IntPtr.Zero)然后
EditWindows =新名单(中ApiWindow)((新WindowsEnumerator).GetChildWindows(的主窗口,编辑))
结束如果
结束如果
如果不IsNothing(EditWindows)AndAlso EditWindows.Count = 6于是,
DIM strRed的String = WindowsEnumerator.WindowText(EditWindows(3).hWnd)
昏暗strGreen作为字符串= WindowsEnumerator.WindowText(EditWindows(4).hWnd)
昏暗strBlue作为字符串= WindowsEnumerator.WindowText(EditWindows(5).hWnd)
暗淡的红,绿,蓝作为整数
如果Integer.TryParse(strRed,红)。然后
如果Integer.TryParse(strGreen,绿),然后
如果Integer.TryParse(strBlue,蓝)然后
的RaiseEvent CurrentColor(Color.FromArgb(红,绿,蓝))
结束如果
结束如果
结束如果
结束如果
最终选择
返回MyBase.HookProc(HWND,味精,的wParam,lParam的)
端功能
末级
这是其他类:
类ApiWindow
公众的hWnd作为IntPtr的
公共类名作为字符串
公共MainWindowTitle作为字符串
末级
类WindowsEnumerator
私人委托函数EnumCallBackDelegate(BYVAL HWND作为IntPtr的,BYVAL lParam的作为整数)作为整数
私人声明函数EnumWindows的库USER32_
(BYVAL lpEnumFunc作为EnumCallBackDelegate,BYVAL lParam的作为整数)作为整数
私人声明函数EnumChildWindows库USER32_
(BYVAL hWndParent作为IntPtr的,BYVAL lpEnumFunc作为EnumCallBackDelegate,BYVAL lParam的作为整数)作为整数
私人声明函数GetClassName库USER32别名GetClassNameA_
(BYVAL HWND作为IntPtr的,BYVAL lpClassName作为System.Text.StringBuilder,BYVAL nMaxCount为整数)作为整数
私人声明函数IsWindowVisible库USER32(BYVAL HWND作为IntPtr的)作为整数
私人声明函数的getParent库USER32(BYVAL HWND作为IntPtr的)作为整数
私人声明SendMessage函数库USER32别名SendMessageA_
(BYVAL HWND作为IntPtr的,BYVAL WMSG作为整数,wParam参数BYVAL作为整数,BYVAL lParam的作为整数)作为整数
私人声明SendMessage函数库USER32别名SendMessageA_
(BYVAL HWND作为IntPtr的,BYVAL WMSG作为整数,wParam参数BYVAL作为整数,BYVAL lParam中System.Text.StringBuilder)作为整数
私人_listChildren作为新的列表(ApiWindow中)
私人_listTopLevel作为新的列表(ApiWindow中)
私人_topLevelClass作为字符串=的String.Empty
私人_childClass作为字符串=的String.Empty
公共重载函数GetTopLevelWindows()作为ApiWindow()
EnumWindows的(AddressOf EnumWindowProc,和放大器; H0)
返回_listTopLevel.ToArray
端功能
公共重载函数GetTopLevelWindows(BYVAL类名作为字符串)作为ApiWindow()
_topLevelClass =的className
返回Me.GetTopLevelWindows()
端功能
公共重载函数GetChildWindows(BYVAL HWND作为的Int32)作为ApiWindow()
_listChildren.Clear()
EnumChildWindows(HWND,AddressOf EnumChildWindowProc,和放大器; H0)
返回_listChildren.ToArray
端功能
公共重载函数GetChildWindows(BYVAL HWND作为的Int32,BYVAL childClass作为字符串)作为ApiWindow()
_childClass = childClass
返回Me.GetChildWindows(HWND)
端功能
专用功能EnumWindowProc(BYVAL HWND作为的Int32,BYVAL lParam中的Int32)作为的Int32
如果的getParent(HWND)= 0 AndAlso IsWindowVisible(HWND)然后
昏暗的窗口ApiWindow = GetWindowIdentification(HWND)
如果_topLevelClass.Length = 0 OrElse运算window.ClassName.ToLower()= _topLevelClass.ToLower(),然后
_listTopLevel.Add(窗口)
结束如果
结束如果
返回1
端功能
专用功能EnumChildWindowProc(BYVAL HWND作为的Int32,BYVAL lParam中的Int32)作为的Int32
昏暗的窗口ApiWindow = GetWindowIdentification(HWND)
如果_childClass.Length = 0 OrElse运算window.ClassName.ToLower()= _childClass.ToLower(),然后
_listChildren.Add(窗口)
结束如果
返回1
端功能
专用功能GetWindowIdentification(BYVAL HWND为整数)作为ApiWindow
昏暗classBuilder作为新System.Text.StringBuilder(64)
GetClassName(HWND,classBuilder,64)
昏暗的窗口作为新ApiWindow
window.ClassName = classBuilder.ToString()
window.MainWindowTitle = WindowText(HWND)
window.hWnd = HWND
返回窗口
端功能
公共共享功能WindowText(BYVAL HWND作为IntPtr的)作为字符串
常量W_GETTEXT作为整数=安培;高清
常量W_GETTEXTLENGTH作为整数=安培;何
昏暗的SB作为新System.Text.StringBuilder
昏暗的长度为整数= SendMessage消息(HWND,W_GETTEXTLENGTH,0,0)
如果长度GT; 0然后
SB =新System.Text.StringBuilder(长度+ 1)的
SendMessage消息(HWND,W_GETTEXT,SB.Capacity,SB)
结束如果
返回SB.ToString
端功能
末级
实例:
私人小组PicBox_Click(发送者为对象,E作为EventArgs的)把手PicBox.Click
昏暗prevColor对于Color = PicBox.BackColor
ColorDlg =新Colordialog_Realtime
ColorDlg.Color = PicBox.backcolor
ColorDlg.Title =请选择新的颜色:
ColorDlg.Location =新的点(Me.Location.X + Me.Width,Me.Location.Y)
如果ColorDlg.ShowDialog()= Windows.Forms.DialogResult.OK然后
PicBox.BackColor = ColorDlg.Color
其他
PicBox.BackColor = prevColor
结束如果
ColorDlg =无
结束小组
新 Colordialog_Realtime
类:
公共类Colordialog_Realtime
继承ColorDialog类
公共事件CurrentColor(BYVAL c以彩色)
私人常量GA_ROOT作为整数= 2
私人常量WM_PAINT作为整数=放大器; HF
私人常量WM_CTLCOLOREDIT作为整数=安培; H133
公开声明函数GetAncestor库user32.dll中_
(BYVAL的HWND作为IntPtr的,BYVAL gaFlags为整数)作为IntPtr的
私人EditWindows方式列表(中ApiWindow)=无
公共子新()
Me.FullOpen = TRUE
结束小组
&LT; Runtime.InteropServices.DllImport(user32.dll中)&GT; _
私人共享功能函数SetWindowText(HWND作为IntPtr的,lpString作为字符串)作为布尔
端功能
私人常量SWP_NOSIZE作为整数=安培; H1
私人声明函数SetWindowPos库USER32别名SetWindowPos_
(BYVAL HWND作为IntPtr的,BYVAL hWndInsertAfter作为整数,BYVAL x As中整数,BYVAL y为整数,BYVAL CX作为整数,BYVAL CY作为整数,BYVAL wFlags为整数)作为整数
私人m_title作为字符串=的String.Empty
私人标题设置为布尔= FALSE
公共属性Title()作为字符串
得到
返回m_title
最终获取
设置(值作为字符串)
如果值状态并没有任何AndAlso值小于;&GT; m_title然后
m_title =价值
标题设置中=假
结束如果
结束设定
高端物业
私人m_location作为点= Point.Empty
私人locationSet由于布尔= FALSE
公共属性Location()为点
得到
返回m_location
最终获取
设置(值点)
如果不value.Equals(Point.Empty)AndAlso不value.Equals(m_location)然后
m_location =价值
locationSet =假
结束如果
结束设定
高端物业
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand,名称:=FullTrust的)&GT; _
受保护的覆盖功能HOOKPROC(BYVAL的HWND作为IntPtr的,BYVAL味精作为整数,BYVAL wParam中的IntPtr,BYVAL lParam中的IntPtr)作为IntPtr的
选择案例味精
案例WM_PAINT
如果没有标题设置中AndAlso标题&LT;&GT;的String.Empty然后
SetWindowText函数(GetAncestor(HWND,GA_ROOT),标题)
标题设置为TRUE
结束如果
如果没有locationSet AndAlso不m_location.Equals(Point.Empty)然后
SetWindowPos(GetAncestor(HWND,GA_ROOT),0,m_location.X,m_location.Y,0,0,SWP_NOSIZE)
locationSet = TRUE
结束如果
案例WM_CTLCOLOREDIT
如果IsNothing(EditWindows)然后
昏暗的主窗口作为IntPtr的= GetAncestor(HWND,GA_ROOT)
如果不mainWindow.Equals(IntPtr.Zero)然后
EditWindows =新名单(中ApiWindow)((新WindowsEnumerator).GetChildWindows(的主窗口,编辑))
结束如果
结束如果
如果不IsNothing(EditWindows)AndAlso EditWindows.Count = 6于是,
DIM strRed的String = WindowsEnumerator.WindowText(EditWindows(3).hWnd)
昏暗strGreen作为字符串= WindowsEnumerator.WindowText(EditWindows(4).hWnd)
昏暗strBlue作为字符串= WindowsEnumerator.WindowText(EditWindows(5).hWnd)
暗淡的红,绿,蓝作为整数
如果Integer.TryParse(strRed,红)。然后
如果Integer.TryParse(strGreen,绿),然后
如果Integer.TryParse(strBlue,蓝)然后
的RaiseEvent CurrentColor(Color.FromArgb(红,绿,蓝))
结束如果
结束如果
结束如果
结束如果
最终选择
返回MyBase.HookProc(HWND,味精,的wParam,lParam的)
端功能
末级
I've taken a piece from a custom Colordialog class and another piece of other custom Colordialog.
The first class have implemented the Title property.
This is the first class (The marked answer translated to VBNET) : How do I change the title of ColorDialog?
The second class have implemented the realtime pick of the colors.
This is the second class (The marked answer): Get color property while ColorDialog still open, before confirming the dialog?
Unafortunatelly for the Location property I don't know nothing about how to implement it into a dialog even been searched for a solution.
Well, now I'm trying to merge the two pieces of code to get a powerfull "default" ColorDialog.
The custom ColorDialog class translated to VB.NET with Title property is working but when I try to merge the two classes the title property is not working, I can change the title value in the property field but is not showing any title (the ColorDialog title is empty).
My question is what changes I need to make to this class to work properly the Title property and if how I can implement a "Location" property to easy relocate the ColorDialog over the screen if i desire, for example: MyColorDialog.Location = new point(), I've tried it time ago using the RECT structure.
This is the important part of the merged class where I made changes :
(The Title property things are regioned and commented in separate.)
Imports System.Runtime.InteropServices
Public Class Colordialog_Realtime
Inherits ColorDialog
#Region " Title property things"
<DllImport("user32.dll")> _
Private Shared Function SetWindowText(hWnd As IntPtr, lpString As String) As Boolean
End Function
Private m_title As String = String.Empty
Private titleSet As Boolean = False
Public Property Title() As String
Get
Return m_title
End Get
Set(value As String)
If value IsNot Nothing AndAlso value <> m_title Then
m_title = value
titleSet = False
End If
End Set
End Property
#End Region
Public Event CurrentColor(ByVal c As Color)
Private Const GA_ROOT As Integer = 2
Private Const WM_CTLCOLOREDIT As Integer = &H133
Public Declare Function GetAncestor Lib "user32.dll" _
(ByVal hWnd As IntPtr, ByVal gaFlags As Integer) As IntPtr
Private EditWindows As List(Of ApiWindow) = Nothing
Public Sub New()
' Me.FullOpen = True
End Sub
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Function HookProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
' Title property things"
If Not titleSet Then
SetWindowText(hWnd, m_title)
titleSet = True
End If
' End of title property things
Select Case msg
Case WM_CTLCOLOREDIT
If IsNothing(EditWindows) Then
Dim mainWindow As IntPtr = GetAncestor(hWnd, GA_ROOT)
If Not mainWindow.Equals(IntPtr.Zero) Then
EditWindows = New List(Of ApiWindow)((New WindowsEnumerator).GetChildWindows(mainWindow, "Edit"))
End If
End If
If Not IsNothing(EditWindows) AndAlso EditWindows.Count = 6 Then
Dim strRed As String = WindowsEnumerator.WindowText(EditWindows(3).hWnd)
Dim strGreen As String = WindowsEnumerator.WindowText(EditWindows(4).hWnd)
Dim strBlue As String = WindowsEnumerator.WindowText(EditWindows(5).hWnd)
Dim Red, Green, Blue As Integer
If Integer.TryParse(strRed, Red) Then
If Integer.TryParse(strGreen, Green) Then
If Integer.TryParse(strBlue, Blue) Then
RaiseEvent CurrentColor(Color.FromArgb(Red, Green, Blue))
End If
End If
End If
End If
End Select
Return MyBase.HookProc(hWnd, msg, wParam, lParam)
End Function
End Class
This are the other classes:
Class ApiWindow
Public hWnd As IntPtr
Public ClassName As String
Public MainWindowTitle As String
End Class
Class WindowsEnumerator
Private Delegate Function EnumCallBackDelegate(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Integer
Private Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As EnumCallBackDelegate, ByVal lParam As Integer) As Integer
Private Declare Function EnumChildWindows Lib "user32" _
(ByVal hWndParent As IntPtr, ByVal lpEnumFunc As EnumCallBackDelegate, ByVal lParam As Integer) As Integer
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
(ByVal hwnd As IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As IntPtr) As Integer
Private Declare Function GetParent Lib "user32" (ByVal hwnd As IntPtr) As Integer
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As System.Text.StringBuilder) As Integer
Private _listChildren As New List(Of ApiWindow)
Private _listTopLevel As New List(Of ApiWindow)
Private _topLevelClass As String = String.Empty
Private _childClass As String = String.Empty
Public Overloads Function GetTopLevelWindows() As ApiWindow()
EnumWindows(AddressOf EnumWindowProc, &H0)
Return _listTopLevel.ToArray
End Function
Public Overloads Function GetTopLevelWindows(ByVal className As String) As ApiWindow()
_topLevelClass = className
Return Me.GetTopLevelWindows()
End Function
Public Overloads Function GetChildWindows(ByVal hwnd As Int32) As ApiWindow()
_listChildren.Clear()
EnumChildWindows(hwnd, AddressOf EnumChildWindowProc, &H0)
Return _listChildren.ToArray
End Function
Public Overloads Function GetChildWindows(ByVal hwnd As Int32, ByVal childClass As String) As ApiWindow()
_childClass = childClass
Return Me.GetChildWindows(hwnd)
End Function
Private Function EnumWindowProc(ByVal hwnd As Int32, ByVal lParam As Int32) As Int32
If GetParent(hwnd) = 0 AndAlso IsWindowVisible(hwnd) Then
Dim window As ApiWindow = GetWindowIdentification(hwnd)
If _topLevelClass.Length = 0 OrElse window.ClassName.ToLower() = _topLevelClass.ToLower() Then
_listTopLevel.Add(window)
End If
End If
Return 1
End Function
Private Function EnumChildWindowProc(ByVal hwnd As Int32, ByVal lParam As Int32) As Int32
Dim window As ApiWindow = GetWindowIdentification(hwnd)
If _childClass.Length = 0 OrElse window.ClassName.ToLower() = _childClass.ToLower() Then
_listChildren.Add(window)
End If
Return 1
End Function
Private Function GetWindowIdentification(ByVal hwnd As Integer) As ApiWindow
Dim classBuilder As New System.Text.StringBuilder(64)
GetClassName(hwnd, classBuilder, 64)
Dim window As New ApiWindow
window.ClassName = classBuilder.ToString()
window.MainWindowTitle = WindowText(hwnd)
window.hWnd = hwnd
Return window
End Function
Public Shared Function WindowText(ByVal hwnd As IntPtr) As String
Const W_GETTEXT As Integer = &HD
Const W_GETTEXTLENGTH As Integer = &HE
Dim SB As New System.Text.StringBuilder
Dim length As Integer = SendMessage(hwnd, W_GETTEXTLENGTH, 0, 0)
If length > 0 Then
SB = New System.Text.StringBuilder(length + 1)
SendMessage(hwnd, W_GETTEXT, SB.Capacity, SB)
End If
Return SB.ToString
End Function
End Class
Example usage:
Private Sub PicBox_Click(sender As Object, e As EventArgs) Handles PicBox.Click
Dim prevColor As Color = PicBox.BackColor
ColorDlg = New Colordialog_Realtime
ColorDlg.Color = PicBox.backcolor
ColorDlg.Title = "Please Select a New Color:"
ColorDlg.Location = New Point(Me.Location.X + Me.Width, Me.Location.Y)
If ColorDlg.ShowDialog() = Windows.Forms.DialogResult.OK Then
PicBox.BackColor = ColorDlg.Color
Else
PicBox.BackColor = prevColor
End If
ColorDlg = Nothing
End Sub
New Colordialog_Realtime
Class:
Public Class Colordialog_Realtime
Inherits ColorDialog
Public Event CurrentColor(ByVal c As Color)
Private Const GA_ROOT As Integer = 2
Private Const WM_PAINT As Integer = &HF
Private Const WM_CTLCOLOREDIT As Integer = &H133
Public Declare Function GetAncestor Lib "user32.dll" _
(ByVal hWnd As IntPtr, ByVal gaFlags As Integer) As IntPtr
Private EditWindows As List(Of ApiWindow) = Nothing
Public Sub New()
Me.FullOpen = True
End Sub
<Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function SetWindowText(hWnd As IntPtr, lpString As String) As Boolean
End Function
Private Const SWP_NOSIZE As Integer = &H1
Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" _
(ByVal hwnd As IntPtr, ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer
Private m_title As String = String.Empty
Private titleSet As Boolean = False
Public Property Title() As String
Get
Return m_title
End Get
Set(value As String)
If value IsNot Nothing AndAlso value <> m_title Then
m_title = value
titleSet = False
End If
End Set
End Property
Private m_location As Point = Point.Empty
Private locationSet As Boolean = False
Public Property Location() As Point
Get
Return m_location
End Get
Set(value As Point)
If Not value.Equals(Point.Empty) AndAlso Not value.Equals(m_location) Then
m_location = value
locationSet = False
End If
End Set
End Property
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Function HookProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Select Case msg
Case WM_PAINT
If Not titleSet AndAlso Title <> String.Empty Then
SetWindowText(GetAncestor(hWnd, GA_ROOT), Title)
titleSet = True
End If
If Not locationSet AndAlso Not m_location.Equals(Point.Empty) Then
SetWindowPos(GetAncestor(hWnd, GA_ROOT), 0, m_location.X, m_location.Y, 0, 0, SWP_NOSIZE)
locationSet = True
End If
Case WM_CTLCOLOREDIT
If IsNothing(EditWindows) Then
Dim mainWindow As IntPtr = GetAncestor(hWnd, GA_ROOT)
If Not mainWindow.Equals(IntPtr.Zero) Then
EditWindows = New List(Of ApiWindow)((New WindowsEnumerator).GetChildWindows(mainWindow, "Edit"))
End If
End If
If Not IsNothing(EditWindows) AndAlso EditWindows.Count = 6 Then
Dim strRed As String = WindowsEnumerator.WindowText(EditWindows(3).hWnd)
Dim strGreen As String = WindowsEnumerator.WindowText(EditWindows(4).hWnd)
Dim strBlue As String = WindowsEnumerator.WindowText(EditWindows(5).hWnd)
Dim Red, Green, Blue As Integer
If Integer.TryParse(strRed, Red) Then
If Integer.TryParse(strGreen, Green) Then
If Integer.TryParse(strBlue, Blue) Then
RaiseEvent CurrentColor(Color.FromArgb(Red, Green, Blue))
End If
End If
End If
End If
End Select
Return MyBase.HookProc(hWnd, msg, wParam, lParam)
End Function
End Class
这篇关于添加标题和放大器;位置属性这一习俗ColorDialog类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!