ฟอรั่มของบล็อก http://pssix.blogspot.com


วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

Share
avatar
POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by POS on 30/12/10, 06:09 am

ที่มา: [You must be registered and logged in to see this link.]

ตัวอย่าง : คำสั่งเลื่อนหน้าต่างจากขวาไปซ้าย


Code:
 #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("PSsix", 419, 168, 607, 274)
GUISetBkColor(0x000000)
$Button1 = GUICtrlCreateButton("สวัสดีปีใหม่", 56, 32, 299, 89, $WS_GROUP)
GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x00FF00)
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00040002)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00050010)
         Exit
      Case $Button1
MsgBox(64,"สวัสดีปีใหม่","ปี "&@YEAR)
   EndSwitch
WEnd


แก้ไขล่าสุดโดย POS เมื่อ 15/07/11, 04:38 am, ทั้งหมด 3 ครั้ง


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com
avatar
POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by POS on 30/12/10, 06:34 am

วิธีปรับแต่ง

Code:
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00040002)

1. เปลี่ยนชื่อ $Form1 ให้ตรงกับค่าที่รับมาจาก GUICreate (ถ้าทำจาก koda ก็จะเป็นชื่อนี้ครับไม่ต้องเปลี่ยน)
2. เปลี่ยนตัวเลข 1000 ให้เป็นเวลาสำหรับแสดงภาพเคลื่อนไหว(1000 เท่ากับ 1 วินาที)
3. เปลี่ยนรหัส effect ที่ต้องการใช้ 0x00040002 มาจากรหัส 0x00040000 (สไลด์)+0x00000002 (เลื่อนขวาไปซ้าย) รวมกันได้เป็น 0x00040002 บาง effect จะเอามารวมกันไม่ได้อ่านจากคำอธิบายดูนะครับ
4.นำคำสั่งไปวางไว้บนคำสั่ง GUISetState ( ) เสมอ เพื่อให้ทำงานก่อนแสดงหน้าต่างเต็ม


รหัส effect ต่างๆ ที่สามารถนำมาใช้ได้

AW_ACTIVATE
0x00020000
Activates the window. Do not use this value with AW_HIDE.


AW_BLEND
0x00080000
fade effect. This flag can be used only if hwnd is a top-level window.

AW_CENTER
0x00000010
Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used. The various direction flags have no effect.

AW_HIDE
0x00010000
Hides the window. By default, the window is shown.

AW_HOR_POSITIVE
0x00000001
Animates the window from left to right. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.

AW_HOR_NEGATIVE
0x00000002
Animates the window from right to left. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.

AW_SLIDE
0x00040000
Uses slide animation. By default, roll animation is used. This flag is ignored when used with AW_CENTER.

AW_VER_POSITIVE
0x00000004
Animates the window from top to bottom. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.

AW_VER_NEGATIVE
0x00000008
Animates the window from bottom to top. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.

ตัวอย่างคำสั่ง

หน้าต่างจางไปหาเข้ม
Code:
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00080000 )

เลื่อนขึ้นบน
Code:
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1 , "int", 1000, "long", 0x00040008 )

เลื่อนแนวทแยง
Code:
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00040005 )

ถ้าจะใช้ effect แบบต่อกัน ต้องใช้คำสั่งคั่นคือ
Code:
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1 , "int", 1, "long", 0x00090000 )
อย่างเช่น

Code:
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1, "int", 1000, "long", 0x00040005 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1 , "int", 1, "long", 0x00090000 )
DllCall ( "user32.dll", "int", "AnimateWindow", "hwnd", $Form1 , "int", 1000, "long", 0x00040008 )



||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com
avatar
Monaliza
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Program Coder
จำนวนข้อความ : 213
ความนิยม : 7
เข้าร่วมเมื่อ : 03/10/2010

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by Monaliza on 10/03/11, 05:51 am

ดีครับ
avatar
Arm
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Master PSsix Program Coder
จำนวนข้อความ : 267
ความนิยม : 54
เข้าร่วมเมื่อ : 31/03/2011
อายุ : 19

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by Arm on 05/04/11, 04:48 pm

ผมอยากได้โค้ด fade เวลาเปิด-ปิดโปรแกรมน่ะครับ
แต่ผมอยากได้เวลาปิดโปรแกรมอ่ะครับให้มันทำหน้าต่างเข้มไปหาจางครับ
avatar
Quixotic
PSsix Member High Class
PSsix Member High Class

PSsix Program Coder
จำนวนข้อความ : 91
ความนิยม : 1
เข้าร่วมเมื่อ : 29/03/2011

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by Quixotic on 08/04/11, 01:02 am

เราจะรู้ได้ยังไงอ่ะครับว่า ไฟล์ DLL นั้นมันฟังกะชั่นอะไรบ้าง

พอมีวิธีหาไหมครับ >_<
avatar
POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by POS on 08/04/11, 06:06 am

ไม่จำเป็นต้องเรียกใช้ไฟล์ dll เสมอถ้าต้องการแสดงเอฟเฟกเพราะคำสั่งใน AutoIt ก็มีอยู่แล้ว (สามารถใช้คำสั่งเลียนแบบได้หมด) ตัวอย่าง เปิดแบบจางไปหาเข้ม และปิดแบบเข้มไปหาจาง

Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 346, 235, 192, 124)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

For $i = 0 To 255 Step 10
         WinSetTrans($Form1, "", $i)
         Sleep(100)
      Next

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
            For $i = 255 To 0 Step -10
         WinSetTrans($Form1, "", $i)
         Sleep(100)
      Next
         Exit
   EndSwitch
WEnd


ส่วนฟังก์ชั่นในไฟล์ dll หาได้จากเว็บผู้ผลิต หรือลองใช้โปรแกรมตรวจเช่น

Dependency Walker
[You must be registered and logged in to see this link.]

หรืออีกตัวโปรแกรมหนึ่ง
DLL Export Viewer
[You must be registered and logged in to see this link.]

การใช้โปรแกรมตรวจดูจะได้ข้อมูลที่ได้เป็นแค่ฟังก์ชั่นที่อยู่ในไฟล์ dll เท่านั้น


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com
avatar
Quixotic
PSsix Member High Class
PSsix Member High Class

PSsix Program Coder
จำนวนข้อความ : 91
ความนิยม : 1
เข้าร่วมเมื่อ : 29/03/2011

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by Quixotic on 08/04/11, 09:31 pm

ขอบคุณครับผม ^^

ขออีกคำถามครับ

แล้วเราจะใช้ฟังชั่นอะไรตัดพื้นหลังของ Label อ่ะครับ

คือผมเอาภาพลงเป็นแบคกาวของโปรแกรมแล้วก็เอา Label มาเขียนทับแต่มันมีพื้นหลังเป็นสีเทาๆอ่ะครับ

อยากได้วิธีตัดออกให้เหลือแต่ตัวหนังสือ

ผมได้แนวทางมาละครับ แต่ติดปัญหาคือ ถ้าเราสร้างรูปก่อนปุ่มกด ( เอาฟังชั่นเพิ่มรูปไว้บนสุด ปุ่มกดไว้ข้างล่าง )

แล้วใช้ฟังชั่น

GUICtrlSetBkColor(Default, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(Default, 0xFFFFFF)

... กับ label มันก็จะไม่แสดงผลอะไรเลย

แต่ถ้า สร้างรูปทีหลังสุด สร้างพวกปุ่มกดก่อน ฟังชั่นที่จะทำให้ label จางมันก็จะทำงานแต่ ...

รูปภาพมันจะบังปุ่มกดอ่ะครับ ต้องเอาเมาส์ไปชี้ๆ มันถึงจะโผล่ออกมา

อาการแบบนี้จะแก้ไขไงดีครับ นั่งงบมานานละ

เพิ่มเติมๆ ผมลองตั้งค่า Label เป็นสีแดงไว้ตัวนึงอ่ะครับ

พอตอนเปิดโปรแกรมมันจะเห็นแวปๆ แล้วก็หายไป เหมือนโดนทับอีกทีอ่ะครับ

แก้ไชได้ละครับ

ปัญหาเกิดจากการใช้สกินที่ท่านเอามาแจกอ่ะครับ เพราะผมลองลบออกมันก็ปกติดีทุกอย่าง

แต่ผมลองเอาใส่อีกที Label ทุกตัวมันก็จะมีพื้นหลังสีเท่าอ่ะครับ ถึงตอนนี้ผมจนปัญญาของจริงละครับ

T_________T
avatar
POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by POS on 09/04/11, 10:03 am

สกินนั้นค่อนข้างมีปัญหาครับทำเล่นๆ ก็พอได้ แต่เอามาใช้งานจริงจะมีปัญหามาก ผมก็ไม่ใช้

ตัวอย่างสำหรับทำให้ label ไม่มีพื้นหลัง ลองดูโค้ดด้านล่างนี้

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 545, 355, 192, 124)
$Pic1 = GUICtrlCreatePic("ใส่รูป.jpg", 0, 0, 537, 345, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Label1 = GUICtrlCreateLabel("ทดสอบ", 312, 88, 139, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com
avatar
Quixotic
PSsix Member High Class
PSsix Member High Class

PSsix Program Coder
จำนวนข้อความ : 91
ความนิยม : 1
เข้าร่วมเมื่อ : 29/03/2011

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by Quixotic on 09/04/11, 02:06 pm

แง่ว T_____T หมดทางแก้เลยสินะครับ เสียดายจัง

ยังไงก็ขอบคุณสำหรับตัวอย่างมากนะครับ em218
avatar
newsak2005
ระงับสมาชิก
ระงับสมาชิก


จำนวนข้อความ : 115
ความนิยม : 0
เข้าร่วมเมื่อ : 08/05/2011

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by newsak2005 on 16/06/11, 01:02 am

ใช้คำสั่งใน WinAPI ก็ทำได้เช่นกัน ลองค้นหาดูครับ
avatar
Arm
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Master PSsix Program Coder
จำนวนข้อความ : 267
ความนิยม : 54
เข้าร่วมเมื่อ : 31/03/2011
อายุ : 19

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by Arm on 27/01/12, 03:58 pm

ท่าน Admin ครับ
ปักหมุดกระทุ้นี้ให้หน่อยครับ
avatar
POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by POS on 28/01/12, 09:39 am

จะปักหมุดเพื่ออะไรครับ


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com
avatar
Arm
PSsix Member Super Class III
PSsix Member Super Class III

PSsix Master PSsix Program Coder
จำนวนข้อความ : 267
ความนิยม : 54
เข้าร่วมเมื่อ : 31/03/2011
อายุ : 19

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by Arm on 28/01/12, 09:30 pm

คือเวลาหากระทู้นี้จะได้ไม่ต้องเข้าไปหาจาก page ก่อนๆน่ะครับ
avatar
POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: วิธีทำ effect ตอนปิดและปิดหน้าต่างโปรแกรม

ตั้งหัวข้อ by POS on 29/01/12, 07:11 am

เซฟเก็บไว้ในเครื่องจะดีกว่าครับ ผมไม่อยากให้กระทู้ปักหมุดมีเยอะเกินไป อันที่จริงกระทู้อื่นๆ ก็มีประโยชน์เช่นกัน แต่ไม่ได้รับการจัดหมวดหมู่ไว้เท่านั้น


||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

    เวลาขณะนี้ 24/03/17, 05:14 pm