در درس اول ما یک برنامه نوشتیم، که البته یک نکته فراموش کردم و اون اینه که برنامه رو کجا اجرا کنید.
برید ویژوال سی 6 را اجرا کنید بعد برید منوی فایل
file new wein32 application an empty projectok
حالا ما یک فضای کاری داریم( workspace )
اینبار برید منوی فایل
file new c++ source file
یک اسم انتخاب و حالا تمام کد جلسه قبل رو اینجا توی این فایل جدید که باز شده کپی کنید
حالا کامپایل کنید و برنامه را اجرا کنید....
نکته دیگه اینکه اگر کد جلسه قبل به نظرتان به هم ریخته میاد مهم نیست کامل کپی کنید و نتیجه کارو براحتی بینید.
#include
//تعریف در رشته کارکتری
char achWndClass[] = "MIN:MAIN";
char achAppName[] = "Minimum";
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//هر برنامه وینوز دارای یک تابع به اسم WinMain است.( مثل برنامه های console که دارای تابع main است )
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
//وقتی برنامه اجرا می شود ویندوز اطلاعاتی درباره آن ئ نیز ارتباط با دیگر برنامه ها می دهد
// پارامتر های فید شده در WinMain بدین قرارند.
// hInstance به برنامه می گوید که او کیست. این در واقع یک عدد بی علامت یکتاست که خود از نوع HINSTANCE است
// نوع HINSTANCE در windows.h تعریف شده.
// hPrevInstance هم بدر صورت ارتباط با پنجره دیگر مقدار دارد وگرنه NULL است.
// lpCmdLine پارامتری های خط فرمان را می گوید
// nCmdShow وضعیت آغاز پنجره را اعمال می کند.
MSG msg;
HWND hWnd;
WNDCLASS wcex;
if( !hPrevInstance ){
wcex.style = NULL;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, "snapshot");
wcex.hCursor = LoadCursor(NULL, "hand");
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = 0;
wcex.lpszClassName = achWndClass;
RegisterClass(&wcex);
}
hWnd = CreateWindowEx(0L, achWndClass, achAppName,
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT,0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
برای امروز کافیست. شما می توانید برنامه را بصورت کامل کامپایل کنید و نتیجه را ببینید.
درباره سایر خطوط برنامه جلسه بعد بحث می کنیم.