View Full Version : سوال: تغییر انیمیشن عملیات کپی در MFC
A_Salimi
چهارشنبه 30 دی 1388, 15:12 عصر
سلام
من میخوام انیمیشنی که در هنگام کپی و حذف فایل ها نشون داده میشه رو در برنامه خودم تغییر بدم .دقیقا باید چیکار کنم .در زیر این تغییر رو در برنامه nokia pc suite نشون دادم.ممکنه راهنمایی بدید؟
mehdi.mousavi
چهارشنبه 30 دی 1388, 15:32 عصر
سلام
من میخوام انیمیشنی که در هنگام کپی و حذف فایل ها نشون داده میشه رو در برنامه خودم تغییر بدم .دقیقا باید چیکار کنم .در زیر این تغییر رو در برنامه nokia pc suite نشون دادم.ممکنه راهنمایی بدید؟
سلام.
باید از اینترفیس IProgressDialog (http://msdn.microsoft.com/en-us/library/bb775248%28VS.85%29.aspx) استفاده کنید.
موفق باشید.
A_Salimi
چهارشنبه 30 دی 1388, 23:19 عصر
سوالی که پیش میاد اینه که اگه با SHFileOperation این دیالگ بوجود آمده باشه آیا میشه فقط انیمیشن AVI اون رو عوض کرد یا نه؟
Nima_NF
پنج شنبه 01 بهمن 1388, 17:33 عصر
در ویندوز ویستا به بعد می توانید از IFileOperation::SetProgressDialog استفده کنید.
ضمنا اگر می خواهید دیالوگ خود را داشته باشید، همیشه نیاز نیست از سیستم کپی خود ویندوز استفاده کنید. شما می توانید یک دیالوگ طراحی کنید و سپس عمل کپی و محاسبه مکان کنونی progress bar را خودتان پیاده سازی کنید.
A_Salimi
یک شنبه 04 بهمن 1388, 23:57 عصر
در ویندوز ویستا به بعد می توانید از IFileOperation::SetProgressDialog استفده کنید.
ضمنا اگر می خواهید دیالوگ خود را داشته باشید، همیشه نیاز نیست از سیستم کپی خود ویندوز استفاده کنید. شما می توانید یک دیالوگ طراحی کنید و سپس عمل کپی و محاسبه مکان کنونی progress bar را خودتان پیاده سازی کنید.
اون دیالگ اطلاعاتی مثل زمان باقیمانده ، اسم فایل در حال کپی و ... را نشان می دهد.اونها رو چطور در دیالوگ جدید وارد کنم؟
Nima_NF
سه شنبه 06 بهمن 1388, 15:23 عصر
اون دیالگ اطلاعاتی مثل زمان باقیمانده ، اسم فایل در حال کپی و ... را نشان می دهد.اونها رو چطور در دیالوگ جدید وارد کنم؟
در این صورت علاوه بر dialog شما باید سیستم کپی خودتان را طراحی کنید. مثلا Nokia لزوما از سیستم کپی ویندوز استفاده نمی کند.
شما با استفاده از توابع مرسوم ویندوز (ReadFile / WriteFile و ...) باید عمل کپی را پیاده سازی کنید. این موضوع را در بسیاری از برنامه ها مشاهده کرده ام و به هیمن شکل عمل کرده اند.
مثلا شما در یک حلقه 100KB هر مرتبه داده را به مقصد کپی می کنید، حجم نهایی فایل را هم که می دانید، حال راحت محاسبه می کنید (در هر دور حلقه یا ثانیه) که چقدر کپی کرده اید و چه قدر باقیمانده است. اسم و مسیر فایل را نیز دارید (با همان توابع).
پس اگر قرار هست عمل کپی را کاملا سفارشی طراحی کنید به شکل فوق باید عمل کنید.
در غیر این صورت باید از اینترفیس ها (مثل IProgressDialog ) استفاده کنید و فقط دیالوگ را تغییر دهید (که در پست های قبلی اشاره شده است)
A_Salimi
پنج شنبه 22 بهمن 1388, 15:06 عصر
من مشکلاتی با مقدار دهی بعضی از مقادیر دارم که اگه ممکنه یکسری توضیح بدید:
من یه سری کد برای استفاده از کلاس IProgressDialog نوشتم.اما جواب نگرفتم .اگه ممکنه کمکم کنید تا کدهای نوشته شده را اصلاح کنم.
به این صورت عمل کردم (با توجه به MSDN) :
Create an in-process progress dialog box object (CLSID_ProgressDialog) with CoCreateInstance. Request a pointer to its IProgressDialog interface (IID_IProgressDialog).
که اینطور نوشتم :
IProgressDialog *ppd;
::CoCreateInstance(CLSID_ProgressDialog,NULL,0x1,I ID_IProgressDialog,(void**)&ppd);
مابقی خط ها در هنگام کامپایل اروری ندارند اما در هنگام اجرا (آنطوری که در حالت دیباگ دیدم ایراد دارند) :
Call IProgressDialog::SetTitle to specify the dialog box title
ppd->SetTitle(_T("A_Salimi dialog"));
و یا
ppd->SetCancelMsg(_T("Operation canceled"),NULL);
ضمنا در مورد سوال اصلی خودم هم مشکلاتی دارم یعنی تغییر انیمیشن :
تابع SetAnimation دو پارامتر داره که یکیش HINSTANCE hInstAnimation و دیگری idAnimation
لطفا در مورد این پارامتر ها هم توضییح بدید
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.