PDA

View Full Version : API کارها-آقای‌عریضی-OpenDialogBox



MBeigy
جمعه 06 تیر 1382, 05:40 صبح
سلام به همه دوستان
من می‌خواستم Open Dialig Box رو به یه طریقی بصورت فارسی داشته باشم. حالا یا ocx براش بنویسم یا با استفاده از API هایی مثل SetWindowsHookEx و غیره .
در نوشتن ocx نمی‌دونم چطور میشه امکان نشون دادن تمام فایلها و پوشه ها رو با آیکون های خودشون به پنجره اضافه کرد. :roll:
برای استفاده از API هم از روش آقای عریضی در فارسی کردن MessageBox ها استفاده کردم
http://www.saeidazish.com/FMsgBox.zip
ولی در مورد DataType تعریف شده برای Open Dialog Box ایراد می‌گیره. :?
لطفا اگه چیزی می‌دونید کمک کنید. خیلی فوریه. :cry:

Abbas Arizi
جمعه 06 تیر 1382, 10:29 صبح
سلام
حقیقتش من منظورتو از Data type رو دقیقا متوجه نشدم. اگه ممکنه دقیقتر بگید از کدوم DataType ایراد میگیره.
اگه منظورتون از فارسی کردن رو هم واضح تر بگید ممنون میشم. :oops:

MBeigy
یک شنبه 08 تیر 1382, 17:24 عصر
سلام
من می‌خواهم در برنامه خودم وقتی Open رو از منو انتخاب کردی و پنجره Open باز شد Lable ها و Command Button های روی پنجره فارسی باشند. به همین خاطر هم گفتم که می‌خواستم ocx بنویسم که نشد. البته نگید که از Drivelistbox,Dirlistbox,Filelistbox استفاده کنم چون این یه پروژه درسیه که باید دقیقا مثل Open در Office 2000 باشه. :cry:
اما فکر کنم همین روش استفاده از Hook راحت تر باشه. (هر چند که خودم هنوز نفهمیدم به طور دقیق چکار می‌کنه :? :roll: )

Abbas Arizi
یک شنبه 08 تیر 1382, 17:55 عصر
برای استفاده از Hook در CommonDialog ها روشهای مخصوصی وجود داره و لزومی نداره که شما از روش MessageBox استفاده کنید.
همچنین برای تغییر متن روی Label ها و Button ها هم پیغامهای مخصوص وجود داره.
در همین زمینه من قبلا یک ocx در همین سایت گذاشته ام که میتونید از اون استفاده کنید. (عنوان اون تقریبا این هست: یک Ocx برای تعریف OpenFile و SaveFile دلخواه).

MBeigy
یک شنبه 08 تیر 1382, 18:16 عصر
با عرض سلام
من اون برنامه رو پیدا کردم اما هیچکدام از لینک های مقاله ها و برنامه ها جواب نمیده. شما میتونی و محبت کنی اون رو به این آدرس بفرستی.
md_beigy@yahoo.com
ممنون از لطفت. :wink:

MBeigy
پنج شنبه 12 تیر 1382, 05:10 صبح
سلام
آقا ممنون از اینکه لطف کردید و اون رو فرستادید (خیلی جالب بود) اما همونطور که اشاره کرده بودم این یه پروژه درسیه و لذا من باید خودم بفهمم که چکار کردم. منظورم اینه که نمیتونم یه ocx بدون سورس تو برنامه داشته باشم. البته اون چیزی که شما درست کردید خیلی بیشتر از اونچه که من در نظرم بود انجام میده ولی تا خودم ننویسم فایده‌ای نداره. :roll:
میشه لطف کنی و در مورد روش کاری که من میخوام انجام بدم و توابعی که باید استفاده کنم یه توضیحی بدی.یا قطعه کدی بفرستی.(داره دیر میشه :wink: )
باز هم ممنون

Abbas Arizi
پنج شنبه 12 تیر 1382, 10:11 صبح
یک قطعه کد براتون فرستادم.
البته این کد فقط جگونگی کار رو نشون میده و امکانات اون فقط در حد همون تغییر متن روی کنترلهاست.
موفق باشید.

MBeigy
شنبه 14 تیر 1382, 16:01 عصر
سلام
آقای عریضی بسیار لطف کردید. فقط یه مشکلی هست.(البته مشکل زیاده ولی این یکی فعلا مهمه :wink: ) چرا این دیالوگ ها در هر ویندوزی شکل استاندارد ویندوز 98 هستن؟ منظورم اینه که آیا نوع comdlg32.dll که در ویندوزهای مختلف هست باعث تغییر common dialog ها نمیشه؟ یا اینکه باید برای تغیییر اون constnt دیگه ای رو انتخاب کرد؟ لطفا راهنمایی کنید.
باز هم خیلی خیلی ممنون.

Abbas Arizi
شنبه 14 تیر 1382, 17:05 عصر
:P :P

Abbas Arizi
شنبه 14 تیر 1382, 17:37 عصر
راهشو پیدا کردم. این Structure جدید رو جایگزین قبلی کن

Public Type OPENFILENAME
nStructSize As Long
hWndOwner As Long
hInstance As Long
sFilter As String
sCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
sFile As String
nMaxFile As Long
sFileTitle As String
nMaxTitle As Long
sInitialDir As String
sDialogTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
sDefFileExt As String
nCustData As Long
fnHook As Long
sTemplateName As String

'new Win2000 / WinXP members
pvReserved As Long
dwReserved As Long
FlagsEx As Long
End Type

Abbas Arizi
شنبه 14 تیر 1382, 19:26 عصر
این کد هم یه اشکال داره. تو 98 کار نمیکنه. برای حل اون به این لینک یه سر بزن:
http://www.mvps.org/vbnet/index.html?code/hooks/fileopensavedlghookadv.htm

MBeigy
چهارشنبه 18 تیر 1382, 22:56 عصر
سلام
عباس جان من این صفحه و چند لینک مرتبط را یکبار مطالعه کردم اما برای حل مشکل در 98 چیز جدیدی ندیدم. حقیقتش نتونستم دقیق بخونم چون یه مقدار گرفتار بودم. اما اون چیزی که گفته شده بود رو شما در برنامه ای که لطف کردی و فرستادی لحاظ کرده بودی تنها کاری که من کردم این بود که مقدار OSInfo.dwMajorVersion رو بجای 5 برای 4 چک کردم که برای WIN Me هم عمل کنه. و اتفاقا درست هم بود.
یعنی اگه با 2 چک کنم Open Dialog برای 98 هم بصورت 2000 باز میشه؟ (چون من 98 ندارم نتونستم امتحان کنم) .
یه مطلب دیگه اینکه حالا ID های اون دکمه های کناری سمت چپ مثل My Computer و MyDocument (که فکر کنم از نوع toolbar باشند) رو از کجا گیر بیارم تا فارسیشون کنم؟
باز هم از زحمتی که کشیدی بینهایت ممنون. 8) 8) 8)

Abbas Arizi
چهارشنبه 18 تیر 1382, 23:15 عصر
اون عدد 5 ورژن ویندوزه. ورژن ویندوز از 2000 به بعد از 5 به بالاست.
سایز Structure مربوط به OpenFile در ویندوز 2000 به بعد به اندازه 12 بایت بزرگتر شده. بنابراین اگر برنامه در ویندوز پایین تر از 2000 اجرا بشه باید nStructSize رو 12 تا از سایزش کم کنی.
بنابراین اگر شما 5 را به 4 تغییر بدی دیگه تو ویندوز 98 کار نمیکنه.
احتمالا ورژن Me هم 5 به بالاست که برنامه توش کار میکنه.
در مورد ایکونهای Toolbar هم باید بگم که بعید میدونم به این سادگیها بشه متنش رو تغییر داد.
(غیر عملی نیست. ولی دردسر داره). ضمن اینکه نام این آیکونها همون اسمیه که تو ویندوز دارن و فکر نمیکنم تغییر اونا ضرورتی داشته باشه.

MBeigy
چهارشنبه 18 تیر 1382, 23:45 عصر
سلام عباس جان
من هم متوجه شدم که اون ورژن ویندوزه. اتفاقا وقتی که 5 هست در Me درست کار نمی کنه اما وقتی که 4 میشه درست عمل میکنه. یعنی ورژن Me باید بین 4 و 5 باشه و به اون 12 بایت اضافی هم نیاز داره. :wink: مطلب دیگه اینکه یعنی شما هم تایید می کنی که اون دکمه های سمت چپ در Open Dialog های 2000 مثل History و ... از نوع toolbar هستن و بنابراین من دیگه بیخیالشون بشم؟ :cry:
ممنون از محبتت.

Abbas Arizi
پنج شنبه 19 تیر 1382, 01:06 صبح
خب اگه ورژن Me بین 4 و 5 هست باید حواست باشه که با 98 قاطی نشه. بنابراین در تابع Version باید dwMinorVersion را هم کنترل کنی. جدول ورژنها رو اگر نمیدونی از MSDN میشه پیدا کرد.
در مورد Toolbar هم بله. قطعا Toolbar هست.

Abbas Arizi
پنج شنبه 19 تیر 1382, 11:38 صبح
این هم جدول ورژنها:

MBeigy
پنج شنبه 19 تیر 1382, 17:45 عصر
آقا دست شما درد نکنه . بسیار ممنون. :P
یه سوال دیگه هم با نام ”بدست آوردن مسیر دایرکتوری ویندوز “ مینویسم. اگه ممکنه یه نگاهی به اون هم بینداز. :oops:

شاپرک
سه شنبه 20 شهریور 1386, 12:43 عصر
پروزه انجام شد؟
ما هم میتونیم ازش استفاده کنیم ؟
ممنون