#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;
}
برای امروز کافیست. شما می توانید برنامه را بصورت کامل کامپایل کنید و نتیجه را ببینید.
درباره سایر خطوط برنامه جلسه بعد بحث می کنیم.