NotNT.bas
上传用户:hyb6888
上传日期:2016-01-24
资源大小:5186k
文件大小:4k
源码类别:

输入法编程

开发平台:

Visual C++

  1. Attribute VB_Name = "NotNT"
  2. Public Const REG_SZ = 1
  3. Public Const REG_BINARY = 3
  4. Public Const REG_DWORD = 4
  5. Public Const HK_CUR_USER = &H80000001
  6. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  7. Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  8. Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  9. Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  10. Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
  11. Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  12. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  13. Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  14. Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
  15. Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  16. Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
  17. Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
  18. Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
  19. Private Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  20. Private Type RECT
  21.   Left As Long
  22.   Top As Long
  23.   right As Long
  24.   bottom As Long
  25. End Type
  26. Dim MyRec As RECT
  27. Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
  28. Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
  29. Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long
  30. Sub SetText(MyWin As Object, Image As Object, sText As String)
  31. Dim Rgn1 As Long
  32. Dim hRgn As Long
  33. Dim Width As Long
  34. Dim Height As Long
  35. Dim HeightText As Long
  36. Dim widthText As Long
  37.     Width = Image.Width / 15
  38.     Height = Image.Height / 15
  39.     widthText = MyWin.TextWidth(sText)
  40.     HeightText = MyWin.TextHeight(sText)
  41.     MyWin.Height = HeightText + Image.Height
  42.     
  43.     If (Image.Width < widthText) Then
  44.        MyWin.Width = widthText
  45.     Else
  46.        MyWin.Width = Image.Width
  47.     End If
  48.       
  49.     Rgn1 = CreateRectRgn(0, 0, Width, Height)
  50.     BeginPath MyWin.hdc
  51.       tt = TextOut(MyWin.hdc, 0, Height, sText, mylen(sText))
  52.     EndPath MyWin.hdc
  53.     
  54.     hRgn = PathToRegion(MyWin.hdc)
  55.   
  56.     CombineRgn hRgn, Rgn1, hRgn, 2
  57.     SetWindowRgn MyWin.hwnd, hRgn, True
  58.     DeleteObject hRgn
  59.     
  60. End Sub
  61. Sub SaveRegLong(hKey As Long, strPath As String, strValue As String, strData As String)
  62.     Dim ret
  63.     RegCreateKey hKey, strPath, ret
  64.     RegSetValueEx ret, strValue, 0, REG_DWORD, CLng(strData), 4
  65.     RegCloseKey ret
  66. End Sub