다음을 통해 공유


StockTicker 샘플: ATL 컨트롤에 웹 정보 표시

업데이트: 2007년 11월

StockTicker 샘플은 웹에서 주식 정보를 다운로드하여 데이터를 오른쪽에서 왼쪽으로 스크롤하는 ATL 컨트롤에 표시합니다. 사용자가 설정한 간격에 따라 컨트롤에서 데이터를 업데이트합니다.

StockTicker에는 다음과 같이 4가지 부분이 있습니다.

  • 공유 ATL 구성 요소(stockquotes)

  • ATL 컨트롤(stocktickeratl)

  • ISAPI 확장 DLL(stocksourcemfc)

  • MFC 컨테이너 응용 프로그램(containermfc) 이 .exe 파일 이름을 바꿀 수 있습니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드 및 실행

StockTicker 샘플을 빌드하여 실행하려면

  1. StockTicker.sln 솔루션을 엽니다.

  2. 빌드 메뉴에서 빌드를 클릭합니다.

  3. regsvr32를 사용하여 두 개의 DLL, stockquotes.dll과 stocktickeratl.dll을 등록합니다. ATL.dll도 등록해야 할 수도 있습니다.

    ISAPI 확장 DLL은 주식 데이터 소스를 모방하는데 Microsoft IIS(인터넷 정보 서비스)와 같은 웹 서버 소프트웨어가 설치되어 있는 컴퓨터에 설치되어 있어야 합니다. 그리고 이 DLL의 위치를 StockTicker에 알려 주어야 합니다. ISAPI 확장 DLL을 사용하는 방법에 대한 자세한 설명은 아래를 참조하십시오.

  4. containermfc.exe를 실행합니다. 바로 가기 메뉴를 표시하려면 응용 프로그램의 클라이언트 영역을 마우스 오른쪽 단추로 클릭합니다. 다음 단원에서 설명하는 대로 이 메뉴를 사용하여 StockTicker의 기능과 속성을 변경합니다.

주식 소스 웹 사이트

사용자 고유의 주식 소스 웹 사이트를 추가하려면 다음 단계를 따르십시오.

  1. stockquotes\stockquotes_.h를 편집합니다. CSQSISAPIDll 클래스를 검사합니다. 이 클래스는 주식 시세 클래스를 만들 때 예제로 사용할 수 있습니다.

  2. CStockQuoteSource에서 파생된 새 클래스를 만듭니다.

  3. 새로운 클래스 생성자에서 m_strURL을 데이터를 검색한 웹 사이트의 전체 URL로 설정합니다. 주식 데이터를 검색하는 명령도 포함시켜야 합니다.

  4. 웹 사이트에서 반환된 HTML 형식에 따라 SetStockInfo 및/또는 ParseStockInfo를 무시해야 할 수도 있습니다.

  5. 구성 요소를 다시 빌드하여 등록합니다.

선택한 사이트에서 CONAME: <NA>와 유사한 데이터를 반환하면 해당 사이트에 액세스할 수 없거나 사용자가 만든 소스 클래스에서 HTML의 주식 정보를 찾지 못한 것입니다. 여기서 CONAME은 주식 기호를 나타냅니다.

참고:

10진수 또는 소수인 주식 데이터의 형식은 모니터링하기 위해 선택한 주식에 따라 달라질 수 있습니다. StockTicker에서는 데이터를 일관성있게 만들려기 위해 변경하지 않습니다.

StockTicker의 기능 및 속성

  • Stocks
    모니터할 주식 기호를 추가하거나 제거할 수 있는 대화 상자를 표시합니다. 대화 상자는 주식 기호의 현재 목록으로 초기화됩니다.

  • Update Now
    웹에서 주식 정보를 업데이트합니다.

  • 속성
    Properties 대화 상자에는 색, 글꼴 및 사용자 지정으로 된 3개의 속성 페이지가 있습니다. 주식 색 및 글꼴 속성 페이지가 Properties 대화 상자에 표시되지 않으면 msstkprp.dll을 등록했는지 확인하십시오.

    다음과 같은 속성을 변경할 수 있습니다.

    • Ticker Speed 슬라이더를 움직여 주식 정보를 오른쪽에서 왼쪽으로 스크롤하는 속도를 높이거나 낮춥니다.

    • Update Interval   업데이트 간격을 분으로 표시합니다.

    • ISAPI Extension DLL URL   ISAPI 확장 DLL에 전체 URL을 입력합니다. URL의 끝에 ?QueryForStock?Symbol=을 추가합니다.

      ISAPI 확장 DLL의 URL을 지정할 때 주식 정보가 들어 있는 HTML을 반환하는 구성 요소를 포함해야 합니다.

  • About Stock Ticker
    정보 대화 상자를 엽니다.

  • Stay On Top
    StockTicker가 다른 응용 프로그램들보다 위에 있게 됩니다. 그렇지 않으면 다른 응용 프로그램에 의해 가려 집니다.

StockTicker에서 사용하는 기능

  • ATL COM 개체

  • ATL Dialog 개체

  • ATL 컨트롤

  • MFC 인터넷(WinInet) 클래스

  • MFC ISAPI 확장 DLL

  • 연결 지점

  • 지속성

  • 사용자 지정 표시기

  • 표준 C++ 라이브러리

StockTicker 구성 요소

이 단원에서는 StockTicker 구성 요소에 대해 좀 더 자세하게 설명합니다.

  • Stock Quotes 구성 요소
    공유 구성 요소인 ATL 개체는 ATL 프로젝트 응용 프로그램 마법사에서 만들어지는데 MFC WinInet 지원 기능과 기타 유틸리티 클래스를 사용합니다. Stock Quotes에서는 모니터할 주식을 추적하여 인터넷에서 주식 정보를 찾아 업데이트합니다. 응용 프로그램에서 동기 업데이트나 비동기 업데이트에 이러한 구성 요소를 사용할 수 있습니다. StartUpdating 메서드가 호출되면 자식 스레드가 만들어져 함수에서 즉시 반환합니다. 자식 스레드는 업데이트 간격이 경과될 때까지 타이머와 대기를 만듭니다. 그런 다음 Stock Quotes 구성 요소에서 온 업데이트를 요청합니다. 연이어 Update를 호출하면 업데이트가 발생해야 함을 표시하는 스레드 메시지를 자식 스레드에 게시하고 Update는 즉시 반환합니다. 동기 모드에서 Update는 다운로드가 완료될 때까지 차단됩니다.

    Stock Quotes 구성 요소는 주식 정보를 다운로드한 웹 사이트를 나타내는 주식 데이터 소스 개체를 추적합니다. StockTicker에서 주식 정보를 업데이트할 때 Stock Quotes 구성 요소는 주식 데이터 소스 목록을 점검한 다음 정보 다운로드를 시도합니다. 시도가 실패하면 구성 요소는 다음 소스에서 주식 데이터를 다운로드하려고 합니다. 모든 주식 데이터 소스에서 정보 다운로드에 실패하면 증권 시세 표시기 창의 주식 기호 다음에 <NA>가 표시됩니다.

    주식 데이터는 HTML 형식으로 웹 사이트에서 수집됩니다. 마지막으로 업데이트된 이후 현재 가격과 가격 변경으로 알기 위해 데이터를 구문 분석해야 합니다. Stock Quotes 구성 요소는 Current:나 Change:와 같은 두 개의 키워드를 검색하여 이러한 구문 분석을 처리합니다. 키워드 다음에 오는 데이터가 소수이거나 10진수이면 구성 요소에서 데이터를 읽습니다.

    주식 웹 사이트에 따라 데이터를 전달하는 방식이 다르므로 Stock Quotes가 주식 정보를 얻기 위해 사용하는 알고리즘을 변경해야 할 수도 있습니다.

    사용자 자신의 주식 데이터 소스를 추가하는 방법에 대한 자세한 설명은 아래를 참조하십시오.

  • ISAPI 확장 DLL
    기본 주식 데이터 소스는 로컬 ISAPI 확장 DLL입니다. ISAPI 확장 DLL은 실제 주식 데이터를 반환하지 않고 사용자가 특정 주식의 데이터를 요청하면 DLL에서 알려진 주식의 목록에 이 주식 기호가 있는지 검사합니다. 주식 기호가 목록에 있으면 DLL에서 데이터를 검색하여 임의로 현재 주식 가격을 상향 조정하거나 하향 조정합니다. 주식 기호가 새로운 것이면 목록에 추가한 다음 초기 주식 가격을 설정합니다.

  • Stock Ticker 컨트롤
    이 컨트롤은 ATL 개체 마법사로 만들었습니다. 쉽게 사용할 수 있도록 MFC를 사용합니다.

    StockTicker의 외부에서 이 컨트롤을 사용할 수 있습니다.

    Stock Ticker 컨트롤은 Stock Quotes 구성 요소를 사용하여 주식 정보 및 업데이터를 처리합니다. 컨트롤 자체를 스트림에 저장해야 할 때면 Stock Quotes 구성 요소에 저장 여부를 묻기도 합니다.

    시작 시, Stock Ticker 컨트롤은 Stock Quotes 구성 요소를 만들고 주식 정보 업데이트를 시작할 것인지 구성 요소에게 묻습니다. 그러면 컨트롤에서는 그리기/렌더링 루프에 사용할 타이머를 시작합니다. 주식 데이터가 업데이트되었으면 Stock Quotes 구성 요소는 연결 지점을 통해 컨트롤에 알립니다. 그러면 컨트롤에서는 Stock Quotes 구성 요소로부터 모든 주식 정보를 수집하여 문자열을 만듭니다. 이 문자열은 컨트롤에 표시되고 오른쪽에서 왼쪽으로 스크롤됩니다.

  • Stock Ticker 컨테이너
    Stock Ticker 컨테이너는 MFC 응용 프로그램 마법사를 사용하여 만든 MFC 활성 컨트롤 컨테이너입니다. 이 컨테이너는 작업을 끝낼 때 크기와 위치를 저장하고 다시 시작할 때 이전 상태로 복구합니다.

    컨테이너에서 StockTicker 메뉴도 처리합니다.

키워드

이 샘플에서는 다음의 키워드를 보여 줍니다.

IEnumXXX, CWinThread, std::vector, IConnectionPointContainer, CInternetSession, CInternetException, AfxParseURL, CHttpConnection, CHttpFile, COleClientItem, COleDocument, COleDispatchDriver, CreateILockBytesOnHGlobal, StgCreateDocfileOnILockBytes, OleSave, StgIsStorageILockBytes, GetHGlobalFromILockBytes, COleFont, std::basic_istream, std::basic_ostream, CHttpServer, CComPtr, CDialogImpl, std::list, IPersistStreamInit, IFontDisp, IViewObjectEx, CComControl, IOleControl, IPropertyPageImpl, CBitmap, CDC, IPersistStreamInit_Load, IPersistStreamInit_Save, IConnectionPointImpl

참고:

이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다.

참고 항목

기타 리소스

MFC 샘플