C语言写Windows应用程序(一)

C语言写Windows窗口(一)


以前都在写Windows控制台应用程序,但我们用的软件都不是这种Windows控制台应用程序,而是一种叫Win32应用应用程序,它们两者完全不同。

Windows控制台应用程序:

代码:

#include 
using namespace std;

int main()
{
   cout << "Hello World!\n";
	return 0;
}

运行结果:
C语言写Windows应用程序(一)_第1张图片

而Win32应用程序的代码是:

代码

main.cpp

#include"tools.h"

int WINAPI WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR lpCmdLine,
	int nCmdShow
)
{
	HWND hWnd;
	MSG msg;
	WNDCLASS wc;
	wc.cbClsExtra = NULL;
	wc.cbWndExtra = NULL;
	wc.hbrBackground = CreateSolidBrush(RGB(255, 255, 0));
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hInstance = hInstance;
	wc.lpszClassName = TEXT("fyz");
	wc.lpszMenuName = NULL;
	wc.lpfnWndProc = MyWindowProc;
	wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;

	RegisterClass(&wc);

	hWnd = CreateWindow(TEXT("fyz"), TEXT("第一个窗口"), WS_OVERLAPPEDWINDOW, 0, 0, 600, 500, NULL, NULL, hInstance, NULL);

	ShowWindow(hWnd, nCmdShow);

	UpdateWindow(hWnd);

	while (1)
	{
		if (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
		{
			if (!GetMessage(&msg, NULL, 0, 0))
			{
				break;
			}
			else
			{
				TranslateMessage(&msg);
				DispatchMessage(&msg);
			}
		}
		else
		{
			Sleep(100);
		}
	}

	return 0;
}

tools.h

#include
#include
#include"tools.h"

LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		break;
	}
	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

结果:

C语言写Windows应用程序(一)_第2张图片

通过如上代码,相信大家已经可以理解Windows控制台应用程序和Win32应用程序的区别了,具体代码的实践我们在下篇文章讲
2020年3月17日23:32:05

你可能感兴趣的:(C语言写Windows应用程序(一))