认识win程序,简单的界面

#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" 

这些是预编译头,关于预编译头想要了解的自行百度。


认识win程序,简单的界面_第1张图片
在这里我们可以看到预编译头

此程序其中的细节问题个人认为比较重要的是理解句柄,理解HWND,HINSTANCE,还有就是对结构体的非常详细的了解,这是入门程序,不做详细解释,其中的细节问题,慢慢补充,期待不~~

之前看博客什么的时候,很多时候最头疼的是代码复制粘贴后老有问题,或者是明明一样却不知道为什么就是自己的不能运行,哎,以此为戒,下面讲解一些细节:

问题一:如何让这一个程序运行起来,新建控制台之后为什么会报错,找不到入口函数之类的(针对VS)

答:1.新建一个控制台应用程序,然后新建一个cpp文件,复制以上代码,(这里以控制台为例),如果是空项目,一样的解 决办法。


认识win程序,简单的界面_第2张图片

点击下一步

认识win程序,简单的界面_第3张图片
点击创建,之后复制以上代码


认识win程序,简单的界面_第4张图片
粘贴,编译,运行,会发生错误,继续如下操作


认识win程序,简单的界面_第5张图片
在你的解决方案下右键找到属性,点击


认识win程序,简单的界面_第6张图片
找到连接器下的系统,看到右边的子系统


认识win程序,简单的界面_第7张图片
将控制台变为窗口,并点击应用,之后在确定(不然不会保存)


认识win程序,简单的界面_第8张图片
此时,编译,运行,妥妥的,如若还有问题,看问题二

问题二:为什么会提示,什么char*与const char*类型不符

答:这是因为字节编码引起的,改变字符集即可,同问题一方法找到属性页


认识win程序,简单的界面_第9张图片
这里对于win程序,建议用多字节字符集


问题三:为什么有时候将文件传给朋友以后,运行时提示:缺少XXX.dll

答:这是因为很可能是你传的是debug模式下的xxx.exe文件


认识win程序,简单的界面_第10张图片

选择release模式,进行编译

认识win程序,简单的界面_第11张图片
找到项目文件夹,会有release文件夹,打开


认识win程序,简单的界面_第12张图片

将此应用程序发给朋友即可

三个不起眼问题,记录一下,更多问题,欢迎留言~~

给点自己的建议:

1、刚学的时候不能着急,自己写写案例,小小的案例就可以

2、下载个编译器,动起手来

3、遇到不会的,多想想在百度

4、有空的时候学学数学和英语

参考书籍:《win程序设计》

突然想起来,我有一个可爱的名字,叫幸福肥皂

哈哈~~



2019-4-9

你可能感兴趣的:(认识win程序,简单的界面)