亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? client.cpp

?? COM技術(shù)內(nèi)幕配書(shū)源碼
?? CPP
字號(hào):
//
// Client.cpp - Client implementation
//
#include <windows.h> 
#include <stdlib.h>
#include <objbase.h>
#include <assert.h>

#define __OUTPROC_SERVER_ // To get the proper definition of trace
#include "Util.h"
#undef __OUTPROC_SERVER_ 

#include "Iface.h"
#include "Apart.h"
#include "Cli-Apt.h"

static inline void trace(char* msg)
	{ Util::Trace("Client", msg, S_OK) ;} 
static inline void trace(char* msg, HRESULT hr)
	{ Util::Trace("Client", msg, hr) ;}

///////////////////////////////////////////////////////////
//
// The client application
//

#include "resource.h"

///////////////////////////////////////////////////////////
//
// Global variables for main apartment
//
// Module handle
HINSTANCE g_hModule = NULL ;

// Handle to child listbox
HWND g_hWndListBox = NULL ;

// ID of the timer
static UINT g_TimerId  = 0 ;

// Pointer to the interface on our component
static IX* g_pIX = NULL ; 

// Pointer to apartment thread class
CClientApartment* g_pApartment = NULL ;

///////////////////////////////////////////////////////////
//
// Functions prototypes
//

// Create and initialize the main window.
HWND InitWindow(int nCmdShow) ;

// Create the child listbox control.
BOOL CreateChildListbox(HWND hWndParent, int cx, int cy) ;

// The main window procedure
extern "C" LONG APIENTRY MainWndProc(HWND hWnd,
                                     UINT message,
                                     UINT wParam,
                                     LONG lParam) ;

// InitializeApartment - Create the thread and the component.
void InitializeApartment(HWND hWndMain) ;

// Timer tick message handler
void OnTick() ;

// Delete and tidy.
void CleanUp(HWND hWnd) ;

///////////////////////////////////////////////////////////
//
// WinMain function
//
extern "C" int WINAPI WinMain(HINSTANCE hInstance,
                              HINSTANCE hPrevInstance,
                              LPSTR lpCmdLine,
                              int nCmdShow)
{
	// Initialize the COM Library.
	HRESULT hr = CoInitialize(NULL) ;
	if (FAILED(hr))
	{
		return 0 ;
	}
   
	// Create the main window.
	HWND hWndMain = InitWindow(nCmdShow) ;
	if (hWndMain)
	{
		// Initialize the apartment.
		InitializeApartment(hWndMain) ;
		
		// Wait for a message.
		MSG msg ;
		while (::GetMessage(&msg, 0, 0, 0) > 0)
		{
			::DispatchMessage(&msg) ;
		}
	}

	// Uninitialize the COM Library.
	CoUninitialize() ;
	return 0 ;
}


///////////////////////////////////////////////////////////
//
// Initialize window.
//
HWND InitWindow(int nCmdShow) 
{
	// Fill in window class structure with parameters
      // that describe the main window.
	WNDCLASS  wcListview ;
	wcListview.style = 0 ;                     
	wcListview.lpfnWndProc =   (WNDPROC)MainWndProc ; 
	wcListview.cbClsExtra =    0 ;              
	wcListview.cbWndExtra =    0 ;              
	wcListview.hInstance =     g_hModule ;
	wcListview.hIcon =         ::LoadIcon(g_hModule,
	                                      MAKEINTRESOURCE(IDC_ICON)) ;
	wcListview.hCursor =       ::LoadCursor(NULL, IDC_ARROW) ;
	wcListview.hbrBackground = ::GetStockObject(WHITE_BRUSH) ; 
	wcListview.lpszMenuName =  NULL ;  
	wcListview.lpszClassName = "MyServerWinClass" ;

	BOOL bResult = ::RegisterClass(&wcListview) ;
	if (!bResult)
	{
		return NULL ;
	}

	HWND hWndMain ;

	hWndMain = ::CreateWindow("MyServerWinClass",
	                          "Component Server", 
	                          WS_OVERLAPPEDWINDOW,
	                          CW_USEDEFAULT, CW_USEDEFAULT,
	                          CW_USEDEFAULT, CW_USEDEFAULT,
	                          NULL,               
	                          NULL,               
	                          g_hModule,          
	                          NULL) ;

	// If window could not be created, return "failure".
	if (!hWndMain)
	{
		return NULL ;
	}

	// Make the window visible; update its client area;
	// and return "success".
	::ShowWindow(hWndMain, nCmdShow) ;
	::UpdateWindow(hWndMain) ; 
	
	return hWndMain ;      
}

///////////////////////////////////////////////////////////
//
// Create the listbox child control in the main window.
//
BOOL CreateChildListbox(HWND hWndParent, int cx, int cy) 
{
	// Create a listbox for output.
	g_hWndListBox =
		::CreateWindow("LISTBOX",
		               NULL, 
		               WS_CHILD | WS_VISIBLE | LBS_USETABSTOPS
			               | WS_VSCROLL | LBS_NOINTEGRALHEIGHT,
		               0, 0, cx, cy,
		               hWndParent,               
		               NULL,               
		               g_hModule,          
		               NULL) ;
	if (g_hWndListBox  == NULL)
	{
		// Listbox not created
		::MessageBox (NULL, "Listbox not created!", NULL, MB_OK ) ;
		return FALSE ;
	}
	else
	{
		return TRUE ;
	}
}

///////////////////////////////////////////////////////////
//
// InitializeApartment - Create the thread and the component.
//
void InitializeApartment(HWND hWnd)
{
	// Create a simple apartment object.
	g_pApartment = new CClientApartment ;

	// Start the thread.
	if (g_pApartment->StartThread())
	{
		trace("Successfully started thread.") ;

		// Create the component.
		HRESULT hr = g_pApartment->CreateComponent(CLSID_Component,
		                                           IID_IX,
		                                           (IUnknown**)&g_pIX) ;
		if (SUCCEEDED(hr))
		{
			trace("Successfully created component.") ;
			// Initialize the component.
			HRESULT hr = g_pIX->SetStartCount(1000) ;
			if (FAILED(hr))
			{
				trace("SetStartCount failed.", hr) ; 
			}

			// Start a timer.
			g_TimerId = SetTimer(hWnd, 369, 2*1000, NULL) ;
			assert(g_TimerId != 0) ;
			return ;
		}
	}
}

///////////////////////////////////////////////////////////
//
// OnTick - Called when the window gets a WM_TIMER message
//
void OnTick()
{
	if (g_pIX != NULL)
	{
		// Get the current count.
		long c = 0 ;
		HRESULT hr = g_pIX->GetCurrentCount(&c) ;
		assert(SUCCEEDED(hr)) ;

		// Display the count.
		strstream sout ;
		sout << "The current count is : "
		     << c 
		     << "."
		     << ends ;
		trace(sout.str()) ;
	}
}

///////////////////////////////////////////////////////////
//
// Main window procedure
//
extern "C" LONG APIENTRY MainWndProc(
	HWND hWnd,                // window handle
	UINT message,             // type of message
	UINT wParam,              // additional information
	LONG lParam)              // additional information
{
	DWORD dwStyle ;

	switch (message) 
	{
	case WM_CREATE:
		{
			// Create listbox control
			CREATESTRUCT* pcs = reinterpret_cast<CREATESTRUCT*>(lParam) ;
			if (!CreateChildListbox(hWnd, pcs->cx, pcs->cy))
			{
				return -1 ;
			}			
		}
		break ;

	case WM_SIZE:
		::MoveWindow(g_hWndListBox,
		             0, 0,
		             LOWORD(lParam),
		             HIWORD(lParam),
		             TRUE) ;
		break ;

	case WM_TIMER:
		OnTick() ;
		break ;

	case WM_DESTROY:     // message: window being destroyed
		::PostQuitMessage(0) ;
		break ;

	case WM_CLOSE:
		CleanUp(hWnd) ;
		//Fall through 
	default:
		return (DefWindowProc(hWnd, message, wParam, lParam));
	}
	return 0 ;
}

///////////////////////////////////////////////////////////
//
//	CleanUp
//
void CleanUp(HWND hWnd)
{
	// The list box is going away.
	g_hWndListBox = NULL ;

	// Kill the timer.
	if (g_TimerId != 0)
	{
		BOOL b = KillTimer(hWnd, g_TimerId) ;
		assert(b = TRUE) ;
		g_TimerId = 0 ;
	}

	// Remove interface pointer.
	if (g_pIX != NULL)
	{
		g_pIX->Release() ;
		g_pIX = NULL ;
	}

	if (g_pApartment != NULL)
	{
		g_pApartment->StopThread() ;
		delete g_pApartment ;
		g_pApartment = NULL ;
	}

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频视频在线观看免费| 欧美视频中文一区二区三区在线观看| 午夜国产不卡在线观看视频| 一区二区中文字幕在线| 久久麻豆一区二区| 日韩欧美综合在线| 欧美精品第1页| 欧美一区午夜视频在线观看| 欧美日韩中文字幕一区| 欧美性videosxxxxx| 在线亚洲高清视频| 成人黄色综合网站| 国产精品小仙女| 国产精品99久久久久久久女警 | 久久久精品蜜桃| 精品国产亚洲在线| 精品三级在线观看| 国产婷婷一区二区| 国产精品白丝在线| 亚洲精品第一国产综合野| 亚洲不卡av一区二区三区| 日本最新不卡在线| 国产在线视频一区二区三区| 国产不卡免费视频| 在线观看亚洲精品| 日韩视频免费观看高清完整版在线观看 | 亚洲一区在线看| 日韩精品一二三| 国产精品性做久久久久久| 97超碰欧美中文字幕| 欧洲一区二区三区在线| 欧美一区二区三区在线视频| 欧美精品一区二区三区在线| 国产精品白丝在线| 午夜欧美视频在线观看| 极品少妇xxxx精品少妇偷拍| 99久久久免费精品国产一区二区| 在线视频中文字幕一区二区| 日韩视频一区在线观看| 中文字幕中文在线不卡住| 亚洲国产精品天堂| 国产一区二区三区最好精华液| 成人久久视频在线观看| 欧美日韩一区二区三区在线看| 日韩精品中文字幕在线一区| 国产精品初高中害羞小美女文| 亚洲电影中文字幕在线观看| 国产精品白丝av| 欧美日本精品一区二区三区| 国产亚洲精品aa| 亚洲h精品动漫在线观看| 国产成人亚洲综合色影视| 在线视频欧美精品| 国产色产综合产在线视频| 亚洲国产美国国产综合一区二区| 国产综合色视频| 亚洲蜜臀av乱码久久精品蜜桃| 热久久久久久久| 不卡影院免费观看| 精品国产乱码久久久久久图片| 一区二区三区在线免费播放| 国产毛片精品一区| 欧美高清精品3d| 亚洲色图视频网站| 国产在线视频精品一区| 7777精品伊人久久久大香线蕉的 | 欧美视频一区在线观看| 亚洲国产高清在线| 美女诱惑一区二区| 精品视频一区三区九区| 国产精品久久久久久久久免费樱桃| 秋霞av亚洲一区二区三| 欧美视频你懂的| 亚洲欧美偷拍卡通变态| 国产成人综合视频| 亚洲精品一线二线三线| 午夜精彩视频在线观看不卡| 一本色道a无线码一区v| 国产精品私人自拍| 国产一区91精品张津瑜| 欧美一区二区三区在线| 亚洲高清不卡在线观看| 在线观看欧美精品| 国产精品国产三级国产普通话99| 国内精品伊人久久久久av一坑| 538在线一区二区精品国产| 亚洲精品成人精品456| 99精品黄色片免费大全| 国产精品免费av| 久久综合久久久久88| 麻豆91精品91久久久的内涵| 欧美日韩视频专区在线播放| 有坂深雪av一区二区精品| 成人av集中营| 国产精品色呦呦| 国产a区久久久| 久久久精品欧美丰满| 狠狠色2019综合网| 欧美videos大乳护士334| 日本成人在线网站| 欧美一级理论性理论a| 午夜精品久久久久久不卡8050| 在线观看视频91| 亚洲第一会所有码转帖| 欧美日韩一卡二卡| 视频一区视频二区在线观看| 欧美日韩电影一区| 日韩1区2区日韩1区2区| 777a∨成人精品桃花网| 日本美女一区二区| 精品国产乱码久久久久久闺蜜| 老司机精品视频导航| 精品国产成人系列| 狠狠色伊人亚洲综合成人| 久久综合久久综合九色| 国产成人福利片| 综合电影一区二区三区| 在线观看国产精品网站| 日韩精品久久久久久| 欧美一二三在线| 国产麻豆精品一区二区| 日本一区二区久久| 91福利精品第一导航| 丝袜美腿亚洲色图| 亚洲精品一区二区在线观看| 国产99精品在线观看| 亚洲日穴在线视频| 欧美日韩精品综合在线| 久久精品国产亚洲a| 欧美国产综合一区二区| 日本乱码高清不卡字幕| 肉丝袜脚交视频一区二区| 日韩精品一区二区三区在线 | 欧美另类久久久品| 蜜桃视频第一区免费观看| 国产日韩欧美在线一区| 91成人在线精品| 裸体健美xxxx欧美裸体表演| 国产欧美日韩在线视频| 欧美午夜精品久久久| 精品综合久久久久久8888| 亚洲欧洲精品一区二区精品久久久 | 欧洲人成人精品| 久久99精品国产.久久久久| 国产精品成人一区二区艾草 | 欧美一区二区在线免费观看| 国产精品99久久久久久久vr| 亚洲综合免费观看高清完整版 | 国产精品精品国产色婷婷| 欧美三区在线视频| 成人午夜私人影院| 亚洲国产精品综合小说图片区| 久久久久久久av麻豆果冻| 日本高清免费不卡视频| 韩国中文字幕2020精品| 亚洲乱码日产精品bd| 欧美tk丨vk视频| 一本到三区不卡视频| 久久精品国产亚洲高清剧情介绍 | 婷婷丁香激情综合| 中文字幕一区二区三区四区 | 亚洲视频小说图片| 日韩精品中文字幕一区二区三区 | 在线播放中文字幕一区| 9久草视频在线视频精品| 老司机午夜精品| 亚洲高清免费视频| 中文字幕一区二区三区四区| 精品国产自在久精品国产| 91久久国产综合久久| 国产成人自拍在线| 麻豆久久一区二区| 亚洲国产日韩精品| 国产精品青草久久| 久久网站最新地址| 欧美一级免费观看| 欧美在线观看你懂的| 成人福利视频在线看| 国产一区激情在线| 久久黄色级2电影| 日韩不卡在线观看日韩不卡视频| 亚洲精品视频在线| 国产精品乱码人人做人人爱| 日韩欧美成人午夜| 91精品国产综合久久久久久漫画| 色综合久久综合中文综合网| 高清日韩电视剧大全免费| 精品一区二区三区在线视频| 午夜欧美在线一二页| 亚洲国产精品麻豆| 一区二区三区在线视频播放| 日韩美女视频一区二区| 中文子幕无线码一区tr| 国产日产欧美一区二区三区| 久久久99精品久久| 精品国产伦一区二区三区观看体验| 欧美一级在线观看| 91精品免费观看| 欧美日韩中文字幕一区| 欧美日韩精品是欧美日韩精品|