#include
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) {
static TCHAR szAppName[] = TEXT("HelloWin");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
if (!RegisterClass(&wndclass)) {
MessageBox(NULL, TEXT("This program requires Windows NT!"), szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName, // window class name
TEXT("我的第一个应用程序"), //window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL); // creation parameters
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message) {
case WM_CREATE:
//这里是创建窗口的代码
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("Hello,媳妇!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
以上是完整代码,有兴趣可以复制粘贴,尝试一下,当然,我用的编译器是VS2019,
对于VS2017,需增加包含文件 #include "pch.h"
对于VS2015,需增加包含文件#include "stdafx.h"
这些是预编译头,关于预编译头想要了解的自行百度。
此程序其中的细节问题个人认为比较重要的是理解句柄,理解HWND,HINSTANCE,还有就是对结构体的非常详细的了解,这是入门程序,不做详细解释,其中的细节问题,慢慢补充,期待不~~
之前看博客什么的时候,很多时候最头疼的是代码复制粘贴后老有问题,或者是明明一样却不知道为什么就是自己的不能运行,哎,以此为戒,下面讲解一些细节:
问题一:如何让这一个程序运行起来,新建控制台之后为什么会报错,找不到入口函数之类的(针对VS)
答:1.新建一个控制台应用程序,然后新建一个cpp文件,复制以上代码,(这里以控制台为例),如果是空项目,一样的解 决办法。
问题二:为什么会提示,什么char*与const char*类型不符
答:这是因为字节编码引起的,改变字符集即可,同问题一方法找到属性页
问题三:为什么有时候将文件传给朋友以后,运行时提示:缺少XXX.dll
答:这是因为很可能是你传的是debug模式下的xxx.exe文件
三个不起眼问题,记录一下,更多问题,欢迎留言~~
给点自己的建议:
1、刚学的时候不能着急,自己写写案例,小小的案例就可以
2、下载个编译器,动起手来
3、遇到不会的,多想想在百度
4、有空的时候学学数学和英语
参考书籍:《win程序设计》
突然想起来,我有一个可爱的名字,叫幸福肥皂
哈哈~~
2019-4-9