有意思的代码

[code]#include <afx.h>
#include <afxwin.h>
#include <afxinet.h>
#include <stdio.h>

// compile for release with
//   cl /MT /GX
// or for debug with
//   cl /MTd /GX

CWinApp theApp;

void main()
{
   if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
   {
      // catastropic error! MFC can't initialize
      return;
   }

   // create a session object to initialize WININET library
   // Default parameters mean the access method in the registry
   // (that is, set by the "Internet" icon in the Control Panel)
   // will be used.

   CInternetSession sess(_T("MyProgram/1.0"));

   CFtpConnection* pConnect = NULL;

   try
   {
      // Request a connection to ftp.microsoft.com. Default
      // parameters mean that we'll try with username = ANONYMOUS
      // and password set to the machine name @ domain name
      pConnect = sess.GetFtpConnection(_T("ftp.microsoft.com"));

      // use a file find object to enumerate files
      CFtpFileFind finder(pConnect);

      // start looping
      BOOL bWorking = finder.FindFile(_T("*"));

      while (bWorking)
      {
         bWorking = finder.FindNextFile();
         printf("%s\n", (LPCTSTR) finder.GetFileURL());
      }
   }
   catch (CInternetException* pEx)
   {
      TCHAR sz[1024];
      pEx->GetErrorMessage(sz, 1024);
      printf("ERROR!  %s\n", sz);
      pEx->Delete();
   }

   // if the connection is open, close it
   if (pConnect != NULL)
      pConnect->Close();
   delete pConnect;

   return;
}
[/code]

蛮好玩的代码。

这个文件是在控制台建立的。
CWinApp theApp;   MFC 程序的入口。 里面肯定有
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
这个入口函数。
我为什么觉得有意思呢,我在别的论坛 别人真好讨论一个问题, 一个有关于入口函数。int mian() 到底是void main()
的东西
有高手指出 main() 其实并不是入口函数,
在调用入口函数Main() 前,还进行一些初始化的工作。
等等。

我们通过这个例子也可以看出来。
这个是控制台的 MFC 环境。
要对MFC 进行一些列的初始化
CWinApp theApp; 里面调用 肯定会调用初始化的函数。
他调用 WinMain() 说明入口函数 照样的调用 并不是在他前面就不能调用别的函数。

比喻这个代码也是一样的
[code]#include "stdafx.h"
#include <STDIO.H>
void main()
{
 //puts("你好 世界");
 MessageBox(0,"你好世界",0,0);
}
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
 main();
 return 0;
}[/code]

一样可以调用 main();

 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
   {
      // catastropic error! MFC can't initialize
      return;
   }
上面的代码:
上面的代码应该知识验证MFC 是否初始化的吧,因为我们MFC 中WinMain 中实质就是调用的他进行初始化了。

分享给大家看看,呵呵 ,感觉蛮有意思的代码

你可能感兴趣的:(代码)