找回密码
 注册
搜索
热搜: java php web
查看: 271|回复: 1

[笔记]《明明白白看MFC之程序框架(一)》

[复制链接]
发表于 2009-1-26 12:26:53 | 显示全部楼层 |阅读模式
[笔记]《明明白白看MFC之程序框架(一)》
最近一直在学习VC,因为是自学,有许多问题都是在经过一番辛苦的查找资料才得以解决的,现在,把这些学习VC入门刚刚弄懂得问题贴出来,希望可以得到更多的指教,如果能够帮助到跟我有过同样困惑的人,那就是万幸了!

在VC中借助MFC可以方便的创建Windows应用程序,但是,要弄清楚MFC的来龙去脉还真是不容易,首先,需要知道Windows程序的基本框架,然后才有可能更深入的去了解MFC框架中的Windows程序。

一、SDK应用程序结构

使用经典的SDK编写Windows程序虽然稍显麻烦,但是其给我带来的感觉是具有如行云流水般的运行脉络,简洁明了得运行过程,让我理解起来非常容易,下面就看看一个经典的SDK编写的Windows程序的源代码:


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

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
// TODO: Place code here.
MSG msg;
………………………………
MyRegisterClass(hInstance);

if (!InitInstance (hInstance, nCmdShow))
{
    return FALSE;
}

// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

return msg.wParam;
}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   ……………………

   return TRUE;
}

//窗口函数WndProc(),回调函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
……………………
switch (message)
{
    case WM_COMMAND:
        ………………
        break;
    case WM_PAINT:
       hdc = BeginPaint(hWnd, &ps);
       // TODO: Add any drawing code here...
       RECT rt;
       GetClientRect(hWnd, &rt);
       DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
       EndPaint(hWnd, &ps);
       break;
    case WM_DESTROY:
        ……
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

                    SDK之"Hello World"源程序

    首先让我们看一下这个程序的结构,WinMain()是函数的入口点,该函数的主要任务是完成一些初始化的工作和维护了一个消息循环。他们的工作流程如下:入口(WinMain())---
发表于 2009-1-26 13:19:21 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-13 10:45

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

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