PDA

View Full Version : ایجاد فرم بدون کد نویسی در win32



DLL_DLL
سه شنبه 12 آبان 1388, 21:04 عصر
واسه گذاشتم component ها روی فرم اولیه در win32 باید کد بنویسیم! اگه این حرفم درسته

سوالی داشتم .
اینکه چطوری میتونیم بدون کد نوشتم کاپوننت ها رو بصورت drag and drop روی فرم اصلی بذاریم

و راهی داره که کلا اون فرمی که توسط کد نویسی ایجاد میشه را نداشته باشم و توسط resouce dialog ها از ابتدای کار شروع کنیم؟

hosseinkhosravi
چهارشنبه 13 آبان 1388, 10:10 صبح
در برنامه نویسی win32 راهی برای drag and drop کردن ندارید. اگر می خواهید چنین قابلیتی داشته باشید، به سمت MFC (http://p30codenevis.ir/cpp-programming/108-mfc-examples-part1.html) مهاجرت کنید که کتابخانه ای است بر فراز APIی ویندوز یا همان win32.

DLL_DLL
چهارشنبه 13 آبان 1388, 14:41 عصر
دوست من راه برای Drag And Drop داریم. شما زیاد نرفتیم سمتش !
اما واسه فرم اول نداریم. من میخواستم راهی را پیدا کنم.برای اینکار.
این هم یک عکس از Designer در محیط win32 .

Nima_NF
چهارشنبه 13 آبان 1388, 16:15 عصر
و راهی داره که کلا اون فرمی که توسط کد نویسی ایجاد میشه را نداشته باشم و توسط resouce dialog ها از ابتدای کار شروع کنیم؟
در win32 دو چیز داریم یکی پنجره ( window) که همانند دیالوگی هست که داخل آن فقط یک صفحه سفید برای طراحی هست. و یکی دیگر خود dialog .

اگر برنامه شما نیازی به client area (همان قسمت سفید برای طراحی ها و نقاشی هاس سفارشی) ندارد، کلا یک تابع main بنویسید و مستقیم با CreateDialog یا CreateDialogParam دیالوگ را فراخوانی کنید تا دیالوگ اصلی برنامه شما باشد. سایر کدها که برای ساخت پنجره می باشد را حذف کنید.

نمونه مثال در اعلان همین بخش (برنامه های کوچک و کاربردی VC++) قرار داده ام، با نام mouse speed مشاهده کنید.

DLL_DLL
پنج شنبه 14 آبان 1388, 13:24 عصر
من نمیدونم تا چقدری به کدهای از پیش نوشته شده نیاز ندارم.
میشه این فایل را نگاه کنید و بگید چی کار کنم؟:اشتباه:

Nima_NF
شنبه 16 آبان 1388, 00:29 صبح
لطفا مثالی که گفتم را دانلود کنید و مطالعه کنید. ساده ترین مثال ممکن هست.

قالب برنامه این طور هست (همه کد نویسی هست، و فقط دیالوگ را باید با نمای طراحی بسازید):



int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

hInst = hInstance;

DialogBox(hInstance, MAKEINTRESOURCE(IDD_MOUSESPEED_DLG1),
hWnd, (DLGPROC)DlgProc);

return FALSE;
}


سپس به جای تابع پنجره، تابع پردازش موارد مورد نسیاز دیالوگ را بنویسید:



INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);


switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
return (INT_PTR)TRUE;
}
break;
}

return (INT_PTR)FALSE;
}


بقیه توابع همگی برای پنجره هستند که نیاز ندارید و باید حذف شوند.

در win32 باید خودتان کدهای اولیه و نمایش دیالوگ و پنجره را به شکل فوق اضافه کنید و بنویسید.