免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3108 | 回复: 8
打印 上一主题 下一主题

一个最简单的windows程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-30 16:54 |只看该作者 |倒序浏览
这是一个最简单的windows程序,是从书本上直接敲上去的,但是不知道为什么就是运行不成功,哪位高手给予指点。我将感激不尽。不知道是为什么,它老是提示那个WndProc函数的定义有致命的问题,请指点。



#include "windows.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
                                   HINSTANCE hPreveInstance,
                                   LPSTR szCmdLine,
                                   int iCmdShow){
        static TCHAR szAppName[]=TEXT("hellow vc ++6.0");
                static TCHAR lpszTitle[]=("my First windows program");
        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,
                        TEXT("the hellow program"),
                        WS_OVERLAPPEDWINDOW,
                        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;}
        LRESULT CALLBACK WndProc(HWND hwnd,
                UINT message,
                WPARAM wParam,
                LPARAM lParam)
        {
                HDC hdc;
                PAINTSTRUCT ps;
                RECT rect;
                switch(message){
                case WM_PAINT:
                        hdc=BeginPaint(hwnd,&ps);
                        GetClientRect(hwnd,&rect);
                        DrawText(hdc,
                                TEXT("hellow vc++6.0"),15,&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);
        }

[ 本帖最后由 sea313081574 于 2006-10-30 17:07 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-10-30 16:58 |只看该作者
用记事本,敲进去后保存为exe, 然后执行。

论坛徽章:
0
3 [报告]
发表于 2006-10-30 17:02 |只看该作者

回上面那位老兄的

我刚试了,你的方法不行,你看能不能再给我点意见。谢谢。

论坛徽章:
0
4 [报告]
发表于 2006-10-30 18:01 |只看该作者
原帖由 nully 于 2006-10-30 16:58 发表
用记事本,敲进去后保存为exe, 然后执行。

我刚试了,你的方法不行,你看能不能再给我点意见。谢谢。


!!!

论坛徽章:
0
5 [报告]
发表于 2006-10-30 18:03 |只看该作者
....

论坛徽章:
0
6 [报告]
发表于 2006-10-30 18:06 |只看该作者
原帖由 sea313081574 于 2006-10-30 16:54 发表
这是一个最简单的windows程序,是从书本上直接敲上去的,但是不知道为什么就是运行不成功,哪位高手给予指点。我将感激不尽。不知道是为什么,它老是提示那个WndProc函数的定义有致命的问题,请指点。



#in ...


看着你敲得辛苦的份上

  1. if(!RegisterClass(&wndclass))
  2.         {
  3.                 MessageBox(NULL,TEXT("this program requires windows NT"),
  4.                         szAppName,MB_ICONERROR);
  5.                 return 0;
复制代码

这了少了一个}

论坛徽章:
0
7 [报告]
发表于 2006-10-30 18:24 |只看该作者

回风云使者

谢谢上面的老兄啊,好一生平安。

论坛徽章:
0
8 [报告]
发表于 2006-10-30 18:39 |只看该作者
另外,注意一下编码风格。老实说,这样很容易出问题。几个花括号,最好分开,然后对齐


#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI
WinMain(HINSTANCE hInstance,
        HINSTANCE hPreveInstance,
        LPSTR szCmdLine,
        int iCmdShow)
{
        static TCHAR    szAppName[] = TEXT("hellow vc ++6.0");
        static TCHAR    lpszTitle[] = ("my First windows program");
        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,
                            TEXT("the hellow program"),
                            WS_OVERLAPPEDWINDOW,
                            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;
}

LRESULT CALLBACK
WndProc(HWND hwnd,
        UINT message,
        WPARAM wParam,
        LPARAM lParam)
{
        HDC             hdc;
        PAINTSTRUCT     ps;
        RECT            rect;
        switch (message) {
        case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                GetClientRect(hwnd, &rect);
                DrawText(hdc,
                         TEXT("hellow vc++6.0"), 15, &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);
}

[ 本帖最后由 namei 于 2006-10-30 18:42 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-10-30 20:25 |只看该作者

谢谢各位啊

非常感谢各位对我的指点,我会继续努力的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP