PDA

View Full Version : CreateWindow



meysam_meysam74
جمعه 16 فروردین 1387, 18:07 عصر
salam be hame
ba en tabe(CreateWindow) meshe ye form ro create kard toye ye barname vc++ na mfc ye barnme win32
hala man mikham ba en tabe ye dialogi ro ke gablan tarahi kardam ro neshon bedam na ye forme sefid midonam ke en kar shodani hast vali nemidonam che jori
man mikham hamon form avli ke bala meyad formi bashe ke man tarahi kardam
:لبخندساده:

Sharif Lotfi
جمعه 16 فروردین 1387, 19:31 عصر
اگه منظور شما رو درست متوجه شده باشم . شما باید از Open Project استفاده کنید (برای انتخاب پروژه هایی که قبلاً کار شده) نه از Create Project (که برای ایجاد یه پروژه جدید بکار میره)
اگر هم منظورتون وقتیه که در حال حاضر یه پروژه ایجاد کردین و میخواین یه پروژه دیگه رو ایجاد و به پروژه فعلیتون اضافه کنین ، در حالتی که پروژه فعلیتون بازه Create Project رو که زدین ، پایین پنجره انتخاب نام و ... یه گزینه اضافه میشه بنام Solution که جلوش یه کامبوباکسه که دو حالت New و Add to Solution داره.
اگرم منظورتون اضافه کردن یه فرم یا فایل و ... که از قبل موجوده به پروژه فعلیتونه در پانل سمت راست (Solution Explorer) راست کلیک-Add - Existing Item رو انتخاب و فایل مورد نظر رو به پروژتون اضافه کنین.
دیگه فکر نمیکنم حالتی مونده باشه .
-----
ضمناً لطفاً قوانین سایت رو محترم بدونین و فینگلیش تایپ نکنین چون کسی حوصله خوندنش رو نداره و خدای نکرده ممکنه کسی جوابتونو نده و کارتون راه نیفته. ممنون

A_Salimi
جمعه 16 فروردین 1387, 20:34 عصر
چیزی که من متوجه شدم اینه :

احتمالا چند دیالوگ دارید در یک برنامه که در هنگام بارگذاری در برنامه اصلی میخواهید دیالوگی که خودتان میخواهید نمایش داده شود . خوب یه راه سریع (و البته نه چندان جالب از لحاظ برنامه نویسی ) اینه که visible دیالوگ اصلی رو FALSE کنید (مثلا در OnInitDialog) و دیالوگ خودتان را نمایش دهید (modal یا modless)و در زمان لازم visible دیالوگ اصلی رو TRUE کنید.




GetDlgItem(آیدی دیالوگ اصلی)->ShowWindow(SW_SHOW | SW_HIDE)




قانون شماره 11
همانطور که از عنوان سایت پیداست اینجا یک سایت فارسی زبان است، بنابراین کلیه مطالبی که در سایت مطرح می شوند می بایست به زبان فارسی نوشته شوند، مگر مطالبی که از یک منبع خارجی که به زبان دیگری است نقل قول شود. ارسال مطالب به زبان ساختگی Fingilish ( متونی که در آنها عبارات فارسی با کاراکترهای انگلیسی نوشته می شوند – برای مثال عبارت "سلام" به صورت "salam" نوشته می شود ) نیز اکیداً ممنوع می باشد.

Nima_NF
جمعه 16 فروردین 1387, 23:03 عصر
در ابتدا لطفا پست اول را به فارسی تغییر دهید.

تابع CreateWindow یک پنجره می سازد که خواص آن متفاوت از یک dialog هست.

برای نمایش دیالوگ پیش ساخته خودتان نباید از CreateWindow کنید، بلکه باید از توابع مربوط به دیالوگ ها استفاده کنید:
CreateDialog
CreateDialogParam

در نتیجه تابع پردازش پیام ها نیز متفاوت است یعنی در قالب DialogProc می باشد .

موفق باشید

meysam_meysam74
شنبه 17 فروردین 1387, 05:26 صبح
خوب ببخشید بابت لنگوگ ویندوزم مشکل داشت

سلام به همه
این برنامه برنامه ام اف سی نیست یه برنامه وین 32 و از تابع هایه ام اف سی هم استفاده نمیکنه
من می خواستم ببینم که میشه با تابع Create windowsمیشه دیالگی رو که خودم طراحی کردم رو نشون بدم نه یه فرم سفید

خوب ظاهرا جواب منفی هست
خوب من می خواستم ببینم که اگه من یه button رویه فورم خدم بزارم یه msg برایه من تویه تابعی که تعریف کردم میاد مثلا همون WM_DESTROY ]چه روالی برایه من فرستاده میشه ممنون
یا اگه یه تکس باکس بسازم با تغیر متن تکس باکس چه روالی تویه تابعی که من برایه اون دیالوگ تعریف کردم میاد و برایه دست رسی به تکس اون تکس باکس باید از چه تابعی استفاده کنم
ممنون

meysam_meysam74
شنبه 17 فروردین 1387, 08:56 صبح
CreateDialog بعدشم این تابع یه HWND می خواد که می تونیم اونو NULL بدیم ولی ما باید HWND دیالوگ خدمنون چه جوری به دست بیاریم

meysam_meysam74
شنبه 17 فروردین 1387, 10:10 صبح
http://www.2shared.com/file/3094659/9854e0cf/test3.html
این یه سورس هست اما کار نمیکنه
مشه بگین مشکل کار کجاست ؟

hoax3r
شنبه 17 فروردین 1387, 14:08 عصر
مشکل برنامتون اینه که شما دوباره برای IDD_DIALOG1 یه عدد جدید تعریف کردین در حالی
که اگه فایل resource.h رو باز کنید میبینید که قبلا با مقدار 101 تعریف شده

پس اگه این خط رو پاک کنید


#define IDD_DIALOG1 100


و خطی که DialogBox اجرا میشه به این تغییر بدین برنامه درست کار میکنه



DialogBox(hInstance,(LPCTSTR)101,NULL,(DLGPROC)Abo ut);


شاد باشید

Nima_NF
شنبه 17 فروردین 1387, 15:46 عصر
http://www.2shared.com/file/3094659/9854e0cf/test3.html
این یه سورس هست اما کار نمیکنه
مشه بگین مشکل کار کجاست ؟


اشکال کار در اینجاست که شما فایل resource.h را اصلا به پروژه خودتان اضافه نکرده اید، چرا که این فایل (پس از زدن کلید کامپایل) حاوی سایر اطلاعات منابع دیالوگ شما خواهد شد شامل Icon و ... و باید همراه فایل rc شما باشد.
پس آن را به برنامه اضافه کنید و در بالای فایل cpp اصلی نیز هدر آن را اضافه کنید و تعریف مجدد ID دیالوگ را از همین صفحه پاک کنید (همه ID ها در همان فایل .h باشد):



#include "resource.h"

ضمنا برای ID به این شکل بنویسید:



DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1) ,NULL , (DLGPROC)About);


فیلد سوم هم زمانی کاربرد دارد که برنامه شما وابسته به پنجره یا دیالوگ دیگری هست.

meysam_meysam74
شنبه 17 فروردین 1387, 19:25 عصر
ممنون مشکل حل شد
این پروژه یه پروژه خالی بود من خودم تابع ها رو از این ور اون ور اوردم توش اصلا فیلی به اسم "resource.h" براش تعریف نکردم ظاهران خوده کامپایلر این فایلو درست میکنه و در موقع کامپایل ازش استفاده می کنه چون من هیچ define برایه ایدی دیالوگم نداشتم یه براش یه عدد تعریف کدرم .