جلوی اون خط هم یه L گذاشتم درست شد:
این L دقیقا چی کار می کنه؟کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
جلوی اون خط هم یه L گذاشتم درست شد:
این L دقیقا چی کار می کنه؟کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ایکارو باید بعد اینکه اون تنظیماتی که در مورد Character Set گفتم انجام بدین. در غیر اینصورت L رو به رشته اضافه میکنیدنوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
LPSTR و * char همونطور که گفتین یکی هستن. حالا چرا من به این شکل استفاده کردم بیشتر بر حسب عادت بوده دلیل خاصی نداره.
بله حق با شماست. در این حالت چون lpszClassName به صورت LPCSTR تعریف شده میشه مستقیم رشته رو وارد کردنوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
L هم نشون میده رشته از نوع یونیکد هست.
منظورم این نبود که چرا به جای * char، از LPCSTR استفاده می کنید! من قبلا تو visual c++ 6 یه اسمی رو define می کردم:
بعد WinClassName رو به lpszClassName نسبت می دادم:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یعنی اینجا به LPCSTR تبدیل نمی کردم!کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
درست منظورتون رو از جمله آخر که گفتین "یعنی اینجا به LPCSTR تبدیل نمی کردم!" رو متوجه نشدم. چی رو تبدیل میکردین؟نوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
مهم اینه که lpszClassName به صورت LPCSTR تعریف شده و شما میتونید رشته رو داخل کد به صورت مستقیم
هم اختصاص بدین حالا فرقی نداره رشته قبلا به چه شکل تعریف شده باشه.
خیلی ممنون. یه چیزی رو قاطی کرده بودم الان فهمیدم.
Last edited by amsjavan; 10-09-2008 at 11:46.
سلام دوستان
من تازه برنامه نویسی ویندوز با C++ رو شروع کردم!
اولشم می خوام با نوشتن یه dll نوع win32 ساده و بعد نوشتن یه Application که تابع نوشته شده تو dll رو صدا می زنه،شروع کنم!
یه نمونه کد هم پیدا کردم که یه dll ساده اس به اضافه کدهایی که اتصال پویای load-time و run-time رو پیاده سازی کردن و چند کاربرد دیگه!
اون نمونه کدها رو هم تو یه فایل notpad اینجا آپ کردم:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من برای dll یه workspace تو محیط win32 cosole application ایجاد کردم و کدشو اونجا کپی کردم،می خواستم بدونم برای توابع load-time یا run-time باید یه workspace جدید ایجاد کنم یا تو همون workspace مربوط به dll باید باشن!
اگه ممکنه طریقه build کردن این کدها رو واسم توضیح بدین،چون من اصلاً تجربه ای در زمینه نوشتن کد dll و اجرای اون ندارم!
در ضمن تا حالا شده که یه نمونه کد csp رو کامپایل و اجرا کنین؟
سه تا سوال کوچیک هم داشتم،
لطفاً توضیحی در مورد،LPTSTR ،Instance و Handle بدین؟!
و نهایتاً اینکه آیا تو کتابخونه ی msdn در مورد syntax و دستورات زبان ویندوزی تو C++ توضیحی داده شده؟
با کمال تشکر
Last edited by bahareh655; 24-09-2008 at 00:25.
برای ساخت dll در کامپایلر ++VC نسخه 2005 اول یه پروژه win32 Project یا win32 console application رو انتخاب میکنید تو صفحه ظاهر شده
گزینه DLL رو بزنید که مشخص بشه پروزه از نوع dll هست.
به عنوان مثال فایهای dll.cpp و dll.h رو ایجاد کنید به این صورت. بعدم کامپایل کنید تا dll درست بشه
dll.h
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
dll.cpp
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ما یه تابع ShowMsg ایجاد کردیم که یه پیام نشون بده، حالا برای استفاده میتوینم از توابع LoadLibrary و GetProcAddress استفاده کنیم
یا به این صورت راحتتر به این صورت در میاد
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اون سه سوال هم تو MSDN توضیحای داده، ولی بصورت خلاصه اینجوری میشه گفت
HANDLE : برای کار با اشیاء مثلها فایهال و پروسه ها و ... احتیاج به جور حق دسترسی یا حالا هر چی بشه اسمشو گزاشت هست که بهش هندل میگن
LPTSTR : قسمت LP همون اشاره گر هست، T وقتی پروژه رو بخوان هم بصورت اسکی و یونیکد بدن از این استفاده میکنن
و STR هم که معلومه رشتس که اگه T رو در نظر نگیریم معادل این میشه
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در مورد سوال آخر مثالهایی که MSDN داره بیشتر ترکیب C و win32 api هست.
ولی اگه ترکیب api ها با کلاسهای ++C رو بخواین این سایت رو بد نیست ببینید.
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در مورد csp هم اطلاعی ندارم
شاد باشید
سلام
ضمن عرض تشکر بابت جواب کامل به سوالاتم
به چند تا مشکل برخوردم که اگه بازم لطف کنید و پاسخ بدید،ازتون ممنون میشم!
برای ساخت dll در کامپایلر ++VC نسخه 2005 اول یه پروژه win32 Project یا win32 console application رو انتخاب میکنید تو صفحه ظاهر شده گزینه DLL رو بزنید که مشخص بشه پروژه از نوع dll هست.
راستش من از Visual C++ 6 استفاده می کنم!
بعد از انتخاب win32 console application ،تو صفحه بعد گزینه ای مبنی بر انتخاب dll وجود نداره،شکل های زیر:
به عنوان مثال فایهای dll.cpp و dll.h رو ایجاد کنید به این صورت. بعدم کامپایلکنید تا dll درست بشه
اگه منظورتون این بوده که اول یه فایل با نام dll.cpp از نوع C++ Source File مثل شکل پایین ایجاد کنم و دوباره یه صفحه جدید از این نوع،این بار با اسم dll.h ایجاد کنم و کدهای مربوطه رو تو صفحات کپی کنم و بعد کدها رو Build کنم،این کارا رو کردم،ولی فایل dll ساخته نشد تا اونو تو دایرکتوری system ویندوز کپی کنم و بعد با یه کد دیگه اونو فراخونی کنم و فقط فایل .lib ایجاد شد!
در ضمن موقع کامپایل کردن هم با این لینک ارورها مواجه شدم:
کد:
میشه در مورد این دو تا خطا توضیح بدین که علت بوجود اومدنشون چیه؟کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
وقتی که کد بالا رو هم تو یه صفحه دیگه کپی و اجرا می کنم،میگه: "dll.lib " رو نمی تونه باز کنه!
من حتی واسه این کد یه workspace جدیدم ایجاد کردم و بعد از اجرا،دوباره می گفت نمی تونه "dll.lib " رو باز کنه!
اگه ممکنه در مورد اینکه : اصلاً این کد چه توی یه صفحه جدید از همون workspace و چه توی یه workspace جدید ایجاد بشه، چه طوری(طی چه عملیاتی) می تونه فایل "dll.lib " رو پیدا کنه،توضیح بدین!
در مورد HANDLE : برای کار با اشیاء مثلها فایهال و پروسه ها و ... احتیاج به جور حق دسترسییا حالا هر چی بشه اسمشو گزاشت هست که بهش هندل میگنLPTSTR : قسمت LP هموناشاره گر هست، T وقتی پروژه رو بخوان هم بصورت اسکی و یونیکد بدن از این استفادهمیکنن و STR هم که معلومه رشتس که اگه T رو در نظر نگیریم معادل این میشه
توضیحاتتون در مورد این دو تا خیلی کامل بود،فقط می خواستم بدونم که instance یه شی ای از هر نوع داده می تونه باشه یا خودش یه DataType هستش؟
در مورد سوال آخر مثالهایی که MSDN داره بیشتر ترکیب C و win32 api هست.
ولی اگه ترکیب api ها با کلاسهای ++C رو بخواین این سایت رو بد نیست ببینید.
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من کتاب "C++ in action " رو تو این سایت دیدم،یکی از فصلاش با عنوان "Windows techniques " بود،منظورتون این فصله؟
یه نگاه کلی بهش انداختم،می خواستم بدونم Syntax ها رو کامل توضیح داده؟ شما این فصلو کامل خوندین؟
در ضمن یه کتابخونه ی ویندوز هم نوشتن با عنوان "RSWL "،من دانلود و نصبش کردم،تو توضیحاتش اومده که: نمونه کدهای ویندوزی از جمله DLL رو داره.شما هم نمونه کدهاشو مطالعه فرمودین؟
شاد باشید
شما هم همینطور!
بازم از اینکه وقت می ذارین و اینقدر کامل به سوالات پاسخ می دین،ازتون تشکر می کنم
Last edited by bahareh655; 01-10-2008 at 18:34.
سلام amsjavan !
با توجه به پست های قبلی تون،شما ظاهراً برنامه نویسی ویندوزو از روی کتاب دارین دنبال می کنین!
می خواستم لطف کنین اسم اون کتابو (در مورد برنامه نویسی ویندوز با C++ )یا اگه کتاب دیگه ای سراغ دارین،معرفی کنین که تمام دستورات رو از اول و کامل توضیح داده باشه و مطالبی در مورد درایور نویسی،dll نویسی و نوشتن wrapper داشته باشه!
می دونم msdn مرجع کاملیه،ولی ترجیح می دم از روی کتاب کار کنم!
ممنون
نوشته شده توسط hoax3r [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]من ورژن 2001 اش رو دارم،ولی هم قدیمیه و هم بعضی جاهاش درست نصب نمی شه!
ببخشید شما گفتید برای تغییر دادن کامپایلر در مورد UNICODE در نظر گرفتن رشته ها،راه اول اینه که بریم تو منوی Project و ...
راستش تو منوی Project من هم چین چیزی وجود نداره،می خواستم ببینم برای تغییر تنظیمات کامپایلر باید کار دیگه ای بکنم یا جای دیگه ای برم؟!
(من از VC++ 6 استفاده می کنم!)
ممنون میشم اگه راهنماییم کنین.
در ضمن برنامه msdn رو میشه از خود سایت مایکروسافت دانلود و نصب کرد؟!
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)