PDA

View Full Version : سوال: شکل تعریف type جدید



mahboube
یک شنبه 23 خرداد 1389, 08:27 صبح
سلام دوستان
یکی به من می گه این تعریف رو تو C#‎ چطوری باید بنویسم:L)قسمته قرمزشو نمی دونم!!!!)

Private type RECT
Dim Left As Long
Dim Top As Long
Dim right As Long
Dim Botton As Long

End type

برای اجرای توابع api لازمش دارم.(یکی از ورودیشهاشون از نوع rect هست که نمی دونم چطوری تعریفش کنم؟؟!!!)ممنون.

gwbasic
یک شنبه 23 خرداد 1389, 13:24 عصر
private Type RECT;
long Top;

mahboube
یک شنبه 23 خرداد 1389, 13:50 عصر
private Type RECT;
long Top;


ممنون دوست عزیز
حالا چطوری باید از ش استفاده کنم؟
یعنی معادل این کد تو C# چی میشه؟
ByVal LprcForm As RECT,
چون خطا داد:
Error 1:'WindowsFormsApplication14.Form1.RECT' is a 'field' but is used like a TYPE

ممنون.

cardano7
یک شنبه 23 خرداد 1389, 14:12 عصر
ممنون دوست عزیز
حالا چطوری باید از ش استفاده کنم؟
یعنی معادل این کد تو C#‎ چی میشه؟
ByVal LprcForm As RECT,
چون خطا داد:
Error 1:'WindowsFormsApplication14.Form1.RECT' is a 'field' but is used like a TYPE

ممنون.

سلام داداش گل من
برای اینکه Type رو بشناسه باید ابتدای برنامه از

using System;
استفاده شده باشه(که معمولا خود #C اون رو به طور پیشفرض به ابتدای برنامه اضافه می کنه)
جسارتا، اگر #C نمی دونید لازم هست که بگم یادتون نره که #C به حروف بزرگ و کوچک هم حساسه.

cardano7
یک شنبه 23 خرداد 1389, 14:14 عصر
میشه کل تابع را در فروم قرار بدید؟

mahboube
یک شنبه 23 خرداد 1389, 18:17 عصر
میشه کل تابع را در فروم قرار بدید؟

دوست عزیز ممنون از توجه ات
من نوع رو تعریف کردم از TYpe الان نمی تونم چطوری ازش استفاده کنم.یعنی یه متغیر ازش تعریف کنم؟
فروم چی چیه؟
مشکلمم کو چیک بزرگ حرف نی.فقط میخام بدنم چطوری از نوعی که با type تعریف شده می شه استفاده کرد.

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

cardano7
یک شنبه 23 خرداد 1389, 18:59 عصر
فروم چی چیه؟
مشکلمم کو چیک بزرگ حرف نی.فقط میخام بدنم چطوری از نوعی که با type تعریف شده می شه استفاده کرد.


Sorry،
ببین این لینک کمکی می کنه؟
http://www.vbforums.com/showthread.php?t=560084

mahboube
دوشنبه 24 خرداد 1389, 08:12 صبح
Sorry،
ببین این لینک کمکی می کنه؟
http://www.vbforums.com/showthread.php?t=560084
ممنون cardano!
(تازه الان فهمیدم چی گفته بودی!!!)اگر با لینکه جواب نگرفتم کل تابع رو می زارم،خیلی از توابعapi از نوع TYPE استفاده می کنن.

ممنون از راهنماییت.

mahboube
دوشنبه 24 خرداد 1389, 08:49 صبح
میشه کل تابع را در فروم قرار بدید؟

این فراخوانی تابع هست تو vb:


Private Declare Function SetRect Lib "user32" (ByVal InRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

و این تعریف type:

Private type RECT
Dim Left As Long
Dim Top As Long
Dim right As Long
Dim Botton As Long

End type

واین شکلی تو C#‎ فراخوانی میشه:

[DllImport("user32.dll", EntryPoint = "SetRect")]

public static extern int SetRect(RECT LpRect, int X1, int Y1, int X2, int Y2);

کارش اینه که مقادیر فیلد های left,right,top ,bottom ازساختار rectرو مقدار دهی می کنه
(با مختصات یه چهارگوش مثلا فرم)
که نمی دونم به جای :


ByVal InRect As RECT

چی باید بزارم.ممنون.
(اگر از struct تعریف بشه مشکلی به وجود می یاد؟)

cardano7
دوشنبه 24 خرداد 1389, 13:03 عصر
یک سرچ کردم. تا اینجا که من فهمیدم باید تابع را این طوری اعلان کرد:

[DllImport("user32.dll")]
static extern long SetRect(out RECT lprc, int xLeft, int yTop, int xRight, int yBottom);

شما out را در لیست پارامتر ها ننوشته اید. البته مطمئن نیستم که نیاز باشه!

و RECT را هم این جوری تعریف کرد:


public struct RECT
{
public Int32 left;
public Int32 top;
public Int32 right;
public Int32 bottom;
}

اگه باز هم جواب نگرفتی خودت یک سرچ (http://www.google.com/search?hl=en&safe=off&client=opera&hs=3Bl&rls=en&q=c%23+SetRect+DllImport+%22user32.dll%22+Private+ type+RECT&aq=f&aqi=m1&aql=&oq=&gs_rfai=) بکن. معادل SetRect را در C#‎‎‎‎ را باید بتونی پیدا بکنی.