PDA

View Full Version : چند تا سؤال در مورد ویژوال سی



mousamk
دوشنبه 30 مرداد 1385, 12:43 عصر
با سلام خدمت همه اساتید محترم
من ویژوال سی را تازه شروع کرده‌ام و زیاد بلد نیستم. چند تا سؤال ساده دارم که از دوستان خواهشمندم کمکم کنند.

1) برای بستن برنامه در ویژوال سی باید چه دستوری بنویسیم؟ یعنی فرض کنید می‌خواهیم برای مورد Exit در منوی File کد بنویسیم.
2) برای تغییر ابعاد فرم باید چکار کنیم؟ (برنامه از نوع Dialog Based است.)
3) نوع BOOL با نوع bool و همچنین TRUE و FALSE با true و false چه تفاوتی دارند؟ آیا مثلاً در تابعی که متغیری از نوع BOOL می‌خواهد، می‌توانیم true یا false بنویسیم؟
4) چگونه می‌توانیم محدوده تابع rand() را کنترل کنیم؟ مثلاً من می‌خواهم فقط اعداد صحیح تصادفی در بازه 10 تا 30 تولید کنم!
5) فرض کنیم یک تصویر Bitmap در ویژوال سی با نام IDB_BITMAP1 داریم. چگونه می‌توانیم این تصویر را در مختصات مشخصی در روی پنجره محاوره رسم کنیم؟ (برنامه از نوع Dialog Based است.)
6) چگونه می‌توانیم یک تصویر Bitmap را که در ویژوال سی هست هنگام برنامه‌نویسی به چند تقسیم کنیم. مثلاً می‌خواهم چند تا تصویری را که برای دکمه‌های تولبار در نظر گرفته‌ام به همدیگر بچسبانم و به عنوان یک عکس وارد ویژوال سی کنم. بعد هنگام اجرای برنامه عکس رو به چند قسمت تقسیم کنم و روی دکمه‌ها بذارم.

یک سؤال هم در مورد Visual C++.Net داشتم:

1) وقتی برای یک پنجره محاوره، زبان فارسی و یا Farsi را انتخاب می‌کنم، کلمات درست نشان داده نمی‌شوند و به صورت علامت سؤال در می‌آیند. حتی وقتی زبان Arabic را انتخاب می‌کنم، باز هم مشکل وجود دارد. راه حل چیست؟

منتظر کمک دوستان هستم.

mousamk
دوشنبه 30 مرداد 1385, 16:54 عصر
ای بابا! جون من یکی بیاد کمکم کنه. آخه این سؤال‌ها که من پرسیدم سخت نیستن که:گریه:

منتظر توجه دوستان هستم:متفکر:

sh_roohani
دوشنبه 30 مرداد 1385, 19:38 عصر
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_close.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/movewindow.asp
BOOL در ++VC ، در wtypes.h به صورت typedef long BOOL; و در windef.h به صورت typedef int BOOL; تعریف شده، ولی bool نوع primitive زبان ++C هست. می شه اون دو تا رو به هم cast کرد. ولی در ++VC یه warning می گیری که به علت اختلاف اندازه این دو نوعه. البته اگه اذیتت می کنه، می تونی اونو با pragma warning غیر فعال کنی.

min + (max - min) * rand() / (double)RAND_MAX + 1.0 این روشیه که من معمولا کار می کنم.
و
در هر دوی این موارد راحت ترین راه اینه که با LoadBitmap اونو Load کنید، بعد با SelectObject اونو وارد یه DC کنید، بعد با BitBlt تمام یا بخشی از اونو به DC مقصد کپی کنید.در مورد زبان هم مشکل من با تغییر locale پیش فرض ویندوز به ایران و فارسی حل شد.

mousamk
دوشنبه 30 مرداد 1385, 22:20 عصر
خیلی ممنونم دوست عزیز.

mousamk
سه شنبه 31 مرداد 1385, 10:11 صبح
یک سؤال دیگه هم داشتم که امیدوارم دوستان کمک کنند.

در ویژوال سی باگی وجود دارد که وقتی برای یک کادر محاوره مورد Right to left layout رو فعال می‌کنیم، خود وی‌سی ثابت WS_EX_LAYOUT_RTL را به ویژگی‌های فرم در فایل rc اضافه می‌کند. ولی هنگام کامپایل کردن خطا می‌دهد که این عبارت ناشناخته است.

من خودم در اینترنت جستجو کردم و بالاخره یافتم که برای حل این مشکل می‌توانیم عبارت زیر را در فایل rc بنویسیم تا مشکل حل شود:

#define WS_EX_LAYOUT_RTL 0x00400000L

ولی این روش هم یک مشکلی دارد و آن هم این که هنگامی که یک resource جدیدی به پروژه اضافه می‌کنیم و وی‌سی فایل rc را ویرایش می‌کند، کد اضافه شده ما را حذف می‌کند و بنابراین هر دفعه مجبوریم آن را بنویسیم.

حالا آیا راه حل بهتری برای این مشکل وجود دارد؟

sh_roohani
چهارشنبه 01 شهریور 1385, 11:00 صبح
سلام،
اولا شما این ثابت رو در یه هدر فایل تعریف کنید، چون همونطور که خودتون هم فرمودین ویژوال سی خودش فایل rc رو بر می گردونه به یه شکل استاندارد.
بعدش هم ممکنه بدونم شما در چه نسخه ای کار می کنید؟ در ویژوال استودیو 2003 برای من به سادگی کامپایل می شه. البته تا اونجایی که یادم میاد در ویژوال استودیو 6 کامپایل نمیشد.

mousamk
چهارشنبه 01 شهریور 1385, 19:19 عصر
باز هم ممنونم از کمکتون.
من از ویژوال استودیو 6 استفاده می‌کنم. البته می‌خوام بعد از این از Visual C++.Net استفاده کنم.

alireza643
پنج شنبه 02 شهریور 1385, 09:16 صبح
http://www.programmersheaven.com/
http://www.cprogramming.com/tutorial.html