windows设置ip时候那样的文本匡怎样实现?

xiaobird1 2003-09-17 01:28:16
rt
...全文
32 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxcc 2003-09-18
  • 打赏
  • 举报
回复
哈哈!我是说找找 然也 版主
http://expert.csdn.net/Expert/topic/2272/2272545.xml?temp=.4958307
jlum99 2003-09-18
  • 打赏
  • 举报
回复
mask控件,只是包装的不是很好,实在不行自己写个吧。
xiaobird1 2003-09-18
  • 打赏
  • 举报
回复
楼上不要这样啊,找了。
不懂啊。
dsclub 2003-09-18
  • 打赏
  • 举报
回复
能处理WM_CHAR消息来响应←键 →键就更好了

:)
china77 2003-09-18
  • 打赏
  • 举报
回复
本来还想把自己的那来骗点分,看了 wxy_xiaoyu大虾的
哎,我还是洗洗睡吧!
lxcc 2003-09-18
  • 打赏
  • 举报
回复
赶紧送医院
xiaobird1 2003-09-18
  • 打赏
  • 举报
回复
吐血感谢 wxy_xiaoyu(☆然也☆ => .NET 努力ing)。

同样吐血感谢lxcc(虫莲) 。

也感谢其他朋友。
lxcc 2003-09-18
  • 打赏
  • 举报
回复
我说没有记错吗!然也肯定有!呵呵
Sean918 2003-09-18
  • 打赏
  • 举报
回复
建一个 ACTIVEX 控件工程,COPY 上面的代码

乱码是中文注释,别管了
Sean918 2003-09-18
  • 打赏
  • 举报
回复
Option Explicit
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWIDTH As Long, ByVal nHEIGHT As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function INITCOMMONCONTROLSEX Lib "comctl32.dll" Alias "InitCommonControlsEx" (ByRef TLPINITCOMMONCONTROLSEX As INITCOMMONCONTROLSEX) As Long
Private Type INITCOMMONCONTROLSEX
dwSize As Long 'size of this structure
dwICC As Long 'flags indicating which classes to be initialized
End Type
Private Const ICC_INTERNET_CLASSES As Long = &H800

Private Const WS_CHILD As Long = &H40000000
Private Const WS_GROUP As Long = &H20000
Private Const WS_TABSTOP As Long = &H10000
Private Const WS_VISIBLE As Long = &H10000000
Private Const WS_BORDER As Long = &H800000

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_SETFONT As Long = &H30
Private Const WM_GETFONT As Long = &H31

Private Const WM_USER As Long = &H400
Private Const IPM_CLEARADDRESS As Long = (WM_USER + 100)
Private Const IPM_SETADDRESS As Long = (WM_USER + 101)
Private Const IPM_GETADDRESS As Long = (WM_USER + 102)
Private Const IPM_SETRANGE As Long = (WM_USER + 103)
Private Const IPM_SETFOCUS As Long = (WM_USER + 104)
Private Const IPM_ISBLANK As Long = (WM_USER + 105)

Private IP1 As Long



Private Sub UserControl_Initialize()
Call CreateIPAddressBox
SendMessage IP1, IPM_SETADDRESS, 0, ByVal MAKEIPADDRESS(127, 0, 0, 1)
End Sub

Private Function CreateIPAddressBox() As Boolean
Dim CommCtrl As INITCOMMONCONTROLSEX

CommCtrl.dwSize = Len(CommCtrl)
CommCtrl.dwICC = ICC_INTERNET_CLASSES

If INITCOMMONCONTROLSEX(CommCtrl) Then
IP1 = CreateWindowEx(0, "SysIPAddress32", "IPADDR1", _
WS_CHILD Or WS_TABSTOP Or WS_GROUP Or WS_VISIBLE, _
0, 0, UserControl.Width / 15, UserControl.Height / 15, _
UserControl.hwnd, 0, App.hInstance, ByVal 0&)

If IP1 Then
'½«IP¿Ø¼þµÄ×ÖÌåÉèÖõÄÓë´°ÌåÒ»Ñù ÓÃËÎÌå
SendMessage IP1, WM_SETFONT, SendMessage(UserControl.hwnd, WM_GETFONT, 0, ByVal 0&), ByVal 0&
Else
MsgBox "²»ÄÜ´´½¨¿Ø¼þ", vbCritical, "´íÎó£¡"
End If

Else
MsgBox "²»ÄÜ´´½¨¿Ø¼þ", vbCritical, "´íÎó£¡"
End If
End Function


Private Sub UserControl_Resize()
DestroyWindow IP1
Call CreateIPAddressBox
SendMessage IP1, IPM_SETADDRESS, 0, ByVal MAKEIPADDRESS(127, 0, 0, 1)
End Sub

Private Sub UserControl_Terminate()
DestroyWindow IP1
End Sub

Private Function FIRST_IPADDRESS(ByVal x As Long) As Byte
FIRST_IPADDRESS = ((x And &H7F000000) \ &H1000000) Or (((x And &H80000000) <> 0) And &H80)
End Function

Private Function SECOND_IPADDRESS(ByVal x As Long) As Byte
SECOND_IPADDRESS = (x And &HFF0000) \ &H10000
End Function

Private Function THIRD_IPADDRESS(ByVal x As Long) As Byte
THIRD_IPADDRESS = (x And &HFF00&) \ &H100
End Function

Private Function FOURTH_IPADDRESS(ByVal x As Long) As Byte
FOURTH_IPADDRESS = x And &HFF
End Function

Private Function MAKEIPRANGE(ByVal low As Byte, ByVal high As Byte) As Long
MAKEIPRANGE = high * &H100& Or low
End Function

Private Function MAKEIPADDRESS(ByVal b1 As Byte, ByVal b2 As Byte, ByVal b3 As Byte, ByVal b4 As Byte) As Long
MAKEIPADDRESS = ((b1 And &H7F) * &H1000000 Or (b1 And &H80) <> 0 And &H80000000) Or (b2 * &H10000) Or (b3 * &H100&) Or (b4)
End Function


'''µÃµ½ IP µØÖ·
Public Function GetIPAddress() As String
Dim TempLng As Long
SendMessage IP1, IPM_GETADDRESS, 0, TempLng

GetIPAddress = FIRST_IPADDRESS(TempLng) & "." & SECOND_IPADDRESS(TempLng) & "." & THIRD_IPADDRESS(TempLng) & "." & FOURTH_IPADDRESS(TempLng)
End Function

'''ÉèÖà IP µØÖ·
Public Function SetIPAddress(ByVal v1 As Integer, v2 As Integer, v3 As Integer, v4 As Integer) As Boolean
SendMessage IP1, IPM_SETADDRESS, 0, ByVal MAKEIPADDRESS(v1, v2, v3, v4)
End Function
lxcc 2003-09-17
  • 打赏
  • 举报
回复
找找 然也
xiaobird1 2003-09-17
  • 打赏
  • 举报
回复
效果不是像windows的那样理想啊。很不习惯啊。

是不是还需要做什么设置才可以。指教
yas 2003-09-17
  • 打赏
  • 举报
回复
Maskedbox
guoyx 2003-09-17
  • 打赏
  • 举报
回复
用maskedbox控件,包含在MSMASK32.OCX之中,只要添加组件即可
maskedbox.mask=###.###.###.###
rfq 2003-09-17
  • 打赏
  • 举报
回复
我也很想知道

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧