หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 1 2 8 4 6 9

7 ธันวาคม พ.ศ.2549
250 Users On-Line.
Visitors - Page views
 8 4 2 4 5 1 2
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

ฟังค์ชั่น MessageBox ใน Microsoft Visual Basic 6.0

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 11/6/2552   เวลา: 13:27
(อ่าน : 34447) 
บทความนี้จะมานำเสนอความแตกต่างของฟังค์ชั่น (หรือเรียกว่าคำสั่งก็ไม่ผิด) ระหว่าง MsgBox กับ MessageBox ในกรณีของ MsgBox หมู่สาวก VB6 ก็ต้องใช้งานกันโดยตลอดอยู่แล้ว ส่วน MessageBox เราก็จะพบเห็นใน VB.Net ซ่ะมากกว่า ซึ่งทำให้แทบจะทุกคน (จริงๆ) เข้าใจว่าคำสั่ง MessageBox มันไม่มีอยู่ใน VB6 ... อิอิอิ ...
ดาวน์โหลด
ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
 ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
 ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
 ดาวน์โหลด Microsoft Visual Basic Service Pack 6
ข้อมูลเพิ่มเติม
MessageBox Function - ไมโครซอฟท์
เรื่องของโปรแกรมย่อย (อีกที) ... Sub Program, Routine, Procedure หรือ Function
ฟังค์ชั่นที่ใช้ในการคำนวณหาค่าความแตกต่างกันของเวลา (Time)
ฟังค์ชั่นที่ใช้ในการคำนวณหาค่าความแตกต่างระหว่างวันเดือนปี 2 ค่า
การทำงานแบบ Background Process หรือ การทำงานที่อยู่เบื้องหลัง (เงียบๆ) โดยไม่มีการโต้ตอบกับผู้ใช้ ซึ่งมักจะเป็นงานที่ใช้เวลาค่อนข้างนาน ยกตัวอย่างให้เห็นกันจะๆ เช่น การส่งงานออกไปพิมพ์ที่เครื่องพิมพ์ (Printer) ซึ่งในระหว่างที่เครื่องพิมพ์กำลังปริ้นท์เอกสารนับสิบๆหน้าอยู่นั้น ผู้ใช้ก็สามารถกลับมาพิมพ์เอกสารออกจอภาพได้ทันที นี่เป็นงานส่วนหน้าที่โต้ตอบได้ (Foreground) นั่นเอง ส่วนงานพิมพ์เอกสาร (Hard Copy) ก็จะถูกกำหนดให้ทำงานอยู่แบบเบื้องหลัง หรือ Background Process ค่อยๆทยอยพิมพ์เอกสารออกไปได้เรื่อยๆ ที่ว่ามา ... จุดประสงค์หลักๆของกระบวนการนี้ก็คือ ต้องการใช้งาน CPU ให้เกิดประสิทธิภาพสูงสุด
เคยสังเกตกันบ้างมั้ยว่า ระหว่างที่เราใช้งานคำสั่ง MsgBox อยู่นั้น หากมีเหตุการณ์ที่ทำงานอยู่เบื้องหลัง (Background Process) และ ไปเกี่ยวข้องกับการนับ หรือ เวลา งานต่างๆเหล่านี้จะหยุดการทำงานลง เพื่อให้ผู้ใช้ได้โต้ตอบกับ Dialog Box ที่โผล่ขึ้นมาก่อน หากเป็นเช่นนี้แล้วจะทำให้ลดประสิทธิภาพการทำงานของระบบโดยรวมลงไป ซึ่งเราจะแก้ไขโดยอาศัย API (Application Programming Interface) เข้ามาช่วย โดยคงสภาพให้ Background Process สามารถดำเนินการต่อไปได้
  • Design Time
  • โปรแกรมทำงาน (Run - Time)
  • ค่าพารามิเตอร์ของฟังค์ชั่น MessageBox
    • hwnd เป็นค่าจำนวนเต็มที่ระบบปฏิบัติการกำหนดให้กับฟอร์ม (หรือวัตถุ) ในที่นี้เราอ้างอิงด้วย Me.hwnd
    • lpText คือ คำอธิบาย หรือข้อความที่ใช้แจ้งรายงานต่างๆ
    • lpCaption คือ Title หรือ ป้ายบอกฟอร์มของมัน
    • wType คือ Option ต่างๆ เช่น ปุ่มเลือก ไอคอน ที่นำมาแสดงผล
  • Timer1 หยุดทำงาน จึงไม่แสดงผลเวลาที่ Label1
    เนื่องจากต้องรอการโต้ตอบกลับมาจากผู้ใช้งานก่อน
  • Timer1 ยังคงทำงานต่อในลักษณะ Background Process
    เนื่องจากมันจะถูกกระตุ้นให้ทำงานทุก 1 มิลลิวินาที
    เริ่มต้นกระบวนการทำงาน
    
    Option Explicit
    Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" ( _
        ByVal hwnd As Long, _
        ByVal lpText As String, _
        ByVal lpCaption As String, _
        ByVal wType As Long _
        ) As Long
    
    Private Sub Command1_Click()
        ' Timer1 หยุดทำงาน ไม่ใช่ Timer หรือ สัญญาณนาฬิกาของระบบหยุดทำงานน่ะครับ ... คนละเรื่องกัน
        ' การใช้งาน MsgBox ตามปกติ
        MsgBox "ขณะนี้เวลา Timer1 หยุดทำงาน.", vbOKOnly + vbInformation, "รายงานสถานะ"
    End Sub
    
    Private Sub Command2_Click()
        ' ความแตกต่างเมื่อเรียกใช้ Dialog Box ผ่าน Win32 API
        MessageBox Me.hwnd, "คำเตือน ... เวลาจาก Timer1 ไม่ได้หยุดทำงาน.",  _
        "การใช้งาน Win32 API", vbOKOnly + vbExclamation
    End Sub
    
    Private Sub Form_Load()
        Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
        ' ตั้งค่าการกระตุ้นให้ทำงานทุก 1 มิลลิวินาที
        Timer1.Interval = 1
    End Sub
    
    Private Sub Timer1_Timer()
        ' แจ้งเวลาทุกๆ 1 มิลลิวินาที
        Label1.Caption = Time
    End Sub
    
    

  • จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
    เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] หรือ โทร. 08-6862-6560