VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2839|回复: 2

关于窗口类注册失败的问题

[复制链接]
71_avatar_middle
最佳答案
0 
在线会员 发表于 2015-9-10 18:53:26 | 显示全部楼层 |阅读模式

最近在自学vc++,想编写一个界面程序,看的书是孙鑫的VC++深入学习(应该是这个书名,错了也别在意啊),照着书上的代码,我完成了第一个程序,可是在运行的时候提示说窗口类注册失败,我检查了一下我的窗口类初始化,没有发现错误,请各位大神帮忙看看,谢谢。
代码如下:
#include <stdio.h>
#include <windows.h>

LRESULT CALLBACK WinSunPROC(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
        switch (uMsg)
        {
                case WM_CHAR:                                        //字符事件
                {
                        char szChar[20];
                        sprintf(szChar, "char is %d", wParam);
                        MessageBox(hwnd, szChar, "hh", 0);
                }break;
                case WM_NCLBUTTONDOWN:                               //鼠标左键按下事件
                {
                        MessageBox(hwnd, "mouse clicked", "hh", 0);
                        HDC hdc;
                        hdc = GetDC(hwnd);
                        TextOut(hdc, 0, 50, "鼠标左键", strlen("鼠标左键"));
                        ReleaseDC(hwnd, hdc);
                }break;
                case WM_PAINT:                                      //窗口重绘事件
                {
                        HDC hDc;
                        PAINTSTRUCT ps;

                        hDc = BeginPaint(hwnd, &ps);
                        TextOut(hDc, 0, 0, "第一课", strlen("第一课"));
                        EndPaint(hwnd, &ps);
                }break;
                case WM_CLOSE:                                    //窗口关闭事件                                 
                {
                        if (IDYES == MessageBox(hwnd, "是否真的结束?", "hh", MB_YESNO))
                        {
                                DestroyWindow(hwnd);                     //销毁该窗口
                        }
                }break;
                case WM_DESTROY:                                 //窗口销毁事件  
                {
                  PostQuitMessage(0);                            //往本线程的消息队列中发送一个。。。
                }break;
                default:
                        return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
        return 0;
}

int WINAPI WinMain(
        HINSTANCE  hInstance,
        HINSTANCE  hPrevInstance,
        LPSTR lpCmdLine,
        int nCmdShow
        )
{
        WNDCLASS wndcls;

        wndcls.cbClsExtra    = 0;
        wndcls.cbClsExtra    = 0;
        wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
        wndcls.hCursor       = LoadCursor(NULL,IDC_CROSS);
        wndcls.hIcon         = LoadIcon(NULL,IDI_APPLICATION);
        wndcls.hInstance     = hInstance;
        wndcls.lpfnWndProc   = WinSunPROC;
        wndcls.lpszClassName = "xu";
        wndcls.lpszMenuName  = NULL;
        wndcls.style         = CS_HREDRAW | CS_VREDRAW;

        if (RegisterClass(&wndcls) == 0)
        {
                DWORD dw = GetLastError();    //87:参数无效
                MessageBox(NULL, TEXT("窗口类注册失败!"), TEXT("提示"), MB_OK);
                return 1;
        }

        HWND hwnd;
        hwnd = CreateWindow("xu", "测试", WS_OVERLAPPEDWINDOW, 10, 10, 600, 400, NULL, NULL, hInstance,NULL);

        if (hwnd)
        {
                ShowWindow(hwnd, SW_SHOWNORMAL);
        }
        else
        {
                DWORD dw = GetLastError();    //1407 :找不到窗口类别。
                MessageBox(NULL, TEXT("创建窗口失败!"), TEXT("提示"), MB_OK);
                UnregisterClass("xu", hInstance);  //移除注册
                return 1;
        }

        MSG msg;
        while (GetMessage(&msg,NULL,0,0))
        {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
        }
        return 0;
}
程序是在win10平台下运行的,另外我也试过win7环境,结果一样。




上一篇:listctrl 与 excel 的实时数据传递读写
下一篇:大家多多帮忙啊
78_avatar_middle
最佳答案
0 
online_supermod 发表于 2015-9-11 10:38:49 | 显示全部楼层
wndcls.cbClsExtra    = 0;
wndcls.cbClsExtra    = 0;
你写成一样了。改为
wndcls.cbClsExtra    = 0;
wndcls.cbWndExtra = 0;
75_avatar_middle
最佳答案
0 
在线会员 发表于 2018-1-27 15:32:26 | 显示全部楼层
实践活动坚实的技术
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-26 10:02

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表