PDA

View Full Version : سوال: متوقف شدن پردازش موس



nazanin_90
جمعه 09 بهمن 1394, 21:57 عصر
سلام
سلام من قبل از اجرای یک برنامه می خواهم از یک فرم که بر روی آن یک تصویر متحرک (تصویر یک دایره که حالت لود شدن را نشان میدهد) درج شده استفاده نمایم . اما مشکلی که وجود دارد این است که قبل از اجرای برنامه کرسر موس شروع به پردازش نموده و در خلال پردازش آن تصویر فرم حالت متحرک ندارد .
سوال این است که آیا راهی وجود دارد که از پردازش موس جلوگیری نموده و فرم مربوطه با اجرا شدن تصویر متحرک آن نمایش داده شود ؟
با تشکر

meys34
جمعه 09 بهمن 1394, 23:41 عصر
سلام

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


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

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



اگر هم از Sleep استفاده کردید به جاش از همون Timer استفاده کنید...

nazanin_90
شنبه 10 بهمن 1394, 00:02 صبح
با سلام
متوجه نشدم ، در زمان پردازش یا لود شدن برنامه که امکان پردازش تصویر متحرک وجود ندارد چگونه از تایمر استفاده کنم؟ آیا منظور شما از استفاده از تایمر بعد از پردازش برنامه است ؟
زمان پردازش برنامه حدوداً 15 ثانیه طول می کشد . من میخواهم در همین زمان پردازش تصویرمتحرک انجام شود .
با تشکر

meys34
یک شنبه 11 بهمن 1394, 18:03 عصر
زمان پردازش برنامه حدوداً 15 ثانیه طول می کشد .

سلام

دقیقا منظورم همین 15 ثانیه است....

توی این 15 ثانیه شما باید به طریقی پردازش رو متوقف و پردازش تصویر رو انجام بدید...

برای مثال می خوایم عدد 2 رو 100000000 بار ضرب کنیم:

Private Sub Form_Load()
Form1.Show
Dim i As Double, a As Double
For i = 1 To 100000000
a = 2 * i
DoEvents
Next
MsgBox "finish"
End Sub


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

با استفاده از تایمر هم اینجوری میشه:

Dim i As Double, a As Double

Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1
End Sub

Private Sub Timer1_Timer()
i = i + 1
a = 2 * i
If i = 1000 Then Timer1.Enabled = False: MsgBox "finish"
End Sub

nazanin_90
سه شنبه 13 بهمن 1394, 12:49 عصر
سلام
ظاهراً کاریش نمیشه کرد ، چون در طول زمانی که یک برنامه ای در برنامه ما در حال لود شدن است و در این حالت موس بصورت ساعت شنی در می آید تصویر ثابت است و بعد از لود شدن برنامه تصویر بصورت متحرک در می آید
با تشکر

meys34
چهارشنبه 14 بهمن 1394, 20:19 عصر
به هر حال من دو روش بلد بودم با این دو باید درست بشه... اگر تمایل داشتید سورس رو بزارید بررسی کنیم...

در ضمن برای آیکون موس هم از این استفاده کنید

Me.MousePointer = vbNoDrop

و حالت اولیه:

Me.MousePointer = vbDefault

vbhamed
جمعه 16 بهمن 1394, 08:49 صبح
سلام
برای انجام کارهای همزمان دو راه دارید
1 - از Thread ها استفاده کنید (MultiTread Programming in vb6 رو جستجو کنید کلی نمونه هست)
2 - فرم انتظارتون رو با یک برنامه فرعی exe دیگه نشون بدید و وقتی برنامه اصلیتون خودتون پردازشش تموم شد اون برنامه فرعی رو ببندید، برای ارتباط دو برنامه هم راههای مختلف مثل استفاده از فایل، رجیستری، Api ویندوز برای بستن اون برنامه، سوکت پروگرمینگ و ... هست