PDA

View Full Version : سوال: استفاده از توابع Api



babolsarcity
یک شنبه 21 آذر 1389, 18:45 عصر
سلام دوستان
می خواهم از تابع CreateWindowEx که برای ایجاد فرم های گرافیکی هست استفاده کنم
کدش را دارم



[DllImport("user32.dll", EntryPoint="CreateWindowEx", CharSet=CharSet.Auto, SetLastError=true)]
public static extern IntPtr IntCreateWindowEx(int dwExStyle, string lpszClassName, string lpszWindowName, int style, int x, int y, int width, int height, HandleRef hWndParent, HandleRef hMenu, HandleRef hInst, [MarshalAs(UnmanagedType.AsAny)] object pvParam);

فقط نیاز به راهنمایی و کمک شما دوستان دارم

mehdi.mousavi
یک شنبه 21 آذر 1389, 19:13 عصر
سلام.
چی باعث شده که بخواهید اینکارو انجام بدید؟ اگر می خواستید از سرویسی استفاده کنید که در حال حاضر معادل Managed اون وجود نداشت، من این سوال رو نمی پرسیدم.
اما الان، با این همه امکانات Windowing در .NET، دیگه چه نیازی به فراخوانی این Win32 API هستش؟

لطفا توضیح بدید.

موفق باشید.

babolsarcity
یک شنبه 21 آذر 1389, 20:14 عصر
شما درست میگید
با همون System.Drawing میشه خیلی راحت کار کرد
ولی برای درس برنامه سازی سیستم می خواهم که باید از توابع Api استفاده کنیم
با تشکر

mehdi.mousavi
چهارشنبه 24 آذر 1389, 10:27 صبح
شما درست میگید با همون System.Drawing میشه خیلی راحت کار کرد ولی برای درس برنامه سازی سیستم می خواهم که باید از توابع Api استفاده کنیم با تشکر

سلام.
درست استفاده کردن از این API ها، نیازمند دونستن نحوه کارکرد سیستم عامل Windows هستش. اگر قراره با Win32 API ها اینکارو کنید،
نیاز به یک Message Loop دارید که بتونید Message Queue رو پردازش کنید و پیامهای مورد نظر رو Dispatch کنید. فراخوانی این تابع به خودی
خود، کمکی به شما نمیکنه، بنابراین توضیحات من فقط مساله رو برای شما پیچیده تر خواهد کرد.

بطور کلی، کار این تابع ایجاد یه پنجره Overlapped، Popup، Child و ... هستش. پارامتر اول، Extended Window Style هستش که میتونه یکی
از این مقادیر (http://msdn.microsoft.com/en-us/library/ff700543%28v=vs.85%29.aspx) باشه. پارامتر دوم، اسم کلاسی هستش که توسط RegisterClass ثبت شده. به همین ترتیب، معنا و مقادیر معتبر هر پارامتر رو
میتونید در اینجا (http://msdn.microsoft.com/en-us/library/ms632680%28v=vs.85%29.aspx) مطالعه کنید. اما همونطور که گفتم، فراخوانی این تابع به خودی خود باعث نمایش پنجره ای روی صفحه نمیشه...

اگر واقعا به این علاقمند هستید، بهتون توصیه میکنم به کتاب Windows Programming نوشته آقای Charles Petzold رجوع کنید. این، یکی از
بهترین (اگر نگم بهترین) کتبی هستش که شما رو با زیر و بم نحوه کار کردن با Win32 API ها آشنا میکنه.

موفق باشید.

babolsarcity
یک شنبه 28 آذر 1389, 10:53 صبح
دوست عزیز طبق راهنمایی شما عمل کردم ولی با مشکل برخوردم
لطفا راهنمایی بفرمایید
با تشکر