您的位置:首页 > 编程语言 > C语言/C++

MFC 初步:写一个带窗口的Windows程序

2015-11-06 16:03 447 查看
    新建一个Win32 Application项目,输入以下代码,完成一个简单的带窗口的Windows程序。

#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);

int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);
wndcls.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WinProc;
wndcls.lpszClassName = L"Test";
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);

// Create the window
HWND hwnd = CreateWindow(L"Test", L"http://test.org", WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL);

// Show and update the window
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);

// Message
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WinProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf_s(szChar, "char code is %d", wParam);
MessageBox(hwnd, (LPCWSTR)szChar, L"char", 0);
break;

case WM_LBUTTONDOWN:
MessageBox(hwnd, L"mouse clicked", L"message", 0);
HDC hdc;
hdc = GetDC(hwnd);
TextOut(hdc, 0, 50, L"Test Text", strlen("Test Text"));
ReleaseDC(hwnd, hdc);
break;

case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint(hwnd, &ps);
TextOut(hDC, 0, 0, L"http://www.test.org", strlen("http://www.test.org"));
EndPaint(hwnd, &ps);
break;

case WM_CLOSE:
if (IDYES == MessageBox(hwnd, L"Are you sure to quit?", L"message", MB_YESNO))
{
DestroyWindow(hwnd);
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  VC++ MFC 窗口