885031918 发表于 2015-3-14 21:14:59

CreateWindow问题

本帖最后由 885031918 于 2015-3-14 21:56 编辑

1.WNDCLASS的wndclass.lpszClassName = szAppname;CreateWindow的第一个参数不是szAppname就无法显示了(但是后台是有的),,这是为啥?

freeparty 发表于 2015-3-15 08:28:47

贴代码

885031918 发表于 2015-3-15 13:08:57

freeparty 发表于 2015-3-15 08:28
贴代码

#include "windows.h"
#include "strsafe.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR iCmdLine, int iCmdShow)
{
        MSG msg;
        WNDCLASS wdc;
        HWND hwnd;
        static TCHAR szAppname[] = TEXT("1" );
        static TCHAR szApp[] = TEXT("2");

        wdc.style = CS_HREDRAW | CS_VREDRAW;
        wdc.cbClsExtra = 0;
        wdc.cbWndExtra = 0;
        wdc.lpfnWndProc = WndProc;
        wdc.hInstance = hInstance;
        wdc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(101));
        wdc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wdc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
        wdc.lpszClassName = szAppname;
        wdc.lpszMenuName = NULL;       

        if (!RegisterClass(&wdc))
        {
                MessageBox(NULL, TEXT("这个程序需要Windows NT才能运行!"),szAppname, MB_ICONERROR);
                return 0;

        }

        hwnd = CreateWindow(szApp,
                szApp,
                WS_OVERLAPPEDWINDOW|WS_VSCROLL|WS_HSCROLL,
          CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                NULL,
                NULL,
                hInstance,
                NULL
                );

        ShowWindow(hwnd, iCmdShow);
        UpdateWindow(hwnd);

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

        return msg.wParam;
}

freeparty 发表于 2015-3-15 13:23:13

RegisterClass时的时候传入一个WNDCLASS结构是在系统中注册一个样式为WNDCLASS的内存样式,CreateWindow的第一个参数要求你给出系统一个类名,然而这个创建的窗口样式就和WNDCLASS一样了,如果你没有传入类名,或是传入了一个没有注册的类名,CreateWindow就会失败,然后在下面消息循环中陷入一个死循环,所以程序就不会自己去退出进程了。
有不明白的加群246537769

885031918 发表于 2015-3-15 14:14:32

freeparty 发表于 2015-3-15 13:23
RegisterClass时的时候传入一个WNDCLASS结构是在系统中注册一个样式为WNDCLASS的内存样式,CreateWindow的 ...

非常感谢你的耐心解答。

freeparty 发表于 2015-3-15 14:16:11

885031918 发表于 2015-3-15 14:14
非常感谢你的耐心解答。

不客气,加群我们共同学习windows程序设计

885031918 发表于 2015-3-15 14:44:45

freeparty 发表于 2015-3-15 14:16
不客气,加群我们共同学习windows程序设计

不是吧,,,你还不让我加(有不明白的加群246537769)?

freeparty 发表于 2015-3-15 15:19:54

885031918 发表于 2015-3-15 14:44
不是吧,,,你还不让我加(有不明白的加群246537769)?

没有啊,你重加下。

freeparty 发表于 2015-3-16 05:51:52

http://baike.baidu.com/view/1001690.htm
http://baike.baidu.com/view/1013839.htm

freeparty 发表于 2015-3-16 05:52:41

代码需要慢慢理解,不可能一步登天。{:5_97:}

w120699 发表于 2015-6-13 16:49:40

厉害   学习了

a306079758 发表于 2015-6-25 21:46:55

路过看看
页: [1]
查看完整版本: CreateWindow问题