ÄúÏÖÔÚµÄλÖÃÊÇ£º Èí¼þ > ¿ª·¢ÕßÍøÂç > ÕýÎÄ
¡¤ËٳɵçÄÔ¾«Ó¢£¨°ü·ÖÅ䣩°×Áì¸ßнһ×å´ÓÕâÀ↑ʼ



-JavaÌ×½Ó×Ö±à³Ì£¨Ï£©
-MediaStudio Pro 6.5½Ì³Ì
-Èý¿îÐ¶ÔØÈí¼þ×îÐÂÊÔÓÃ
-»ùÓÚVisual C++µÄWinsock APIÑо¿

Îı¾¿ò¿Ø¼þµÄÏûÏ¢¼°Ó¦ÓÃ
2000-10-12¡¤ ¡¤Çë×÷ÕߺÍÎÒÃÇÁªÏµ¡¤¡¤VB°®ºÃÕß

¡¡¡Îı¾(»òÎÄ×Ö)¿Ø¼þÊÇ¡°Îı¾¿ò¿Ø¼þ¡±µÄ¼ò³Æ,Ëüͨ³£ÓÃÓÚÊäÈëºÍ±à¼­ÎÄ×Ö¡£ËüÊôÓÚ±ê×¼Windows±à¼­¿Ø¼þµÄÒ»¸ö×ÓÀà,ËùÒÔËüÖ§³ÖËùÓб༭¿Ø¼þÏûÏ¢¡£Õâ¶ù½²ÊöµÄ¼¼ÊõÒ²ÊÊÓÃÓÚÓÉÆäËû³§ÉÌÉè¼ÆµÄ,ÒÔWindows±à¼­¿Ø¼þÀàΪ»ù´¡µÄÆäËû¿Ø¼þ¡£
¡¡¡¡±¾ÎĽ«½éÉÜÎı¾¿Ø¼þµÄÏûÏ¢,ÕâЩÏûÏ¢ÏÔÖøÀ©Õ¹Á˿ؼþ±¾ÉíµÄÄÜÁ¦,ʹÎÒÃÇÔÚ³ÌÐòÖÐÄܹ»¸üÁé»îµÄ¿ØÖƿؼþ,²»±ØÖ»½ö½öÒÀÀµÓÚVisual BasicËùÌṩµÄÊôÐÔ»òʼþ,ÕâЩÏûÏ¢ÔÚ½øÐÐ×ÓÀà´¦ÀíÖкÜÓÐÓô¦¡£ÏÂÃæÏȽéÉܿؼþµÄÏûÏ¢,È»ºó½éÉÜËüÃǵÄһЩӦÓá£


ϱíÁгöÁËÎı¾¿Ø¼þµÄ³£ÓÃ֪ͨÏûÏ¢:

ÏûÏ¢Ãû³Æ ÏûϢ˵Ã÷
EN_CHANGE ±à¼­¿Ø¼þµÄÄÚÈÝÒ»µ©·¢Éú¸Ä±ä£¬¾Í·¢ËÍÕâÌõÏûÏ¢¡£
EN_ERRSPACE ÈκÎʱºòÖ»ÒªÓÉÓÚÄÚ´æ²»×ãÒÔÍê³ÉÒ»Ïî±à¼­²Ù×÷£¬¾Í·¢ËÍÕâÌõÏûÏ¢¡£
EN_HSCROLL Ö»ÒªÓû§µ¥»÷ÁË´ÓÊôÓÚÒ»¸ö±à¼­¿Ø¼þµÄˮƽ¹ö¶¯ÌõµÄÈκεط½£¬¾Í»á·¢ËÍÕâÌõÏûÏ¢¡£×¢ÒâÕâÌõÏûÏ¢ÊÇÔڿؼþ¸üÐÂÏÔʾ֮ǰ·¢ËͳöÈ¥µÄ¡£
EN_KILLFOCUS Ò»µ©¿Ø¼þ¶ªÊ§ÁËÊäÈë½¹µã£¬Ôò·¢³öÕâÌõÏûÏ¢¡£
EN_MAXTEXT Ö»ÒªÓû§ÊäÈ˵ÄÎÄ×ÖÊÔͼ³¬³öÓÉEM_LIMITTEXTÏûÏ¢¹æ¶¨¹º½çÏÞ£¬»òÊÔͼ³¬³öÓÉVB MaxlengthÊôÐԹ涨µÄ½çÏÞ£¬¾Í»á·¢ËÍÕâÌõÏûÏ¢¡£´ËÍ⣬ÌÈÈô²»ÔÊÐí×Ô¶¯½øÐÐˮƽ¹ö¶¯£¬Í¬Ê±²åÈëµãÒª³¬³ö¿Ø¼þµÄ¿í¶È£»»òÕß²»ÔÊÐí×Ô¶¯×Ô¶¯¹ö¶¯£¬Í¬Ê±²åÈëµãÒª³¬³ö½Ó¼þµÄ¸ß¶È£¬ÄÇôҲ»á´¥·¢ÕâÌõÏûÏ¢¡£
EN_SETFOCUS Ò»µ©¿Ø¼þ½ÓÊÕµ½ÁËÊäÈë½¹µã£¬¾Í·¢³öÕâÌõÏûÏ¢¡£
EN_UPDATE EN_VSCROLL Ö»ÒªÓû§µ¥»÷ÁË´ÓÊôÓÚÒ»¸ö±à¼­¿Ø¼þµÄ´¹Ö±¹ö¶¯ÌõµÄÈκεط½£¬¾Í»á·¢ËÍÕâÌõÏûÏ¢¡£×¢ÒâÕâÌõÏûÏ¢ÊÇÔڿؼþ¸üÐÂÏÔʾ֮ǰ·¢ËͳöÈ¥µÄ¡£

ϱíÁгöÁËÎı¾¿Ø¼þµÄ³£ÓÃÏûÏ¢:
ÏûÏ¢Ãû³Æ ÏûϢ˵Ã÷
EM_CANUNDO ¾ö¶¨Ç°Ò»´Î±à¼­²Ù×÷ÊÇ·ñÄܹ»³·Ïû
EM_EMPTYUNDOBUFFER Çå³ý¿Ø¼þµÄ³·Ïû»º³åÇø£¬Ê¹Æä²»¿ÉÄܳ·Ïûǰһ´Î±à¼­²Ù×÷
EM_UNDO ³·Ïûǰһ´Î±à¼­²Ù×÷
EM_FMTLINES ¾ö¶¨ÊÇ·ñÔÚÈ¡»ØµÄÎı¾Óî´®Öаüº¬Èí»Ø³µ×Ö·û
EM_GETLIMITTEXT »ñȡһ¸ö±à¼­¿Ø¼þÖÐÎı¾µÄ×î´ó³¤¶È
EM_GETMARGINS »ñÈ¡±à¼­¿Ø¼þµÄ×ó¡¢Óұ߾à(²»µÃÓÃÓÚNT3£®51)
EM_GETRECT »ñȡһ¸ö±à¼­¿Ø¼þµÄ¸ñʽ»¯¾ØÐÎ
EM_LIMITTEXT ÏÞÖÆ±à¼­Ò«¼þ¼×¹ºÎı¾³¤¶È
EM_SETLIMITTEXT ÏÞÖÆ±à¼­¿Ø¼þÖеÄÎı¾³¤¶È(²»µÃÓÃÓÚNT3£®51)
EM_SETMARGINS ÉèÖñ༭¿Ø¼þµÄ×ó¡¢Óұ߾à(²»µÃÓÃÓÚNT3£®51)
EM_SETRECT Ϊһ¸ö±à¼­¿Ø¼þÉèÖøñʽ»¯¾ØÐÎ
EM_SETRECTNP ÓëEM_SETRECTÀàËÆ£¬Ö»Êǿؼþ´Ëʱ²»»áÖØ»­
EM_SETTABSTOPS ÉèÖñ༭¿Ø¼þÖеÄÖÆ±íÕ¾¼ä¾à
EM_CHARFROMPOS Åжϱ༭¿Ø¼þÖ¸¶¨Î»Öô¦µÄ×Ö·û(²»ÊÊÓÃÓÚNT3£®51)
EM_GETFIRSTVISIBLEIN Åжϱ༭¿Ø¼þÖÐÏÔʾµÄµÚÒ»ÐÐ
EM_GETLINE ´Ó±à¼­¿Ø¼þÈ¡»Ø¡­ÐеÄÄÚÈÝ
EM_GETLINECOUNT ÅжÏÒ»¸ö±à¼­¿Ø¼þµÄ×ÜÐÐÊý
EM_GETMODIFY Åжϱ༭¿Ø¼þµÄÄÚÈÝÊÇ·ñÒÑ·¢Éú±ä»¯
EM_GETPASSWORDCHAR È¡µÃ±à¼­¿Ø¼þµÄÃÜÂë×Ö·û
EM_GETSEL Åжϱ༭¿Ø¼þÖÐÒ»¶ÎÑ¡¶¨ÄÚÈÝµÄÆðµãÓëÖÕµã
EM_LINEFROMCHAR ÅжÏÊÇÄÄÒ»ÐÐÏÔʾÁËij¸öÌØÊâ×Ö·û
EM_LINEINDEX ÅжÏÖ¸¶¨ÐеÚÒ»¸ö×Ö·ûµÄ±àºÅ
EM_LINELENGTH ÅжÏÒ»Ð㤶È
EM_LINESCROLL ¹ö¶¯±à¼­¿Ø¼þ
EM_POSFROMCHAR ÅжÏÖ¸¶¨×Ö·ûÔڱ༭¿Ø¼þµÄλÖÃ(ÓÃÓÚNT3£®51)
EM_REPLACESEL ÓÃÖ¸¶¨Îı¾Ìæ»»±à¼­¿Ø¼þÖеĵ±Ç°Ñ¡¶¨ÄÚÈÝ
EM_SETMODIFY ÓÃÓÚÉèÖûòÇå³ýÒ»¸ö±à¼­¿Ø¼þµÄÐ޸ıêÖ¾
EM_SETPASSWORDCHAR Ϊָ¶¨µÄ¿Ø¼þÉèÖÃÃÜÂë×Ö·û
EM_READONLY ¾ö¶¨ÊÇ·ñ½«±à¼­¿Ø¼þÉèΪֻ¶Á
EM_SETSEL ÉèÖñ༭¿Ø¼þÖÐÒ»¶ÎÑ¡¶¨ÄÚÈÝµÄÆðµãÒ»ÖÕµã

ÏÂÃæ½«½éÉÜÎı¾¿ò¿Ø¼þÏûÏ¢µÄһЩӦÓÃ:


ÏÂÃæµÄº¯Êý½«·µ»Ø¿Ø¼þµÄÎı¾ÐÐÊý,Èç¹û¿Ø¼þµÄÎı¾Îª¿ÕÒ²»á·µ»Ø1¡£
Function GetLineCount(CTextBox As TextBox) As Long
¡¡¡¡GetLineCount = SendMessage(CTextBox.hWnd, EM_GETLINECOUNT, 0, 0)
End Function


ÏÂÃæµÄº¯Êý½«·µ»Ø¿Ø¼þÖÐÏÔʾµÄµÚÒ»ÐеÄÐкš£
Function GetFirstVisableLine(CTextBox As TextBox) As Long
¡¡¡¡GetFirstVisableLine = SendMessageBynum(CTextBox.hwnd, EM_GETFIRSTVISIBLELINE, 0, 0)
End Function


ÏÂÃæµÄº¯Êý½«·µ»Ø¿Ø¼þÄÜÏÔʾµÄÐÐÊý¡£
Function GetVisibleLines(CTextBox As TextBox) As Long
Dim rc As RECT
Dim hDC&, lfont&, oldfont&
Dim di&, lc&
Dim tm As TEXTMETRIC
¡¡lc = SendMessage(CTextBox.hwnd, EM_GETRECT, 0, rc)
¡¡lfont = SendMessage(CTextBox.hwnd, WM_GETFONT, 0, 0)
¡¡hDC = GetDC(CTextBox.hwnd)
¡¡If lfont $#@60;$#@62; 0 Then oldfont = SelectObject(hDC, lfont)
¡¡¡¡di = GetTextMetrics(hDC, tm)
¡¡If lfont $#@60;$#@62; 0 Then lfont = SelectObject(hDC, oldfont)
¡¡¡¡GetVisibleLines = (rc.bottom - rc.top) / tm.tmHeight
¡¡¡¡di = ReleaseDC(CTextBox.hwnd, hDC)
End Function
¡¡¡¡ÏÂÃæµÄº¯ÊýÄܹ»¹ö¶¯¿Ø¼þ,²»¹ýÔÚ¹ö¶¯Ö®Ç°×îºÃÅжϿؼþµÄÎı¾ÐÐÊýºÍÄܹ»ÏÔʾµÄÐÐÊý,ÒÔÃâ¹ö¶¯Ê±·¢Éú»ìÂÒ¡£º¯ÊýSendMessageBynumÊÇÒ»¸öSendMessageº¯ÊýµÄ°²È«ÉùÃ÷º¯Êý,Æä¶¨ÒåÓëSendMessageº¯ÊýÍêÈ«Ïàͬ,Ö»ÊǺ¯ÊýÃû²»Í¬¡£
Function ScrollTextBox(CTextBox As TextBox, nVal As Long, _
Optional nVertical As Boolean = True) As Long
¡¡If nVertical Then
¡¡¡¡ScrollTextBox = SendMessageBynum(CTextBox.hwnd, EM_LINESCROLL, 0, nVal)
¡¡Else
¡¡¡¡ScrollTextBox = SendMessageBynum(CTextBox.hwnd, EM_LINESCROLL, nVal, 0)
¡¡End If
End Function
ÏÂÃæµÄº¯ÊýÄܹ»·µ»Ø¿Ø¼þÖ¸¶¨ÐеÄÎı¾¡£SendMessageBystringÓëSendMessageBynumÀàËÆ¡£
Function GetLineText(CTextBox As TextBox, LineIndex As Long) As String
¡¡Dim lc&, linechar&
¡¡linechar = SendMessageBynum(CTextBox.hwnd, EM_LINEINDEX, LineIndex, 0)
¡¡lc = SendMessageBynum(CTextBox.hwnd, EM_LINELENGTH, linechar, 0) + 1
¡¡GetLineText = String$(lc + 2, 0)
¡¡Mid$(GetLineText, 1, 1) = Chr(lc And &HFF)
¡¡Mid$(GetLineText, 2, 1) = Chr(lc \ &H100)
¡¡lc = SendMessageBystring(CTextBox.hwnd, EM_GETLINE, LineIndex, GetLineText)
¡¡GetLineText = left(GetLineText, lc)
End Function
ÏÂÃæµÄº¯Êý¿ÉÒÔÉèÖÿؼþµÄ×ó±ß¾à¡£
Public Const EM_SETMARGINS& = &HD3
Public Const EC_LEFTMARGIN& = &H1
Function SetMargins(CTextBox As TextBox, nVal As Long) As Long
¡¡SetMargins = SendMessageBynum(CTextBox.hwnd, EM_SETMARGINS, EC_LEFTMARGIN, nVal)
End Function
¡ö Ïà¹ØÄÚÈÝ
¸Ðл ·ÃÎÊÌì¼«Íø£¬Èç¹ûÄú¾õµÃ¸ÃÎÄÕÂÉæ¼°°æÈ¨ÎÊÌ⣬Çë¿´ÕâÀ