پارامترهای توابع CreateWindows در api

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
میخوام با آرگومان های توابع برای ساخت ویندوز آشنا بشم ؛ حالا خودم در حال خوندن و بررسی پارامترهاش هستم ولی هر کس نکته ای ، چیزی میدونه که بگه و کار و درکم نسبت به این آرگومان ها رو بازتر و بهتر کنه ممنون میشم
منظورم توابع هایی مثل زیر هست :

https://msdn.microsoft.com/en-us/library/windows/desktop/ms632680(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644898(v=vs.85).aspx

مخصوصا آرگومان های dwExStyle و dwStyle

سئوال های دیگه هم که اینا هستن و جواب بگیرم (روشن تر شه برام) که خیلی بهتر میشه :

اینکه فرق توابع CreateWindowEx و CreateWindow چی هستن؟
اینکه فرق فرم (ویندوز) های overlapped و pop-up و child چی هستن؟ مثلا اگه بخوایم یه فرم معمولی درست کنیم (همون فرمی که بصورت پیش فرض توی سی شارپ ویژال استودیو برامون درست میکنه) ، کدوم یک از این 3 تا و کدوم یک از توابع بالا رو باید بکار ببریم؟
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
اگه درست متوجه شده باشم ، برای ساخت فرم جدید (با همون توابعی که لینک دادم) ، ExStyle (آرگومان اول) ضروری نیست ولی آرگومان چهارم که Style هست ، ضروری هست
درسته؟
حالا درباره آرگومان دوم که نام کلاس هست ، نمیدونم یه فرم معمولی ، نام کلاس اش رو چی بدم؟
 

the_king

مدیرکل انجمن
سلام
میخوام با آرگومان های توابع برای ساخت ویندوز آشنا بشم ؛ حالا خودم در حال خوندن و بررسی پارامترهاش هستم ولی هر کس نکته ای ، چیزی میدونه که بگه و کار و درکم نسبت به این آرگومان ها رو بازتر و بهتر کنه ممنون میشم
منظورم توابع هایی مثل زیر هست :

https://msdn.microsoft.com/en-us/library/windows/desktop/ms632680(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644898(v=vs.85).aspx

مخصوصا آرگومان های dwExStyle و dwStyle

سئوال های دیگه هم که اینا هستن و جواب بگیرم (روشن تر شه برام) که خیلی بهتر میشه :

اینکه فرق توابع CreateWindowEx و CreateWindow چی هستن؟
اینکه فرق فرم (ویندوز) های overlapped و pop-up و child چی هستن؟ مثلا اگه بخوایم یه فرم معمولی درست کنیم (همون فرمی که بصورت پیش فرض توی سی شارپ ویژال استودیو برامون درست میکنه) ، کدوم یک از این 3 تا و کدوم یک از توابع بالا رو باید بکار ببریم؟

اگه به زبان ++C برنامه نویسی نمی کنید که ذاتا به همین شکل برنامه نویسی میشه از بکار بردن این توابع تا حد امکان اجتناب کنید چون مدیریت پنجره و رخدادهاش با چند خط کد عملی نیست.

CreateWindowEx کاملتر از CreateWindow ئه و Style های بیشتری رو می شناسه، معمولا در API یک تابع قدیمی رو اینطوری ارتقاء می دهند که تابع کاملتر اون پسوند Ex رو داره.

Overlapped پنجره عادی ویندوز ئه، پنجره ای که برنامه بصورت فرم بکار می بره. Pop-up پنجره ای ئه که موقتا و بیرون کادر فرم اصلی نمایش داده میشه، مثل MessageBox یا کادر Notification و ...
Child فرزند یک پنجره دیگه است، مثلا دکمه یا پنل ای که روی فرم قرار می گیره.
 

the_king

مدیرکل انجمن
اگه درست متوجه شده باشم ، برای ساخت فرم جدید (با همون توابعی که لینک دادم) ، ExStyle (آرگومان اول) ضروری نیست ولی آرگومان چهارم که Style هست ، ضروری هست
درسته؟
حالا درباره آرگومان دوم که نام کلاس هست ، نمیدونم یه فرم معمولی ، نام کلاس اش رو چی بدم؟

چیزی به نام غیر ضروری نداریم، اگر جایی در MSDN صریحا ننوشته باشه که فلان پارامتر می تونه null یا 0 باشه، مقداری که داخلش می نویسید مهمه.
ExStyle استایل توسعه یافته پنجره است، شما هر مقداری (مثلا صفر) بهش بدهید ممکنه با چند استایل داخلش مطابقت داشته باشه، یعنی اونها انتخاب بشه.
مثلا مقادیری مثل WS_EX_LEFT و WS_EX_LTRREADING و WS_EX_RIGHTSCROLLBAR صفر ئه و با همون صفر انتخاب می شوند.
نام کلاس برای اینه که سایر برنامه ها بتوانند پنجره هایی که با یک کلاس خاص مطابقت دارند رو تفکیک کنند، اگه پنجره شما با استاندارد های کلاس ای مطابقت نداره بهتره که null در نظر بگیرید
تا اینکه وانمود بشه مطابقت فلان کلاس ئه، در حالی که نیست.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
Child فرزند یک پنجره دیگه است، مثلا دکمه یا پنل ای که روی فرم قرار می گیره.

بازم ممنون استاد علی
یعنی چی؟
یعنی اینکه بخوایم دکمه و یه شی دیگه درست کنیم ، از همین تابع با تغییر دادن اش به پنجره ی فرزند ، میتونیم دکمه و ... ایجاد کنیم؟
برای ساخت اشیاهای دیگه (بصورت api) از چه تابعی استفاده میکنن؟ اشیایی مثل شی درخت و دکمه و خیلی های دیگه


چیزی به نام غیر ضروری نداریم، اگر جایی در MSDN صریحا ننوشته باشه که فلان پارامتر می تونه null یا 0 باشه، مقداری که داخلش می نویسید مهمه.
ExStyle استایل توسعه یافته پنجره است، شما هر مقداری (مثلا صفر) بهش بدهید ممکنه با چند استایل داخلش مطابقت داشته باشه، یعنی اونها انتخاب بشه.
مثلا مقادیری مثل WS_EX_LEFT و WS_EX_LTRREADING و WS_EX_RIGHTSCROLLBAR صفر ئه و با همون صفر انتخاب می شوند.
نام کلاس برای اینه که سایر برنامه ها بتوانند پنجره هایی که با یک کلاس خاص مطابقت دارند رو تفکیک کنند، اگه پنجره شما با استاندارد های کلاس ای مطابقت نداره بهتره که null در نظر بگیرید
تا اینکه وانمود بشه مطابقت فلان کلاس ئه، در حالی که نیست.

نمیدونین کلا نام کلاس فرم های معمولی رو چی باید وارد کرد؟
 

the_king

مدیرکل انجمن
بازم ممنون استاد علی
یعنی چی؟
یعنی اینکه بخوایم دکمه و یه شی دیگه درست کنیم ، از همین تابع با تغییر دادن اش به پنجره ی فرزند ، میتونیم دکمه و ... ایجاد کنیم؟
برای ساخت اشیاهای دیگه (بصورت api) از چه تابعی استفاده میکنن؟ اشیایی مثل شی درخت و دکمه و خیلی های دیگه

کلا تمامی کنترل هایی که پنجره دارند به همین نحو ایجاد می شوند. فرضا کلاس دکمه ویندوز "BUTTON" ئه، این همون پارامتری ئه که نام کلاس رو مشخص می کنه.
اما در نظر بگیرید که قابلیت ها و امکانات پنجره به مدیریت پنجره بستگی داره که با کد نویسی انجام می دهید.


نمیدونین کلا نام کلاس فرم های معمولی رو چی باید وارد کرد؟
هر چیزی که خودتان می خواهید، سوال تون مثل اینه که بپرسید اسم کلاس جدید ام رو چی باید بذارم. فرم معمولی همون پنجره است، اسم کلاس خاصی نداره و کلا اسم کلاس های پیشفرض سیستم تعداد محدودی ئه.

About Window Classes
 

جدیدترین ارسال ها

بالا