View Full Version : مشکل با API EnumFont
Reza,M
دوشنبه 04 اردیبهشت 1391, 15:30 عصر
با سلام
API EnumFont در vb6 مشکلی نداره ولی نمیدونم چرا در vb.net نمیتونم ازش استفاده کنم
نمونه کد vb6 و vb.net را ضمیمه کردم
xxnagin
دوشنبه 04 اردیبهشت 1391, 17:36 عصر
سلام
این کد vb6 باید تبدیل بشه به vb.net
تازه خیلی راحت هم تبدیل نمیشه
تبدیل کردن کد این نیست که بیای عین کد را بنویسی و خطاهای کد رو برطرف کنی مثلا تو vb6 کلمه new زیاد کاربرد نداره ولی اینجا (در بعضی جاها ) باید از new استفاده کنید
اگه شما میخواین فونت ها رو تو list نشون بدین این راه خیلی ساده تر هستش
PrivateSub AddFonts()
Dim allFonts AsNew Drawing.Text.InstalledFontCollection
Dim fontFamilies() AsFontFamily = allFonts.Families()
ForEach fo AsFontFamilyIn fontFamilies
ListBox1.Items.Add(fo.Name)
Next
EndSub
Reza,M
دوشنبه 04 اردیبهشت 1391, 17:51 عصر
نه دوست عزیز میخوام از API استفاده کنم
xxnagin
دوشنبه 04 اردیبهشت 1391, 19:00 عصر
وقتیvb.net کار را راحت کرده چرا کار خودتو سخت میکنی
http://www.codeproject.com/Articles/2699/FontComboBox-a-font-listing-combo-box-for-NET
اینم یه لینک دیگه که به زبان سی شارپ هستش ولود فرم لازم به تبدیل داشت که برات تبدیل هم کردم که فقط یه dll داره که به فرمت اضافه کنی
اینم کد که تو فرم و دکمه میذاری
'load form
fontComboBox1.Populate(False)
fontComboBox2.Populate(True)
'button
textBox1.Font = New Font(fontComboBox1.Text,10)
textBox2.Font = New Font(fontComboBox2.Text,10)
Reza,M
دوشنبه 04 اردیبهشت 1391, 19:44 عصر
هیچ راهی نیست که با API بشه انجام داد ....
xxnagin
دوشنبه 04 اردیبهشت 1391, 19:56 عصر
این کد باید تبدیل بشه به vb.net یعنی مجبورید
vb.net کار رو راحت کرده شما مجبور نیستی از api استفاده کنید وقتی به این راحتی با دو تا خط کد میشه کار میکنه
چرا از خط های زیاد استفاده میکنی
Reza,M
سه شنبه 05 اردیبهشت 1391, 02:08 صبح
این کد باید تبدیل بشه به vb.net یعنی مجبورید
vb.net کار رو راحت کرده شما مجبور نیستی از api استفاده کنید وقتی به این راحتی با دو تا خط کد میشه کار میکنه
چرا از خط های زیاد استفاده میکنی
میخوام با api انجام بدم :متفکر:
اگه میشه تبدیلش کرد لطفا این کار رو انجام بدید آخه من تبدیل کردم جواب نداده
Reza,M
چهارشنبه 06 اردیبهشت 1391, 12:10 عصر
با سلام
API EnumFont در vb6 مشکلی نداره ولی نمیدونم چرا در vb.net نمیتونم ازش استفاده کنم
نمونه کد vb6 و vb.net را ضمیمه کردم
در کد vb.net به EnumFonts(Me.hDC, vbNullString, AddressOf EnumFontProc, 0) خطا میگیره
xxnagin
چهارشنبه 06 اردیبهشت 1391, 13:20 عصر
ببین اینجوری هم که تو فکر میکنی نیست
اون باید اول اینجوری نوشته بشه
منم هر کاری کردم نشد سخت تبدیل میشه بی خیال شو
اول DelegateFunction EnumFontProc(....)as integer
بعدش باید
dim proc as new EnumFontProc(AddressOf EnumFontProc)EnumFonts(Me.hDC, vbNullString, AddressOf EnumFontProc, 0)
تو قسمت قرمز رنگ که تو Module خط اولت باید EnumFontProc بنویسی به جای integer
نمونه http://stackoverflow.com/questions/2463395/addressof-vb6-to-vb-net
Reza,M
چهارشنبه 06 اردیبهشت 1391, 13:24 عصر
درست دوست من راهش همین Delegate ولی چطور باید ازش استفاده کرد :گریه:
Reza,M
چهارشنبه 06 اردیبهشت 1391, 13:59 عصر
ببین اینجوری هم که تو فکر میکنی نیست
اون باید اول اینجوری نوشته بشه
منم هر کاری کردم نشد سخت تبدیل میشه بی خیال شو
اول DelegateFunction EnumFontProc(....)as integer
بعدش باید
dim proc as new EnumFontProc(AddressOf EnumFontProc)EnumFonts(Me.hDC, vbNullString, AddressOf EnumFontProc, 0)
تو قسمت قرمز رنگ که تو Module خط اولت باید EnumFontProc بنویسی به جای integer
نمونه http://stackoverflow.com/questions/2463395/addressof-vb6-to-vb-net
این کارها رو کردم ولی بازم جواب نداد . هنوز خطا میگیره ؟؟؟
xxnagin
چهارشنبه 06 اردیبهشت 1391, 14:21 عصر
vb6
Sub SYNCPROC(ByVal handle As Long, ByVal channel As Long, ByVal data As Long, ByVal user As Long)
'CALLBACK FUNCTION !!!
End Sub
vb.net
Delegate Sub SYNCPRO(ByVal handle As Long, ByVal channel As Long, ByVal data As Long, ByVal user As IntPtr)
dim proc as New Un4seen.Bass.SYNCPROC(AddressOf SyncEndProc)
Public Sub SyncEndProc(ByVal handle As Integer, ByVal channel As Integer, ByVal data As Integer, ByVal user As IntPtr)
Me.Invoke(New System.Windows.Forms.MethodInvoker(AddressOf MusicEnd))
End Sub
Public Sub MusicEnd()
End Sub
این کد برای mp3 player هستش
که میگه اهنگ داره تموم میشه
کد بالا را نگاه کن
در ضمن تو فرم یک به جای hdc از handle خود فرم باید استفاده بکنی
و تو MusicEnd که کارش repeat shuffle اهنگ ها هستش
شماباید اینجوری بنویسی نصفش را خط های قرمز رو می بینی
کلا من نتونستم کاری بکنم
از دوستان دیگه کمک بگیر که بیشتر از من میدونن
حالا نمیشه بی خیال بشی
Reza,M
چهارشنبه 06 اردیبهشت 1391, 15:30 عصر
ضمن تشکر از xxnagin سایر دوستان و اساتید محترم نظری ندارند ؟:اشتباه:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.