[VB.Net]取得電腦基本訊息(含偵測網路是否有通)
'網絡狀況
If My.Computer.Network.Ping("172.18.48.215") Then
Label2.Text = "暢通"
Else
Label2.Text = "不通"
End If
'機器名稱
Label3.Text = Environment.MachineName
'OS名稱
Label5.Text = My.Computer.Info.OSFullName
'Symantec病毒碼日期
Label10.Text = Microsoft.VisualBasic.Left(Microsoft.VisualBasic.Right(My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\SharedDefs", "DEFWATCH_10", Nothing), 12), 8)
'Inter Explorer版本
Label11.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer", "Version", Nothing)
'CPU
Label12.Text = Microsoft.VisualBasic.Trim(My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString", Nothing))
'主板
Label14.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System", "SystemBiosVersion", Nothing).ToString
'鼠標
Label16.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter\5\PointerController\0\PointerPeripheral\0", "Identifier", Nothing)
'顯卡
Label21.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000", "DriverDesc", Nothing)
'登入人員
Label23.Text = Environment.UserName
'Broker是自動分配還是手工分配
Label26.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\OOERP\Broker", "Enabled", Nothing).ToString
'總內存
Label28.Text = Str(My.Computer.Info.TotalPhysicalMemory / 1000000) & "M"
'emax.exe版本
Label29.Text = My.Computer.FileSystem.GetFileInfo("C:\emax\application\emax.exe").LastWriteTime.ToString
'broker server
Label30.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\OOERP\AutoUpdateParams", "IP", Nothing).ToString
'OS ServicePack
Label33.Text = Environment.OSVersion.ServicePack.ToString
'系統時間
Label35.Text = My.Computer.Clock.LocalTime.ToString
'C空間和剩餘空間
Label36.Text = "C:盤總空間:" & Int(My.Computer.FileSystem.GetDriveInfo("C:").TotalSize / 1000 / 1000 / 1000) & "G" & " 可用空間:" & Int(My.Computer.FileSystem.GetDriveInfo("C:").TotalFreeSpace / 1000 / 1000 / 1000) & "G"
Label37.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\OOERP\CodePage", "TRANSFERTABLEPATH", Nothing).ToString
Label38.Text = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\OOERP\Broker", "IP", Nothing).ToString

nineaddnine 發表在 痞客邦 留言(0) 人氣()

2010-08-13_212632
在 codeproject 中,找到一個簡單好用的 FTP Client Library,且提供原始碼,如果需要下載
可到下列網址進行下載。
http://www.codeproject.com/KB/IP/FtpClient.aspx
那就來寫個簡單程式,測試一下這個 Ftp Client,在這邊使用的 IDE 是 Visual Basic 2010

nineaddnine 發表在 痞客邦 留言(0) 人氣()

ShowInTaskbar =false
WindowState =Minimized
Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
Me.Visible = False
End Sub

nineaddnine 發表在 痞客邦 留言(0) 人氣()

大部分的.NET開發者都知道,要做大量的字串相加,StringBuilder比string相加快上N倍。這個效能差異源於String物件的特性,每次"動態相加"時必須捨棄原字串佔用的記憶體空間,重新配置記憶體儲存相加後的新字串內容。只是背後的原理實在曲折,於是我們腦海只會留下"串接字串千萬要用StringBuilder,用string相加會被人笑"的簡化結論。
前些時候協助做Code Review,看到一段SQL查詢程式出現有趣的寫法。

nineaddnine 發表在 痞客邦 留言(0) 人氣()

在舊有的 String 在處理大量文字時,速度會很慢,尤其是在 刪除 取代 做 大量 文字處理時,是一件很費時的工作

StringBuilder 是一個很強大的工具,協助在處理 大量 的文字

隸屬 System.Text

常見用法
Dim StrBuilder As StringBuilder = New StringBuilder

StrBuilder.Append("text") '加入文字
StrBuilder.Append("Start Record time," + Now.ToString("yyyy/MM/dd HH:mm") + vbCrLf) '新增文字 且加入換行
StrBuilder.AppendLine '換行符號
StrBuilder.remove(x,i) '由編號 x 開始移除 i 個
StrBuilder.Insert( x,str,times) '在編號 X 前 插入文字 str , optional times 要重複插入的次數 內定 1次
StrBuilder.replace("str", "Newstr") '將舊有文字 str 改成 Newstr
StrBuilder.tostring
http://www.dotblogs.com.tw/puma/archive/2008/05/31/4188.aspx

nineaddnine 發表在 痞客邦 留言(0) 人氣()

VB進位法是用"四捨六入五成雙"→小數點第一位>=5時,如果整數部分的個位數為奇數則會進位,如果為偶數則不會進位

nineaddnine 發表在 痞客邦 留言(0) 人氣()

 



Chr(0)
Null
Chr(29)
分组符
Chr(38)
&
Chr(48)
0


Chr(8)
退格
Chr(30)
記錄分離符號
Chr(39)

Chr(49)
1


Chr(9)
Tab
Chr(31)
單元分隔符號
Chr(40)
(
Chr(50)
2


Chr(10)
换行
Chr(32)
空格SPACE
Chr(41)
)
Chr(51)
3


Chr(12)
换页
Chr(33)
!
Chr(42)
*
Chr(52)
4


Chr(13)
Enter
Chr(33)
!
Chr(43)
+
Chr(53)
5


Chr(22)
粘贴
Chr(34)

Chr(44)
,
Chr(54)
6


Chr(26)
撤销
Chr(35)
#
Chr(45)
-
Chr(55)
7


Chr(27)
Esc
Chr(36)
$
Chr(46)
.
Chr(56)
8


Chr(28)
文件分隔符
Chr(37)
%
Chr(47)
/
Chr(57)
9


 
 
 
 
 
 
 
 


Chr(58)
:
Chr(68)
D
Chr(78)
N
Chr(88)
X


Chr(59)
;
Chr(69)
E
Chr(79)
O
Chr(89)
Y


Chr(60)
<
Chr(70)
F
Chr(80)
P
Chr(90)
Z


Chr(61)
=
Chr(71)
G
Chr(81)
Q
Chr(91)
[


Chr(62)
>
Chr(72)
H
Chr(82)
R
Chr(92)
\


Chr(63)
?
Chr(73)
I
Chr(83)
S
Chr(93)
]


Chr(64)
@
Chr(74)
J
Chr(84)
T
Chr(94)
^


Chr(65)
A
Chr(75)
K
Chr(85)
U
Chr(95)
_


Chr(66)
B
Chr(76)
L
Chr(86)
V
Chr(96)
`


Chr(67)
C
Chr(77)
M
Chr(87)
W
Chr(97)
a


 
 
 
 
 
 
 
 


Chr(98)
b
Chr(108)
l
Chr(118)
v
Chr(128)



Chr(99)
c
Chr(109)
m
Chr(119)
w
 
 


Chr(100)
d
Chr(110)
n
Chr(120)
x
 
 


Chr(101)
e
Chr(111)
o
Chr(121)
y
 
 


Chr(102)
f
Chr(112)
p
Chr(122)
z
 
 


Chr(103)
g
Chr(113)
q
Chr(123)
{
 
 


Chr(104)
h
Chr(114)
r
Chr(124)
|
 
 


Chr(105)
i
Chr(115)
s
Chr(125)
}
 
 


Chr(106)
j
Chr(116)
t
Chr(126)
~
 
 


Chr(107)
k
Chr(117)
u
Chr(127)
删除
 


nineaddnine 發表在 痞客邦 留言(0) 人氣()

vb.net限制輸入數字並只到小數點後2位
 












01 Private Sub txtRatio_KeyPress(ByVal sender As ObjectByVal AsSystem.Windows.Forms.KeyPressEventArgs) Handles txtRatio.KeyPress










02  










03         '輸入為數字,小數點或backspace










04         If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Ore.KeyChar = Chr(8) Then 'Backspace:










05             '輸入的小數點為唯一










06             If e.KeyChar = "." And InStr(CType(sender, System.Windows.Forms.TextBox).Text, ".") > 0 Then










07                 e.Handled = True










08             Else










09                 '小數最多2位










10                 If e.KeyChar <> Chr(8) And InStr(CType(sender, System.Windows.Forms.TextBox).Text, ".") > 0 Then










11                     Dim sAry() As String CType(sender, System.Windows.Forms.TextBox).Text.Split(".")










12                     If sAry(1).Length >= 2 Then










13                         e.Handled = True










14                     Else










15                         e.Handled = False










16                     End If










17                 Else










18                     e.Handled = False










19                 End If










20             End If










21  










22             '輸入的負號是否在第一位










23         ElseIf e.KeyChar = "-" And CType(sender, System.Windows.Forms.TextBox).Text = "" Then










24             e.Handled = False










25         Else










26             e.Handled = True










27         End If










28  










29     End Sub

 


 


 


 


http://iden1109.blogspot.tw/2010/10/vbnet2.html





nineaddnine 發表在 痞客邦 留言(0) 人氣()

在BCB裡有提供 StringReplace 這函數來做字串替換

例如:
AnsiString str = "aaa AAA ccc aaa";
str = StringReplace(str, "aaa""bbb", TReplaceFlags());
//結果為:"bbb AAA ccc aaa"
其中第四個參數功能如下:
rfReplaceAll 替換全部
rfIgnoreCase 忽略大小寫

str = StringReplace(str, "aaa""bbb", TReplaceFlags()<<rfReplaceAll);
//結果為:"bbb AAA ccc bbb"
str = StringReplace(str, "aaa""bbb", TReplaceFlags()<<rfReplaceAll<<rfIgnoreCase);
//結果為:"bbb bbb ccc bbb"

nineaddnine 發表在 痞客邦 留言(0) 人氣()

以下都是這幾個月的個人感想,可能會跟你我他的感覺有出入,但是我只是述說個人感知事實。(幾乎已確定掰掰的才會寫出來分享...)
 
 

nineaddnine 發表在 痞客邦 留言(0) 人氣()




SendMessage函數的常用消息及其應用
  文本框控件通常用於輸入和編輯文字。它屬於標准 Windows 編輯控件的一個子類,所以它支持所有
編輯控件消息。這兒講述的技術也適用於由其他廠商設計的,以Windows編輯控件類為基礎的其他控件。
  函數原型:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  其中四個參數的含義和說明如下:
1.hWnd:
  對象的句柄。希望將消息傳送給哪個對象,就把該對象的句柄作為實參傳送,在 VB 中可以簡單地
用「對象.hWnd」獲得某個對象的句柄,如 Text1.hWnd和 Form1.hWnd分別可以得到 Text1和Form1的句
柄。它是一個長整型數。Windows給每個控件一個編號,這個編號就稱為窗口句柄。有了這個句柄,我們
就可告訴 Windows 我們要控制哪個控件,所以這個句柄在 API 調用中至關重要。VB 的大多數控件都包
括hwnd屬性,如下拉框、TreeView等,窗體也有這個屬性。但也有一些控件沒有這個屬性,如標簽控件。
沒有這個屬性就無法利用Windows API函數,但可以節省系統資源。
 
2.wMsg:
  被發送的消息。根據具體需求和不同的對象,將不同的消息作為實參傳送,以產生預期的動作。使
SendMessage 傳遞消息,大多是為了完成以下幾個工作: 
  ①設置控件的一些選項,象我們要使用的CB_SETDROPPEDWIDTH的就屬於這種情況。盡管VB的每個控
件都提供了許多屬性,但仍然有許多控件的選項沒有包括在其中。而這些選項中的大多數都可以利用該
函數進行設置。
  ②獲得控件的一些設置。同上一種情況相反,有時我們需要獲得控件的一些設置,相當於讀取屬性。
例如,如果想知道一個下拉框的下拉部分的寬度是多少,就可以向控件發送CB_GETDROPPEDWIDTH消息。
對於這種情況,SendMessage函數的返回值就是結果。 
  ③執行一定的操作。例如,我們要在下拉框中尋找是否有「ABC」這個字符串,當然,我們可以編寫
一個循環,逐條比較看是否存在這樣的字符串。如果使用API,我們只需要向下拉框發送CB_FINDSTRING
消息,這條消息就會自動進行查找工作並返回結果。 
  ④模擬用戶操作。我們有時希望模擬用戶的操作,比如關閉其他應用程序的窗口。其實只要我們能知
道那個窗口的句柄,我們就可以發送WM_CLOSE消息給那個窗口,窗口接受到這條消息就會關閉,如同用戶
關閉窗口一樣。 
3.wParam、4.lParam:
  附加的消息信息。這兩個是可選的參數,用來提供關於wMsg消息更多的信息,不同的wMsg可能使用這
兩個參數中的0、1或2個,如果不需要哪個附加參數,則將實參賦為NULL(在VB中賦為0)。
  lParam定義為Any類型。指定 Any類型可禁止VB進行類型檢查,從而允許將任意數據類型傳遞給該過
程。由於每條消息對參數的類型和傳遞方式的要求都不同:有的可能要求為Long型,有的可能要求為自定
義類型;大多數要求按傳值方式傳遞,但也有一些要求按傳地址方式。為了滿足各種要求,我們將這個參
數定義為Any類型。比如,我們要傳遞一個Long型變量lData。如果消息要求傳地址方式傳遞,可以使用: 
  SendMessage ……, lData 
  而如果要求傳值方式傳遞,則使用 
  SendMessage ……, ByVal lData 
  如果傳遞常數,我們則需要使用類型後綴來指定常數的類型,比如"0&",表示Long型的常數0,如 
  SendMessage ……, ByVal 0& 
  我們也可以使用類型轉換函數CLng將常數指定為Long型,如CLng(0)。
  程序中,有時定義 lParam As Any,有時定義 ByVal lParam As String。這是為什麼呢?對於
SendMessage函數,lParam的使用是很靈活的,在一般情況下,lParam是一個指針,它指向的數據類型
有三種:長整形、自定義數據結構類型、字符串類型。對於前兩種類型,需要將 lParam定義為 lParam
As Any,從而將 lParam 數據的指針傳遞到 SendMessage 函數。對於字符串類型,則需要定義 Byval
lParam As String,因為字符串類型數據不同,只有定義 ByVal,得到的才是字符串的指針,如果沒有
ByVal,得到的將是指向字符串指針的指針。另外對於少數的消息來說,SendMessage 函數需要的只是
lParam 本身的值,這時就需要將 lParam定義為 Byval lParam As Long,或者在程序調用時在 lParam
之前加 ByVal。
  當用戶在編輯控件上進行各種操作時,其父窗口將收到 WM_COMMAND 通知消息,lParam帶控件句柄
(hWnd),同時 wParam 的低16位帶控件的 ID,高16位帶有如下表的消息代碼:
常用編輯控件消息:
EC_LEFTMARGIN(&H1)                    EC_USEFONTINF 設置左邊距時使用
EC_RIGHTMARGIN                        EC_USEFONTINF 設置右邊距時使用
EC_USEFONTINF,O,邊距                  設置編輯控件的左、右邊距,當wParam含EC_LEFTMARGIN時在lParam的低16位指定左邊距點數,當wParam含EC_RIGHTMARGIN時在lParam的高16位指定右邊距點數。當指定wParam為EC_USEFONTINFO時,則用當前字體的字符"A"的寬度指定右邊距和字符"C"的寬度指定左邊距lParam被忽略。
EM_CHARFROMPOS(&HD7=215),0,           取得編輯控件中指定位置的字符相對於文本頭部的偏移量。使用本操作應先在第4個參數的高16位指定行號,低16位指定列號(或一個POINTAPI結構),行列是按編輯控件的客戶區左上角為原點(0,0)計算的。如果指定的位置超出控件客戶區則返回-1
EM_CANUNDO(&HC6=198),0,0             決定前一次編輯操作是否能夠撤消:檢測控件撤消緩沖區是否為空,通常控件把最後一次在控件的編輯操作保存在一個撤消緩沖區,如果緩沖區非空則返回TRUE表示上次操作可以撤消,否則返回FALSE,應用程序可以利用該返回值來禁止或允許菜單或工具條的"撤消"項。
EM_EMPTYUNDOBUFFER(&HCD=205 ),0,0     清除控件的撤消緩沖區,使其不能撤消前一次編輯操作 
EM_FMTLINES(&HC8=200)                決定是否在取回的文本宇串中包含軟回車字符
EM_GETFIRSTVISIBLEINE(&HCE=206),0,0   獲得文本控件中處於可見位置的最頂部的文本所在的行號
EM_GETLINE(&HC4=196 ),行號,ByVal 變量 獲取編輯控件某一行的內容,變量須預先賦空格
EM_GETLINECOUNT(&HBA=186,0,0          獲取編輯控件的總行數
EM_GETMODIFY(&HB8=184),0,0           判斷編輯控件的內容是否已發生變化,返回TRUE則控件文本已被修改,返回FALSE則未變。 
EM_GETPASSWORDCHAR( ),0,0            獲取編輯控件的密碼字符,返回NULL表示沒有字符
EM_GETRECT(&HB2=178),0,結構          獲取編輯控件的格式化矩形
EM_GETTHUMB(&HBE=190),0,0             取得多行文本編輯控件的滾動框的當前位置(注意:是象素值)
EM_GETSEL(&HB0=176),0,變量            獲取光標位置(以字節數表示),或:(緩沖區起點,緩沖區終點)取得編輯控件中選定內容的范圍,返回值中低16位為起點,高16位為終點
EM_GETHANDLE(&HBD=189),0,0            取得文本緩沖區
EM_GETWORDBREAKPROC(&HD1=209),0,0     取得整字換行回調函數EditWordBreakProc指針
EM_GETLIMITTEXT(WM_USER+37=1061),0,0  獲取一個編輯控件中文本的最大長度 
EM_GETMARGINS( ),0,0                  獲取編輯控件的左、右邊距,返回值低16位為左邊距,高16位為右邊距(不得用於NT3.51) 
EM_LIMITTEXT(&HC5=197),最大值,0       設置編輯控件中的文本長度
EM_SCROLLCARET(&HB7=183),0,0          把可見范圍移至光標處
EM_LINEFROMCHAR(&HC9=201),偏移值,0    獲取指定位置(或:-1,0 表示光標位置)所在的行號
EM_LINEINDEX(&HBB=187),行號,0         獲取指定行(或:-1,0 表示光標所在行)首字符在文本中的位置(以字節數表示)
EM_LINELENGTH(&hC1=193),偏移值,0      獲取指定位置所在行(或:-1,0 表示光標所在行)的文本長度(以字節數表示)
EM_POSFROMCHARPOINT,結構地址,偏移值   取得指定字符位置的行列號,偏移值是字符相對於文本頭部的偏移。
EM_LINESCROLL(&HB6=182),列數,行數     指定行數的文本水平滾動,每次滾動N列
EM_EXGETSEL(&H434=1076)   
EM_EXSETSEL(&H437=1079),0,結構        RichEdit控件設置文本選定范圍,參閱 EM_SETSEL 消息,結構是指 CHARRANGE 結構
EM_PASTESPECIAL(&H440=1088),2(1),1    RichEdit控件粘貼剪貼板中的位圖(或文本)
EM_FINDTEXT(&H738=1080)               RichEdit控件正文搜索操作
EM_FINDTEXTEX(&H44F=1103)             同上
EM_SETTEXTEX(&H461=1121)              RichEdit控件正文替換/插入操作
EM_SETTARGETDEVICE, GetDC(RichText.hWnd), RichText.Width / 15)設置 RichTextBox 自動換行,後續代碼是:RichText.RightMargin = iif(RichText.RightMargin = 0,1,0)
EM_SETTARGETDEVICE, 0, 1              設置 RichTextBox 不自動換行
EM_POSFROMCHAR(&HD6或&H426)           判斷指定字符在編輯控件的位置(用於NT3.51) 
EM_SCROLL(&HB5=181),*,0               文本垂直滾動。第三個參數*控制滾動方向:SB_LINEDOWN(1)向下滾動一行,SB_LINEUP(0)向上滾動一行,SB_PAGEDOWN(3)向下滾動一頁,SB_PAGEUP(2)向上滾動一頁。
EM_REPLACESEL(&HC2=194),1(0),字符串   用指定字符串替換編輯控件中的當前選定內容,如果第三個參數wParam為1,則本次操作允許撤消,0禁止撤消。字符串可用傳值方式,也可用傳址方式(例:SendMessage Text1.hwnd, EM_REPLACESEL, 0, Text2.Text '這是傳值方式)
EM_SETSEL(&HB1=177),起點,終點        設置編輯控件中文本選定內容范圍(或設置光標位置),該范圍被反相顯示,用於為復制、替換、粘貼、剪切、刪除等編輯功能指定范圍,光標將被移至指定的終點後面。還可使用指定相同起點和終點來移動光標而不是選定范圍。當指定的起點等於0和終點等於-1時,文本全部被選中,此法常用在清空編輯控件。當指定的起點等於-2和終點等於-1時,全文均不選,光標移至文本未端,此法常用在文本未端追加內容。注意:當控件沒有輸入焦點時,本操作將會失敗,一般在執行本操作前都應調用SetFocus先取得輸入焦點。
EM_UNDO(&HC7=199),0,0                 撤消前一次編輯操作,當重復發送本消息,控件將在撤消和恢復中來回切換
EM_SETCHARFORMAT(&H444)               改變選定文本的顏色
EM_SETHANDLE(&HBC=188),緩沖區指針,0  為編輯控件指定新的文本緩沖區。此操作僅適用對話框創建帶DS_LOCALEDIT風格的控件。
EM_SETLIMITTEXT,長度(字節),0          設置編輯控件中的文本最大長度(不得用於NT3.51)
EM_SETMARGINS(&HD3=211)               設置編輯控件的左、右邊距(不得用於NT3.51)
EM_SETMODIFY(&HB9=185),1(0),0         設置或清除一個編輯控件的修改標志
EM_SETPASSWORDCHAR(&HCC=204),字符,0   指定控件用來顯示密碼的字符,缺省為"*"。當第三個參數wParam為0時,本操作將清除控件的ES_PASSWORD風格,並按實際字符顯示。
EM_SETREADONLY(&HCF=207),1(0),0       決定是否將編輯控件設為只讀,同時決定控件的ES_READONLY風格
EM_SETRECT(&HB3=179),0(或RECT),結構地址      為一個編輯控件設置格式化矩形
EM_SETRECTNP(&HB4=180),0(或RECT),結構地址    為一個編輯控件設置格式化矩形,只是控件此時不會重畫
EN_CHANGE(&H300=768)                  編輯控件的內容發生改變。與EN_UPDATE不同,該消息是在編輯框顯示的正文被刷新後才發出的。 
EN_ERRSPACE(&H500=1280)               任何時候只要由於內存不足以完成一項編輯操作 
EN_HSCROLL(&H601=1537)                用戶單擊了編輯控件的水平滾動條。注意:這條消息是在控件更新顯示之前發送出去的。
EN_VSCROLL(&H602=1538)                用戶單擊了編輯控件的垂直滾動條。注意:這條消息是在控件更新顯示之前發送出去的。
EN_KILLFOCUS(&H200=512)               編輯控件失去了輸入焦點
EN_SETFOCUS(&H100=256)                編輯控件獲得了輸入焦點
EN_UPDATE(&H400=1024)                 控件准備顯示改變了的正文時發送該消息。它與EN_CHANGE通知消息相似,只是它發生於更新文本顯示出來之前。 
EN_MAXTEXT(&H501=1281)                用戶輸人的文字數超出由EM_LIMITTEXT消息規定的界限,或超出由VB Maxlength屬性規定的界限,就會發送這條消息 。此外,倘若不允許自動進行水平滾動,同時插入點要超出控件的寬度;或者不允許自動垂直滾動,同時插入點要超出控件的高度,那麼也會觸發這條消息。在沒有ES_AUTOHSCROLL或ES_AUTOVSCROLL的編輯框中,當正文超出了編輯框的邊框時也會發出該消息。 
編輯風格消息:
ES_MULTILINE                         指定編輯控件能否進行多行文本編輯,若多行編輯器不指定ES_AUTOHSCROLL風格,則會自動換行,用戶每按一次Enter,在當前光標處輸入一個回車換行符(0Dh,0Ah),文本增加一行。若不指定ES_AUTOVSCROLL,則多行編輯器會在窗口中正文裝滿時發出警告聲響。
ES_LEFT                               文本顯示居左。
ES_CENTER                            文本顯示居中。
ES_RIGHT                             文本顯示居右。
ES_LOWERCASE                         把用戶輸入的字母統統轉換成小寫字母。
ES_UPPERCASE                         把用戶輸入的字母統統轉換成大寫字母。
ES_OEMCONVERT                        把輸入的文本從ANSI碼轉換成OEM碼,然後又轉換成ANSI碼,目的是保證函數AnsiToOem的正確調用。這在編輯框中包含文件名時是很有用的。
ES_AUTOHSCROLL(自動增加水平滾動條?) 當用戶在行尾鍵入一個字符時,正文將自動向右滾動10個字符,當用戶按回車鍵時,正文總是滾向左邊。
ES_AUTOVSCROLL                       當用戶在最後一個可見行按回車鍵時,正文向上滾動一頁。
ES_NUMBER                            只接收數碼輸入,其它字符輸入一律無效。
ES_NOHIDESEL(&H100=256)               當編輯框失去輸入焦點時,選中的文本將隱藏,正文中的選擇保持不變。缺省時正文中的選擇將失效,當獲得輸入焦點後才又顯示出來。
ES_READONLY                          將編輯框設置成只讀的。
ES_PASSWORD(&H20=32)                  使所有鍵入的字符都用"*"來顯示。
ES_WANTRETURN                        使多行編輯器接收回車鍵輸入並換行。如果不指定該風格,按回車鍵會選擇缺省的命令按鈕,這往往會導致對話框的關閉。
列表框操作:
LB_FINDSTRING(&H18F=399),-1,ByVal 字串   查找列表項的字符串,返回值=字符串所在的列表項的索引。-1表示從第0行開始查找,如果改為一個有效的列表項索引值,將從該行開始查找。
LB_ITEMFROMPOINT(&H1A9=425)              獲取光標所在的列表項的索引
LB_SETHORIZONTALEXTENT(&H194=404),長度,0 設置列表框的橫向滾動條以及滾動長度,長度為象素值
組合框操作:
CB_SHOWDROPDOWN(&H14F),1(0),0         打開(關閉)組合框的列表
TVM_SETBKCOLOR(&H1100+29=4381)        設置擴展樹型列表控件的背景色(TVM開頭的常數)
常用窗口消息:
WM_GETFONT(&H31=49)                   得到當前控件繪制文本的字體(的句柄)
WM_GETTEXT(&HD=13),變量長度,變量       取得窗體的標題,變量須預先賦空字串(chr(0)),變量長度=Len(變量)
WM_SETTEXT(&HC=12),0,ByVal "字串"     設置窗體的標題
WM_NCLBUTTONDOWN(&HA1=161),2,0        在非客戶區,即邊框及標題欄上(假如定義的是一個組件,則非客戶區包括Form等)按下鼠標左鍵;
WM_LBUTTONDOWN(&H201=513),2,0         在客戶區,也就是除邊框及標題欄以外按下鼠標左鍵
WM_VSCROLL(&H115=277),&H10000*p+SB_THUMBPOSITION(&H4),0 同步滾動文本,p是位置改變量
WM_PAINT
WM_USER(&H400=1024)
WM_CUT(&H300=768),0,0                 剪切
WM_COPY(&H301=769)),0,0               復制
WM_PASTE(&H302=770)),0,0              粘貼
WM_CLEAR(&H303=771)),0,0              刪除
WM_UNDO(&H304=772)),0,0               撤消
按紐消息:
BM_SETSTYLE(&HF4)                   設置按紐樣式
BS_RADIOBUTTON(&H4)                 收音機旋紐式的按紐,是 BM_SETSTYLE 使用的參數



nineaddnine 發表在 痞客邦 留言(0) 人氣()

首先 我們了解一下Windows的消息機制。Windows是一個消息驅動式系統,Windows消息提供應用程序與應用程序之間,應用程序與Windows系統之間進行通信的手段。
舉個例子,打開記事本程序,該程序有一個 「文件「菜單。 那麼,在運行該程序的時候,如果用戶單擊「文件菜單「裡的「新建「命令, 這個動作將被Windows所捕捉,Windows經過分析得知這個動作應該由我們打開的記事本程序所來處理,然後Windows就發送個消息 譬如我們編程的時候有時用到的 WM_COMMAND的消息給記事本,然後記事本就把這個消息處理掉。 這個過程就是消息處理。

SendMessage函數功能:該函數將指定的消息發送到一個或多個窗口。此函數為指定的窗口調用窗口程序,直到窗口程序處理完消息再返回。而函數PostMessage不同,將一個消息寄送到一個線程的消息隊列後立即返回。

nineaddnine 發表在 痞客邦 留言(0) 人氣()

1 2 3
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。