howzyao 发表于 2020-4-4 16:07:06

谁说抄5遍没有用的?这次是第4遍,是技术交流,不违规吧?有vip来帮我一下吗

#include <Windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, PSTR szCmdLine, int iCmdShow)
{
        HWND hwnd;
        MSGmsg;
        WNDCLASS wndclass;
        wndclass.style = CS_HREDRAW | CS_VREDRAW;//水平重绘,垂直重绘?
        wndclass.lpfnWndProc = WndProc;//按F5后,发生错误,声明并定义后,错误已解决,原理暂不明.估计是柄和消息的原因
        wndclass.cbClsExtra = 0;
        wndclass.cbWndExtra = 0;//两兄弟长的像,不知道干什么用的?来自WinUser.h中WNDCLASS结构中。估计是扩展的用处
        wndclass.hInstance = hInstance; //第1参数,第1次使用,而且是赋给WinUser中的WNDCLASS的成员。即时之用?
        wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
        wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//两个主要元素:图标和滑鼠的加载,以后再学
        wndclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); //湖北人背景?强制刷?这次画成灰的,果然有。
        wndclass.lpszMenuName = NULL;//长指针以0结尾?下级菜单名?以后再学。
        wndclass.lpszClassName = TEXT("省略范本里的主函数的第一个字符数组变量---这是第4遍抄写");//同上,成员真多啊
        if (!RegisterClass(&wndclass))
                return 0;
        /*
        以后慢慢认识这么些成员了,现在使用除WndProc之外的第1个函数RegisterClass了,册注类参数需要是
        WNDCLASS的对像:wndclass;也就是抄写了半天的东西。总算成功了。
        为什么要用这个结构的对像入参呢?因为需要穿裤衩的新建人物开始游戏啊....(见005窗口窗口课程讲解)
    还是不明白啊,以后再慢慢明白吧。
        hwnd = CreateWindow(11个参数);开始个性化吧,11参数需要认识,到此为止:前面的窗口类成员一堆,这里的也是一群
        合计:10+11==21个新事物需要重新认识且爱上他们。
        回到正题:现在使用除WndProc之外的第1个函数:RegisterClass之后的第2个函数:RegisterClass之后的第3个函数:
        CreateWindow
        下面开始抄写并初步理解11位新朋友了:
        */
        hwnd = CreateWindow(
                wndclass.lpszClassName,//01朋友:类名
                TEXT("FishC makes me to finish this on the forth time"),//02朋友:字符串
                WS_OVERLAPPEDWINDOW, //03朋友,暂时未知作用
                //四大同名,我记得:窗口出生的地点和大小:
                400,
                300,//此时,窗左上点,离屏左上点,是500距离(详见FishC之前的教程,具体哪课忘了)
                240,
                320,//想起了自己的第一个手机:N81的屏幕分辨率
                //还是要复习一下四大同名的名:CW_USEDDEFAULT==cw used default
                NULL,//接下来是四大NULL,但老三是:hInstance,主函数的第1参数
                NULL,
                hInstance, //为何出现在此?以后再学
                NULL
                ); //分号不能掉, F5试过成功,但缺符号。
        return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT uint, WPARAM wParam, LPARAM lParam)
{
        ;//定义后,错误和警告消失,原因未知
}




/*
有没有人告诉我,你不在意:
按下F5后,以下的问题怎么解决?
“Win32Project1.exe”(Win32):已加载“F:\programing\vs2013学习\课堂学习\012输入5遍\Win32Project1\Debug\Win32Project1.exe”。已加载符号。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\ntdll.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\kernel32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\KernelBase.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\user32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\gdi32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\msvcr120d.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\imm32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\msctf.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\msvcrt.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\uxtheme.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\combase.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\rpcrt4.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Program Files\NETGATE\FortKnox Personal Firewall\protect.dll”。模块已生成,不包含符号。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\psapi.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\ws2_32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\advapi32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\shell32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\comctl32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\nsi.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\sechost.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\shlwapi.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\msimg32.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\SHCore.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\profapi.dll”。无法查找或打开 PDB 文件。
“Win32Project1.exe”(Win32):已加载“C:\Windows\System32\dwmapi.dll”。无法查找或打开 PDB 文件。
程序“ Win32Project1.exe”已退出,返回值为 0 (0x0)。
*/

howzyao 发表于 2020-4-4 16:09:35

以上,还是按逐行写好,按Ctrl + F5不出问题的工艺制作而成的。特贴出来以供交流。

永恒的蓝色梦想 发表于 2020-4-4 16:31:32

一般来说不建议抄写代码,有这功夫不如去练打字,看代码

howzyao 发表于 2020-4-4 16:58:56

LRESULT CALLBACK WndProc(HWND hwnd, UINT uint, WPARAM wParam, LPARAM lParam)
{
        ;//定义后,错误和警告消失,原因未知
        /*
        过程中的第一件事,是什么事呢?显示?想起来了。
        */
        //HDC myRectOnWin; //我想把hdc命名为myRect...不知道行不行
        //PAINTSTRUCT pen;//同样想把ps换成笔
        //RECT myRect; //看到这里,发现这个rect改成myRect才对,hdc就要变为myRectOnWin要好点吧
        switch (uint)//看到这里,竟然发现抄写无意识:message是UINT类型的数据...不改试试能不能用吧
        {
        //case WM_PAINT://第一个事件:WM画
                //myRectOnWin = BeginPaint(hwnd, &pen);
                //EndPaint(hwnd, &pen);
                //return0;//无论画不画,需要先返回0;此0是告该谁呢?
        case WM_DESTROY: //析构窗口 还是 进入析构函数?
                //PostQuitMessage(0); //估计是进入 析构函数,还是需要自己亲自写析构的,否则使用默认的会出问题。
                PostQuitMessage(0);
                return 0;
        }
        /*
        经过以上折腾,最后的一句:不感性趣的,都扔给默认窗口过程(详见FishC课中讲话)
        Default Window Processing == DefWindowProc 大概是此意吧
        */
        return DefWindowProc(hwnd, uint, wParam, lParam); //第一个分支里,它不画,就在这里画
}

//完成了第4遍。谢谢上楼的建议,马上不抄了。
页: [1]
查看完整版本: 谁说抄5遍没有用的?这次是第4遍,是技术交流,不违规吧?有vip来帮我一下吗