VB 是拿来玩玩的.

ikey 2003-05-19 06:42:41
本人初中毕业,自学 VB ,由于工作需要曾用 VB 编写过用于资料统计的小程序,不过一直认为 VB 是用来娱乐的,没事打发时间到是满好的,有同感的交个朋友.
QQ:86264427
...全文
7 点赞 收藏 59
写回复
59 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fullor2000 2003-05-23
API函数就好像是DOS下的INT21这类的中断指令。
只不过在DOS下这条指令执行时可以直接面向计算机的硬件设备,
而WINDOWS下调用API则面向他的虚拟机(VMM)。
要想了解WINDOWS到底是怎么样工作的,就要去学习虚拟机编程。
CIH病毒就是一个典型列子,能对硬件进行破坏。
回复
sikeen 2003-05-22
嘿嘿,那就不用無邊框的窗體嘛。
我的客戶大部分不理解運行效率,而是更關心價錢。
我如果告訴他我要多花幾個月的時間和幾萬塊去幫他把這個軟件的效率提高了20%,他會立即槍斃俺的產品!
就目前主流的開發工具來說,並沒有哪個是絕對完美或絕對臭屁的,而應該根據你實際的需求選擇相應的工具!
回复
ikey 2003-05-22
回:sikeen(阿土) ( )您说:
:)沒誰否認API的用處呀,不過等你搞完這一大堆後,俺早把程序編完啦。軟件開發時間就是金錢吶!

我不赞成您的观点,如果您不使用 API 实现对无边框的窗体延八个不同方向进行操作,并拖动,会减少多少代码?(会不会增多呢!),先不要考虑这段代码是否有用.程序运行效率如何?
回复
hjmeteor 2003-05-22
我不苟同这个观点,虽然VB同VC、DELPHI等比,可能是有区别,但不代表VB就没用。我就是用VB编了几个工作中很实用的程序,而且还在使用VB。不过搞专业开发的话,尽量不要使用VB.
回复
道素 2003-05-22
我认为vb表面很简单,但是在简单的内部确实很复杂,因为他封装的太多,用C++很容易知道它实现的机制,但是vb的很动东西内部是怎么实现,机制是什么,它的winmain在哪里如何处理,怎样处理消息等等,并不是很容易看出的

( ">
)(
// )
shannon--//""--
-/------ch21st@hotmail.com
回复
sikeen 2003-05-22
:)沒誰否認API的用處呀,不過等你搞完這一大堆後,俺早把程序編完啦。軟件開發時間就是金錢吶!
回复
ikey 2003-05-22
使用 API 函数很复杂吗?
看一下这个简单的例子.对无边框窗体的操作.

Option Explicit
'用于计时
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long
'用于发送消息
Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Private Declare Function SendMessageBynum& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Private Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Private Const HTBOTTOM = 15
Private Const HTBOTTOMLEFT = 16
Private Const HTBOTTOMRIGHT = 17

Private Const HTTOP = 12
Private Const HTTOPLEFT = 13
Private Const HTTOPRIGHT = 14

Private Const HTLEFT = 10
Private Const HTRIGHT = 11

'为当前的应用程序释放鼠标捕获
Private Declare Function ReleaseCapture Lib "user32" () As Long

'取得窗体位置的函数
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

'取得鼠标位置的函数
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type

'用于如何操纵窗体大小及其位置
Dim Action As String
'停止计时
Private ExitApp As Boolean

Private Sub Form_Load()
Me.Show
GetTime
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbLeftButton Then

ReleaseCapture

Select Case Action
Case "Left"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTLEFT, 0&
Case "Right"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTRIGHT, 0&
Case "Up"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTTOP, 0&
Case "LeftUp"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTTOPLEFT, 0&
Case "RightUp"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTTOPRIGHT, 0&
Case "Down"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOM, 0&
Case "LeftDown"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMLEFT, 0&
Case "RightDown"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0&
Case "Move"
SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Select

End If
End Sub

Private Sub frmSize()
Dim MyRect As RECT
Dim MyPoint As POINTAPI

' MyRect返回当前窗口位置
Call GetWindowRect(Me.hwnd, MyRect)

' MyPoint返回当前鼠标位置
Call GetCursorPos(MyPoint)

Select Case True
Case MyPoint.X < MyRect.Left + 5 And MyPoint.Y < MyRect.Top + 5
Screen.MousePointer = vbSizeNWSE
Action = "LeftUp"
Case MyPoint.X > MyRect.Right - 5 And MyPoint.Y > MyRect.Bottom - 5
Screen.MousePointer = vbSizeNWSE
Action = "RightDown"
Case MyPoint.X > MyRect.Right - 5 And MyPoint.Y < MyRect.Top + 5
Screen.MousePointer = vbSizeNESW
Action = "RightUp"
Case MyPoint.X < MyRect.Left + 5 And MyPoint.Y > MyRect.Bottom - 5
Screen.MousePointer = vbSizeNESW
Action = "LeftDown"
Case MyPoint.X < MyRect.Left + 5
Screen.MousePointer = vbSizeWE
Action = "Left"
Case MyPoint.X > MyRect.Right - 5
Screen.MousePointer = vbSizeWE
Action = "Right"
Case MyPoint.Y < MyRect.Top + 5
Screen.MousePointer = vbSizeNS
Action = "Up"
Case MyPoint.Y > MyRect.Bottom - 5
Screen.MousePointer = vbSizeNS
Action = "Down"
Case Else
Screen.MousePointer = 0
Action = "Move"
End Select
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
ExitApp = True
End Sub

Public Sub GetTime()

Dim NextTick As Long
Do Until ExitApp
DoEvents
Do Until GetTickCount > NextTick
DoEvents
Loop: NextTick = GetTickCount + 50
frmSize
Loop
End

End Sub
回复
xayzmb 2003-05-22
所有的工具
其目的是将一项复杂的工作简单化
如果有人以自已能够以一种复杂的方法来完成一项简单的工作以荣的话
我不知该说什么了
只能建议大家都去学汇编吧(不好意思,我不知比汇编更....是什么 :p)
..............
回复
zhumb 2003-05-22
存在就有他的道理
回复
sikeen 2003-05-22
:)
純粹玩玩,那是為了寫代碼而寫代碼,真正做一個產品要考慮其成本的
回复
chenyu5188 2003-05-22
UP
回复
fraser01 2003-05-22
当然不是,都是一些最基本的VB编程。任何语言深了都很复杂的。
而且VB不是用在游戏编程的。这个对象要搞清楚。
基础的东西远比API要重要的多。
回复
ikey 2003-05-22
今天刚来公司,多谢各位老哥来捧场!

我虽不是作为真正程序员,但我也知道作为程序员的的辛苦,为什么不能够苦中作乐呢?
当您解决了一直困惑你的设计难题时,是不是比玩任何游戏都会兴奋呢!会另你欣喜若狂!
所以说"玩玩"有什么不好呢,为什么让自己那么累呢?就当玩游戏赚钱吧!一点阿 Q 精神会使自己更轻松.
关于涉及到的关于 API 的话题,个人认为 VB 如果不借助 WIN32 API ,只是针对有限的控件进行程序设计,他的功能将是很有限的.简单的就编写游戏来说,如果不借助 WIN32 API 是没有办法写出像样的游戏.
对于 ecivilian(抽象青年) 提到的《VB6 高级编程》,我随没有看过,或许也看不董,但我认为很多更深层次内容是涉及到 WIN32 API 函数的.
多向大家学习,多指教!
回复
ydzqw 2003-05-22
你丫的欠骂
回复
裸男 2003-05-22
不是说使用API函数不好,只是每次调用API 我都有一种知其然而不知其所以然的感觉,API函数就像一个黑盒子,只有入口和出口,至于盒子里面到底是什么东西,我们都不知道。

同感!
回复
litaoa 2003-05-22
哈哈。应该是看用的人怎么用吧。 其实上厕所也有很多种上法的,哈哈。
回复
ikey 2003-05-22
回: wingchi(国家农民),
老哥,听有人说 windows 是用批处理做的,那么您就用 VB 也写一个吧!玩笑了.

不过象您这么自信的我到是第一次见过,佩服.

学无止境,祝前途一片光明.
回复
wingchi 2003-05-22
玩玩的?把你不能实现东西拿给我,我用vb给你实现。

































这话不是我说的,好像是比尔盖茨说的
回复
Amaza 2003-05-22
我的软件在同类软件中是最快的,当然我用VB,速度完全不是VB的问题了!如果你不是半瓢水的话,VB的缺陷在于面向对象上!
回复
kmzs 2003-05-22
什么工具好——要看你要做什么——更要看你能怎么做……
回复
加载更多回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7490

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-05-19 06:42
社区公告
暂无公告