VC,MFC,COM和ATL的区别

赵鹏亮 2019-12-21 18:12:00

推荐回答

先运行自己的程序在IDE中使用ATL/MFC跟踪工具打开MFC或ATL项目。在“调试”菜单上单击“开始调试”。在“工具”菜单上单击“ATL/MFC跟踪工具”。展开“跟踪列表”树中的节点。将显示正在运行的应用程序、该应用程序中的模块以及每个模块的跟踪类别。使用“进程”组、“模块”组和“类别”组中的控件自定义在每个进程、模块或跟踪类别的“输出”窗口中显示信息的方式。单击“应用”。可以使用“保存”和“加载”按钮保存您的设置并在下次调试应用程序时加载这些设置。http://msdn.microsoft.com/zh-cn/library/ms241448VS.80.aspx。
桑风月2019-12-21 18:38:48

提示您:回答为网友贡献,仅供参考。

其他回答

  • MFC是微软基础类库,以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。ATL是活动模板库,也是微软的程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序,主要开发中间件.主要作用是不一样的。
    赵颖馨2019-12-21 19:56:50
  • atl是活动模板库,常用来开发activex组件或者系统服务等;clr是托管编程;mfc是基于mfc框架编程,通常用来做比较复杂的窗口程序;Win32是基于Win32API编程,通常用来做短小精悍的程序。
    车巧怡2019-12-21 19:12:34
  • ActiveX是插件,可以用在ATL和MFC中。ATL对win32的控件进行了封装,MFC对win32的大部分进行了封装,包括控件。说到实用,当然是MFC。但是ATL也有优点,就是生成代码小,可以不必依赖于dll。
    窦金乾2019-12-21 18:55:17
  • MFC是vc的一个库com是接口吧atl是容器在上看看吧。c++是语言vc++是c++编程软件平台在上面可以使用后三者。
    辛嘉英2019-12-21 18:21:42

相关问答

// TestBrowser.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "TestBrowser.h"////////////////////////////////////////////////////////#include #include #include #include #include ////////////////////////////////////////////////////////#define MAX_LOADSTRING 100// Global Variables:HINSTANCE hInst;        // current instanceTCHAR szTitle;   // the main window class name// Forward declarations of functions included in this code module:ATOM    MyRegisterClassHINSTANCE hInstance;BOOL    InitInstanceHINSTANCE, int;LRESULT CALLBACK WndProcHWND, UINT, WPARAM, LPARAM;INT_PTR CALLBACK AboutHWND, UINT, WPARAM, LPARAM;////////////////////////////////////////////////////////CComModule _Module;CAxWindow WinContainer; CComPtr  pWebBrowser;#pragma commentlib,"atl"////////////////////////////////////////////////////////int APIENTRY _tWinMainHINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine, int       nCmdShow{ UNREFERENCED_PARAMETERhPrevInstance; UNREFERENCED_PARAMETERlpCmdLine; ////////////////////////////////////////////////////// // CoInitializeNULL;  AtlAxWinInit;  // ////////////////////////////////////////////////////// MSG msg; HACCEL hAccelTable; // Initialize global strings LoadStringhInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING; LoadStringhInstance, IDC_TESTBROWSER, szWindowClass, MAX_LOADSTRING; MyRegisterClasshInstance; // Perform application initialization: if !InitInstance hInstance, nCmdShow {  return FALSE; } hAccelTable = LoadAcceleratorshInstance, MAKEINTRESOURCEIDC_TESTBROWSER; // Main message loop: while GetMessage&msg, NULL, 0, 0 {  if !TranslateAcceleratormsg.hwnd, hAccelTable, &msg  {   TranslateMessage&msg;   DispatchMessage&msg;  } } ////////////////////////////////////////////////////// // CoUninitialize; // ////////////////////////////////////////////////////// return int msg.wParam;}////  FUNCTION: MyRegisterClass////  PURPOSE: Registers the window class.////  COMMENTS:////    This function and its usage are only necessary if you want this code//    to be compatible with Win32 systems prior to the ''RegisterClassEx''//    function that was added to Windows 95. It is important to call this function//    so that the application will get ''well formed'' small icons associated//    with it.//ATOM MyRegisterClassHINSTANCE hInstance{ WNDCLASSEX wcex; wcex.cbSize = sizeofWNDCLASSEX; wcex.style   = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra  = 0; wcex.cbWndExtra  = 0; wcex.hInstance  = hInstance; wcex.hIcon   = LoadIconhInstance, MAKEINTRESOURCEIDI_TESTBROWSER; wcex.hCursor  = LoadCursorNULL, IDC_ARROW; wcex.hbrBackground = HBRUSHCOLOR_WINDOW+1; wcex.lpszMenuName = MAKEINTRESOURCEIDC_TESTBROWSER; wcex.lpszClassName = szWindowClass; wcex.hIconSm  = LoadIconwcex.hInstance, MAKEINTRESOURCEIDI_SMALL; return RegisterClassEx&wcex;}////   FUNCTION: InitInstanceHINSTANCE, int////   PURPOSE: Saves instance handle and creates main window////   COMMENTS:////        In this function, we save the instance handle in a global variable and//        create and display the main program window.//BOOL InitInstanceHINSTANCE hInstance, int nCmdShow{ HWND hWnd; hInst = hInstance; // Store instance handle in our global variable hWnd = CreateWindowszWindowClass, szTitle, WS_OVERLAPPEDWINDOW,  CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL; if !hWnd {  return FALSE; } ShowWindowhWnd, nCmdShow; UpdateWindowhWnd; return TRUE;}////  FUNCTION: WndProcHWND, UINT, WPARAM, LPARAM////  PURPOSE:  Processes messages for the main window.////  WM_COMMAND - process the application menu//  WM_PAINT - Paint the main window//  WM_DESTROY - post a quit message and return////LRESULT CALLBACK WndProcHWND hWnd, UINT message, WPARAM wParam, LPARAM lParam{ int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; HRESULT hr; RECT rc; switch message { ///////////////////////////////////////////////// // case WM_CREATE:  {   GetClientRecthWnd,&rc;    WinContainer.CreatehWnd, &rc, L"Shell.Explorer", WS_CHILD | WS_VISIBLE;    hr = WinContainer.QueryControl__uuidofIWebBrowser2, void**&pWebBrowser;    if FAILEDhr   {    return   -1L;   }   VARIANT vt;   vt.vt = VT_BSTR;   vt.bstrVal = L"http://www.bing.com";   hr = pWebBrowser->Navigate2&vt, NULL, NULL, NULL, NULL;  }  break; case WM_SIZE:  {   int cx, cy;   cx = LOWORDlParam;   cy = HIWORDlParam;   WinContainer.MoveWindow0, 0, cx, cy;  }  break; /// ////////////////////////////////////////////////////// case WM_COMMAND:  wmId    = LOWORDwParam;  wmEvent = HIWORDwParam;  // Parse the menu selections:  switch wmId  {  case IDM_ABOUT:   DialogBoxhInst, MAKEINTRESOURCEIDD_ABOUTBOX, hWnd, About;   break;  case IDM_EXIT:   DestroyWindowhWnd;   break;  default:   return DefWindowProchWnd, message, wParam, lParam;  }  break; case WM_PAINT:  hdc = BeginPainthWnd, &ps;  // TODO: Add any drawing code here...  EndPainthWnd, &ps;  break; case WM_DESTROY:  /////////////////////////////////////////////  //        pWebBrowser.Release;         WinContainer.DestroyWindow;   //  /////////////////////////////////////////////  PostQuitMessage0;  break; default:  return DefWindowProchWnd, message, wParam, lParam; } return 0;}// Message handler for about box.INT_PTR CALLBACK AboutHWND hDlg, UINT message, WPARAM wParam, LPARAM lParam{ UNREFERENCED_PARAMETERlParam; switch message { case WM_INITDIALOG:  return INT_PTRTRUE; case WM_COMMAND:  if LOWORDwParam == IDOK || LOWORDwParam == IDCANCEL  {   EndDialoghDlg, LOWORDwParam;   return INT_PTRTRUE;  }  break; } return INT_PTRFALSE;}随手给你写了一个。看看是不是你所需要的。大部分代码是自动生成的,我写的代码都通过注释方式给括起来了,希望能理解。
ECN(Electronic Communication Network)电子通讯网络,在各个银行及外汇交易平台之间选择最有利于客户头寸的价格来成交,经纪公司赚取适当低比例的佣金。
ECN上的费用分两部分,一个就是佣金,这个比例一般很低。另一个部分就是所 说的点差。点差不固定。比如活跃的时候,欧元美元一般一个点点差。经纪公司不赚取点差费用.
由于外汇市场十分巨大,没有中央交易所,外汇交易都是在场外进行的。ECN交易可以让你直接进入外汇市场(银行间市场),在这里您可以和其他交易员交易,您的定单在市场上真实体现并被其他人所见,反过来别人也可以介绍他们的订单,如果价格匹配,交易就达成了.
通过直通式处理系统 (straight through processing system - STP),让客户的下单发送到银行,按银行的价位接近即时交易。交易量偏高期间可能出现单子悬空,表示单子已经执行但仍然留在挂单窗口。一般来说,这样的单子已经执行,只是还需要一点时间等待银行确认。交易频繁期间,可能出现多项下单需要等待处理。等候的单子增加有时会影响银行延迟确认部分单子,视乎单子的种类,情况可能不同。
ECN平台准确的说是"ECN+STP"平台。
ECN 和 STP 均类属NDD无交易员平台模式。
采用无交易员平台的交易商依靠收取交易佣金或者通过加大点差来赚取利润。无交易员平台的交易商可能属于STP类型,也可能属于ECN+STP类型(简称ECN)。NDD无交易员平台具有透明、报价好和快速成交的优势。透明性意味着客户可以进入真实的外汇市场,客户订单直接输送至银行间市场,自动执行。无交易员的报价通常较低,并且成交迅速。