| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 797 人关注过本帖
标题:我市初学者,请教一个关于制作windows窗口的问题!!!
只看楼主 加入收藏
fuhaitao_2007
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-10
收藏
 问题点数:0 回复次数:3 
我市初学者,请教一个关于制作windows窗口的问题!!!
#include<WINDOWS.H>      //包含windows.h函数

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);   //窗口函数声明
/*入口函数WinMain()*/
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASS wndclass;      //定义窗口类结构变量
    HWND hwnd;              //定义窗口句柄
    MSG msg;                //定义消息结构变量
    /*定义窗口类的各属性*/
    wndclass.style = CS_HREDRAW | CS_VREDRAW;    //改变窗口大小则重画
    wndclass.lpfnWndProc = WndProc;        //窗口函数为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 = "windows窗口创建";     //窗口类名为windows窗口创建

    /*注册窗口类*/
    if (!RegisterClass(&wndclass))
        return  FALSE;

    /*创建窗口*/
    hwnd = CreateWindow("window窗口创建",     //窗口类名为windows窗口创建
           "window窗口创建",    //窗口名windows窗口创建
           WS_OVERLAPPEDWINDOW,    /重叠式窗口
           CW_USEDEFAULT, CW_USEDEFAULT,     //左上角屏幕坐标默认值
           CW_USEDEFAULT, CW_USEDEFAULT,    //窗口宽度和高度默认值
                     NULL,                             //此窗口无父窗口
           NULL,                //此窗口无主菜单
           hInstance,            //创建此窗口的实例句柄
           NULL);                            //此窗口无创建参数

    /*显示并更新窗口*/
    ShowWindow(hwnd, nCmdShow);            //显示窗口
    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)
{//根据消息值转相应的消息处理
    switch (message)
    {
        case WM_PAINT:        //重画窗口客户区消息处理
             HDC hdc;        //定义设备描述表句柄
             PAINTSTRUCT ps;    //定义绘图信息结构变量
             hdc = BeginPaint(hwnd, &ps);    //获得要重画的窗口的设备描述表句柄
             TextOut(hdc, 10,20,"哈哈,windows编程创建的窗口!",28);  //输出文本
             EndPaint(hwnd, &ps);        //结束要重画的窗口
             return 0;        
        case WM_DESTROY:        //撤销窗口消息处理
             PostQuitMessage(0);    //产生退出程序消息WM_QUIT
             return 0;
    }                
    return DefWindowProc(hwnd, message, wParam, lParam);
//其他函数默认窗口函数
}

我是初学者,刚开始学习VC++一周多,这个程序是我从教材上照抄上去的。但是执行的时候会抱错,当按ctrl+F7的时候没有错,按F7的时候也没有错,但是按ctrl+F5的时候就出现了错误,提示如下:
--------------------Configuration: WindowsDemo - Win32 Debug--------------------
Linking...
LINK : fatal error LNK1168: cannot open Debug/WindowsDemo.exe for writing
Error executing link.exe.
Creating browse info file...

WindowsDemo.exe - 1 error(s), 0 warning(s)

请各位高手帮助!万分感激!!
搜索更多相关主题的帖子: windows 窗口 制作 
2008-10-10 15:55
沼泽
Rank: 4
等 级:业余侠客
威 望:8
帖 子:291
专家分:228
注 册:2008-9-15
收藏
得分:0 
hwnd = CreateWindow("window窗口创建",     //窗口类名为windows窗口创建
           "window窗口创建",    //窗口名windows窗口创建
           WS_OVERLAPPEDWINDOW,    /重叠式窗口      *************此处有错误,少了个/
           CW_USEDEFAULT, CW_USEDEFAULT,     //左上角屏幕坐标默认值
如果改了还有错误,楼主再把你的错误信息贴上来
2008-10-10 16:59
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
这个问题是调试工作目录没有设置的问题,因为F5的执行会调到工作目录下编译成功的EXE文件,但如果调试工作目录没有设置或是设置错误,都会出现这个问题.
打开工程属性页,点击"配置属性"里的"调试"选项,这一页里可以看到"工作目录",可以在这里输入你的EXE所在的目录,一般地,EXE所在位置是在"配置属性"里的"链接器"选项中的"输出文件"一栏中,这里是编译成功后输出成果文件的目录指定的地方和文件的名称,默认为$(OutDir)\$(ProjectName).exe,这里的$(OutDir)是一个相对路径,想要知道它具体指到哪里,可以该栏的下拉按钮,选择"编辑",在弹出对话框上点击"宏",这里你可以看到相对工程的路径定义.那么,在前面提到的工作目录需要输入$(OutDir).
有时候根据工程需要,会改变"输出文件"一栏中的输出路径或是输出文件名,如果改变了,那么"工作目录"也要一同改变.
"工作目录"里的内容不会跟项目走,意思是如果你把工程复制到另一个目录下或是另一个机器上,"工作目录"一栏会变为空,需要手动添加上.
关于工作目录,其实就是在调试时,编译器需要找到执行文件来执行,因此,"工作目录"中指定的目录下只要有执行文件和工程所需要的资源文件,就可以了,上面的方法只是一个快速设置"工作目录"的方法,但不是唯一的方法,理解以后就可以活学活用.
2008-10-12 23:07
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
这个问题是调试工作目录没有设置的问题,因为F5的执行会调到工作目录下编译成功的EXE文件,但如果调试工作目录没有设置或是设置错误,都会出现这个问题.
打开工程属性页,点击"配置属性"里的"调试"选项,这一页里可以看到"工作目录",可以在这里输入你的EXE所在的目录,一般地,EXE所在位置是在"配置属性"里的"链接器"选项中的"输出文件"一栏中,这里是编译成功后输出成果文件的目录指定的地方和文件的名称,默认为$(OutDir)\$(ProjectName).exe,这里的$(OutDir)是一个相对路径,想要知道它具体指到哪里,可以该栏的下拉按钮,选择"编辑",在弹出对话框上点击"宏",这里你可以看到相对工程的路径定义.那么,在前面提到的工作目录需要输入$(OutDir).
有时候根据工程需要,会改变"输出文件"一栏中的输出路径或是输出文件名,如果改变了,那么"工作目录"也要一同改变.
"工作目录"里的内容不会跟项目走,意思是如果你把工程复制到另一个目录下或是另一个机器上,"工作目录"一栏会变为空,需要手动添加上.
关于工作目录,其实就是在调试时,编译器需要找到执行文件来执行,因此,"工作目录"中指定的目录下只要有执行文件和工程所需要的资源文件,就可以了,上面的方法只是一个快速设置"工作目录"的方法,但不是唯一的方法,理解以后就可以活学活用.
2008-10-12 23:10
快速回复:我市初学者,请教一个关于制作windows窗口的问题!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014677 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved