آموزش ساخت فایلهای RES (لود کردن هر فایلی تو برنامه)

تازه ها

آموزش ساخت فایلهای RES (لود کردن هر فایلی تو برنامه)

نظرات ()

آموزش ساخت فایلهای RES (لود کردن هر فایلی تو برنامه)

خب حالا این فایل res چی هست و چه کار میکنه ؟ فرض کنید میخواید برنامه ای بنویسید که زمانیکه اجرا میشه یه آهنگ پخش بشه و میخواید که این آهنگ از درون خود برنامه پخش بشه نه از داخل هارد! اینجاست که باید آهنگ رو تو یه فایل قرار بدید که اون فایل رو بهش res میگن که مخفف Resource هست. همین اول بگم که کار کردن با فایل res هیچ کای نداره حتی از درست کرن نیمرو هم آسونتره.

خب برای اینکه این آموزش خسته کننده نباشه ما سعی میکنیم یه برنامه بنویسیم که از تو خودش آهنگ رو پخش میکنه مثله برنامه های کرک.

ابتدا شما باید برنامه VB Resource Editor رو به ویژوال بیسیک اضافه کنید که برای اینکار ویژوال بیسیک رو باز کنید و از منوی Add-Ins گزینه Add-in Manager رو انتخاب کنید که شکل زیر ظاهر میشه و شما باید مطابق شکل گزینه VB 6 Resource Editor رو انتخاب کنید و در پایین پینجره در سمت راست گزینه های Loaded/Unloaded و همچنین Load on Startup رو علامت بزنید و کلیک OK رو بزنید.

 

حالا در منوی Standard یک گزینه به آخر منو اضافه میشه که آیکون مکعب سبز هست مثل شکل زیر.

 

حالا باید یک پروژه جدید باز کنید (کلید Ctrl + N رو بزنید و بعد OK).  حالا روی آیکون مکعب کلیک کنید تا پنجره VB Resource Editor باز بشه. شکل زیر.
در منوی این پنجره چندین آیکون وجود داره که از شکلشون معلومه چی هستن. شما میتونید در این قسمت هر فایلی رو که میخواید اضافه کنید. در منوی برنامه چند گزینه برای اینکار وجود داره که به ترتیب برای اضافه کردن اشاره گر موس ، اضافه کردن آیکون ، اضافه کردن عکس و اضافه کردن هر نوع فایل به کار میروند.

 

چون ما میخوایم یک آهنگ به فایل res اضافه کنیم پس باید آخرین گزینه یعنی Add Custom Resource رو بزنیم و فایل خودمون رو اضافه کنیم. بعد افزودن فایل باید روی دکمه Save کلیک کنید و فایل res رو یه جایی ذخیره کنید. به شکل زیر توجه کنید.

 

بعد از افزودن فایل، یک پوشه به نام CUSTOM ایجاد میشه و در داخل اون فایلتون با شماره پیشفرض 101 اضافه میشه که خودتون میتونید اونو در قسمت Properties تغییر بدید که ما اینکارو نمیکنیم و از همون نام پیشفرض استفاده میکنیم. بعد از Save کردن فایل به طور اتوماتیک باید فایل RES به قسمت Project اضافه بشه. شکل زیر.

 

خب حالا پروژه ما آماده ست و الان وقت استفاده از فایله. در فایل RES هر فایلی که اضافه میکنید به صورت باینری ذخیره میشه و شما میتونید فایلها رو با دستور LoadResData از فایل RES بخونید اگر بخواید فایله عکس رو بخونید باید از دستور LoadResPicture استفاده کنید. حالا برای اینکه ما بتونیم آهنگ رو از درون فایل RES بخونیم از دستور زیر استفاده میکنیم :

Dim Buffer() As Byte
Buffer = LoadResData(101, "CUSTOM")

در خط اول یک متغیر از نوع بایت به صورت آرایه ای تعریف کردیم تا اطلاعات و بایت ها درون اون قرار بگیرن و در خط دوم هم با استفاده از دستور LoadResData فایل آهنگ رو درون متغیر لود کردیم. حالا باید این محتویات این متغیر رو یه جایی از حافظه ذخیره کنیم و از اون فایله ذخیره شده استفاده کنیم. برای اینکار از دستورات زیر استفاده میکنیم :

Open "C:music.mp3" For Binary As #1
Put #1, , Buffer
Close #1
Erase Buffer

در خط اول یه فایل از نوع باینری در درایو C درست کردم و در خط بعد محتویات متغیر Buffer رو درون فایل قرار دادم و در خط بعد هم فایل رو Close کردم تا فایل کامل بشه اما در خط آخر متعیر رو از بین رو از بین میبرم تا فضای حافظه بیهوده اشغال نشه. خوب حالا میتونید فایلی که ذخیره کردید رو در برنامه استفاده کنید. دستورات زیر تمامه چیزی هست که باید در قسمت جنرال فرم نوشته بشه :

 

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Dim isPlaying As Boolean
Dim Mp3File As String
Private Sub Form_Load()
    Dim Buffer() As Byte
    Buffer = LoadResData(101, "CUSTOM")
    Open "C:music.mp3" For Binary As #1
    Put #1, , Buffer
    Close #1
    Erase Buffer
    Mp3File = Chr$(34) + "C:music.mp3" + Chr$(34)
    mciSendString "open " + Mp3File, 0&, 0&, 0&
    mciSendString "play " + Mp3File, "", 0&, 0&
    isPlaying = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
    If isPlaying = True Then
        mciSendString "close " + Mp3File, 0&, 0&, 0&
    End If
End Sub

حالا اگه برنامه رو اجرا کنید یک آهنگ پخش میشه و زمانی که برنامه رو ببندید آهنگ هم قطع میشه. موفق باشید.

منبع : http://v-basic.mihanblog.com/