回 帖 发 新 帖 刷新版面

主题:[讨论]用MFC 创建windows窗体,并且显示它,想学东西的请进来!!!

进来的高手们,请耐心看完,主要是最后面运行结果,看你们见过这样的情况没有
这个程序是<<MFC Windows 应用程序设计>>上开始的入门程序.
我的编译环境是vc++6.0


#include <windows.h>//编写windows程序必须包含的头文件
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//声明窗口函数WndProc的原型
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE PreInstance,LPSTR lpCmdLine,int nShowCmd)//程序入口函数WinMain
{
    HWND hwnd;//定义窗口句柄
    MSG msg;//定义一个存储消息的变量
    char lpszClassName[]="窗口";
    WNDCLASS wc;//定义一个窗口类变量
    wc.style=0;
    wc.lpfnWndProc=WndProc;//wc.lpfnWndProc是窗口类的一个指针,它指向窗口函数WndProc
    wc.cbWndExtra=0;//分配在窗口实例后的字节数count of byte...
    wc.hInstance=hInstance;
    wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszClassName=lpszClassName;
    RegisterClass(&wc);//注册窗口类
    hwnd=CreateWindow(       //创建窗口
                       lpszClassName,  //窗口类名  
                       "Windows",//窗口实例的标题
                       WS_OVERLAPPEDWINDOW,//WS_OVERLAPPEDWINDOW是一个窗口风格的实际值
                       120,50,800,600,//依次是窗口左上角的坐标值x,y,窗口的宽度,高度(它们都是int类型的)
                       NULL,//父窗口的句柄
                       NULL,//主菜单的句柄
                       hInstance,//应用程序实例句柄
                       NULL);
    ShowWindow(hwnd,nShowCmd);//显示窗口
    UpdateWindow(hwnd);
    while(GetMessage(&msg,NULL,0,0))//消息循环
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.lParam;
}
//-----------------------------------------------------------------------------------------------------------
//处理消息的窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
    case WM_LBUTTONDOWN:
        {
            MessageBeep(0);
        }
        break;
    case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hwnd,message,wParam,lParam);
    }
    return 0;
}
//-------------------------------
运行没有错,但是按照书上的指示,我按下F11功能键,单步运行这个程序.却出现了这样的信息:
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\imm32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\secur32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\lpk.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\usp10.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.


我在网上搜索了一下原因,上面说的是:(如下多种说法)
Loaded   'C:\\WINDOWS\\system32\\kernel32.dll',   no   matching   symbolic   information   found怎么会报这个错呢

--------------------------------------------------------------------------------
Reader_1 &raquo;
这不算什么错误,意思是说没找到匹配的调试符号信息。
--------------------------------------------------------------------------------
Reader_2 &raquo;
怎么让他找到呢
--------------------------------------------------------------------------------
Reader_3 &raquo;
装相应操作系统的调试信息包,好象微软的网站有下的,还是ddk里有,忘了。但对你来说,没什么用。
--------------------------------------------------------------------------------
Reader_4 &raquo;
这不是错误   
  找不到调试信息,说明这个dll里面没有调试信息
--------------------------------------------------------------------------------
Reader_5 &raquo;
安装调试浮就可以具体分析了,需要另外下载,挺大的.
这样的几种说法,我大概明白了一些,但是这个问题我还是没有彻底解决,因为我运行程序后,根本没有窗体的显示效果.我初学MFC 编程,
请求高手给我个明确的解答!小弟不胜感激!!![em18]





回复列表 (共4个回复)

沙发

不知道下面的修改是否符合你的意思

#include <windows.h>    //编写windows程序必须包含的头文件

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);    //声明窗口函数WndProc的原型

int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPreInstance,
    LPSTR lpCmdLine,
    int nShowCmd)    //程序入口函数WinMain
{
    HWND hwnd;    //定义窗口句柄
    MSG msg;    //定义一个存储消息的变量
    char lpszClassName[]="窗口";
    WNDCLASS wc;    //定义一个窗口类变量
    wc.style=0;
    wc.lpfnWndProc=WndProc;    //wc.lpfnWndProc是窗口类的一个指针,它指向窗口函数WndProc
    wc.cbWndExtra=0;    //分配在窗口实例后的字节数count of byte...
    wc.hInstance=hInstance;
    wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszClassName=lpszClassName;
    
    //以下几项初始化丢掉了
    wc.cbClsExtra=0;
    wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wc.lpszMenuName=NULL;

    RegisterClass(&wc);        //注册窗口类
    hwnd=CreateWindow(           //创建窗口
                       lpszClassName,      //窗口类名  
                       "Windows",    //窗口实例的标题
                       WS_OVERLAPPEDWINDOW,    //WS_OVERLAPPEDWINDOW是一个窗口风格的实际值
                       120,50,800,600,        //依次是窗口左上角的坐标值x,y,窗口的宽度,高度(它们都是int类型的)
                       NULL,            //父窗口的句柄
                       NULL,            //主菜单的句柄
                       hInstance,        //应用程序实例句柄
                       NULL);
    ShowWindow(hwnd,nShowCmd);            //显示窗口
    UpdateWindow(hwnd);
    while(GetMessage(&msg,NULL,0,0))//消息循环
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.lParam;
}

//处理消息的窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    switch(message)
    {
    case WM_LBUTTONDOWN:
        MessageBeep(0);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd,message,wParam,lParam);
    }
    return 0;
}

//一些标识符书写错误,前后不一致
//设计窗口时,一些项没有初始化

板凳

上面这段程序是用的是SDK 编程。  在许多MFC编程教材中通常把这个程序当作学习MFC编程的第一课。
向你推荐一下孙鑫老师讲的《VC++从入门到精通》硅谷网站有这个视频教程 讲得是MFC编程。不错的。

3 楼

我觉得如果你有时间,可以先学习学习windows程序设计,熟悉熟悉win32 api函数,然后再学mfc

4 楼

寻找一直寻找机会的人!
一个趋势中的趋势的项目!
一个直销和传销终结者的项目!
一个帮助普通创业者成功的项目!
   我们在互联网上正在拓展一个生意项目,现在正在寻求合作伙伴。我们认为成功的关键是你是什么人?还有你和谁在一起。我们在乎的是--您是否是有激情、有梦想的人。有意者请跟我们联系,我们和您谈谈,给您讲解一些生意概念,或许我们可以合作。一个集即时网游、交友,娱乐游戏,网络品牌代理商城,互联网平台项目招商进行中……详情QQ空间资料
网商咨询 摩客天宇QQ 909065437 

我来回复

您尚未登录,请登录后再回复。点此登录或注册