PDA

View Full Version : سوال: گروهبندی کردن کنترلهای MFC



حسین محمدی
دوشنبه 27 مهر 1388, 12:37 عصر
سلام

می خواستم بدونم WS_GROUP چه ویژگی ای را به یک کنترل می دهد؟
و یک GROUPBOX اساسا یک static است و من چگونه می توانم چند تا Radio Button را توسط یک GROUPBOX گروهبندی کنم؟

اصلا گروهبندی چه مزیتی را بوجود می آورد؟

Nima_NF
دوشنبه 27 مهر 1388, 17:39 عصر
برای radio button ها مهم ترین کاربرد را دارد.
شما اولین radio button را حالت group قرار می دهید و از آن جا تا کنترل بعدی که group تعریف کنید همه در یک دسته قرار می گیرند.
شماره های ID هر کنترل که در فایل resource.h هست باید به ترتیب باشد تا مورد فوق درست عمل کند.

به این شکل شما می توانید برای اولین کنترل یک متغیر int تعریف کنید تا عدد انتخاب شده کنترل radio button در همان group به شما داده شود.
اگر مثلا 3 دسته متفاوت radio button دارید، اولین هر دسته را Group تعریف کنید و برای اولین کنترل همان group نیز یک متغیر تعریف کنید تا وضعیت همان دسته را به شما بدهد.

Nima_NF
دوشنبه 27 مهر 1388, 17:50 عصر
ضمنا به خاطر داشته باشید که خود کنترل Group Box قضیه دیگری هست، و تنها یک کنترل static برای شکل دادن به دیالوگ شما هست (مانند static Text) و عملا نگه دارنده نیست، بلکه برای دسته بندی ظاهری به کار می رود. برای گروه بندی باید از خاصیت group در properties برای کنترل مورد نظر استفاده کنید (آن را برای اولی true کنید).

حسین محمدی
سه شنبه 28 مهر 1388, 12:10 عصر
سلام

می تونید تغییراتی را که در فایل .rc اتفاق می افتد را بگویید که چه اتفاقی آنجا می افتد.

با قرار دادن کنترلها در Dialog در فایل resource به ترتیب چیده می شوند.

مثلا 5 تا radio button که قرار است 3 تای اول باید در یک گروه باشند و 2 تا دیگر در یک گروه دیگر

آیا باید کد من به این شکل باشد؟



GROUPBOX "Static",IDC_STATIC,39,21,100,65,WS_GROUP
CONTROL "Radio1",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | NOT WS_GROUP,53,39,38,10
CONTROL "Radio2",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON | NOT WS_GROUP,54,53,38,10
CONTROL "Radio3",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON | NOT WS_GROUP,53,67,38,10
GROUPBOX "Static",IDC_STATIC,39,95,103,75,WS_GROUP
CONTROL "Radio4",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON | NOT WS_GROUP,48,110,38,10
CONTROL "Radio5",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON | NOT WS_GROUP,51,126,38,10


در ضمن باید برای کدام کنترلها TabStop برابر true باشد؟

Nima_NF
سه شنبه 28 مهر 1388, 15:03 عصر
مجددا یک دور دیگر با دقت دو پست بنده را مطالعه کنید تا متوجه شوید. ذهنیت شما در مورد کنترل GROUPBOX اشتباه هست، GROUPBOX تنها یک کنترل برای زیبا کردن برنامه هست.
شما باید WS_GROUP را برای اولین radioButton در همان Group قرار دهید.

به این شکل:



GROUPBOX "Static",IDC_STATIC,39,21,100,65
CONTROL "Radio1",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,53,39,38,10
CONTROL "Radio2",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON ,54,53,38,10
CONTROL "Radio3",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON ,53,67,38,10

GROUPBOX "Static",IDC_STATIC,39,95,103,75
CONTROL "Radio4",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON | WS_GROUP,48,110,38,10
CONTROL "Radio5",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON ,51,126,38,10


در ضمن باید برای کدام کنترلها TabStop برابر true باشد؟ برای تمامی کنترل هایی که قصد دارید با زدن کلید tab بر روی آن ها جهش کنید. (یعنی برای همه radio button ها، برای کنترل های static نیاز نیست)