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

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

?? eztwain.c

?? DELPHI 直接操作掃描儀接口的例子。
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
	}

	return (nState == 4);
} // TWAIN_OpenDefaultSource


int EZTAPI TWAIN_EnableSource(HWND hwnd)
{
	if (nState != 4) return FALSE;

	twUI.ShowUI = !bHideUI;
	twUI.hParent = (TW_HANDLE)hwnd;
	TWAIN_DS(DG_CONTROL, DAT_USERINTERFACE, MSG_ENABLEDS, &twUI);
	if (rc == TWRC_FAILURE) {
		RecordError(ED_DS_FAILURE);
	} else {
		// rc could be either SUCCESS or CHECKSTATUS
		nState = 5;
		// note, source will set twUI.ModalUI.
	}
	return (nState == 5);
} // TWAIN_EnableSource


int EZTAPI TWAIN_DisableSource(void)
{
	if (nState == 5 &&
		TWAIN_DS(DG_CONTROL, DAT_USERINTERFACE, MSG_DISABLEDS, &twUI)) {
		nState = 4;
	}
	return (nState <= 4);
} // TWAIN_DisableSource


int EZTAPI TWAIN_CloseSource(void)
{
	rc = TWRC_SUCCESS;

	if (nState == 5) TWAIN_DisableSource();
	if (nState == 4 &&
		TWAIN_Mgr(DG_CONTROL, DAT_IDENTITY, MSG_CLOSEDS, &SourceId)) {
		nState = 3;
	}
	return (nState <= 3);
} // TWAIN_CloseSource


int EZTAPI TWAIN_CloseSourceManager(HWND hwnd)
{
	TW_INT32 hwnd32 = (TW_INT32)hwnd;

	rc = TWRC_SUCCESS;

	if (TWAIN_CloseSource() &&
		TWAIN_Mgr(DG_CONTROL, DAT_PARENT, MSG_CLOSEDSM, &hwnd32)) {
		nState = 2;
	}
	return (nState <= 2);
} // TWAIN_CloseSourceManager


int EZTAPI TWAIN_UnloadSourceManager(void)
{
	if (nState == 2) {

		if (hDSMLib) {
			FreeLibrary(hDSMLib);
			hDSMLib = NULL;
		}
		pDSM_Entry = NULL;
		nState = 1;
	}
	return (nState == 1);
} // TWAIN_UnloadSourceManager



void EZTAPI TWAIN_ModalEventLoop(void)
{
	MSG msg;

	while ((nState >= 5) && !hDib && GetMessage((LPMSG)&msg, NULL, 0, 0)) {
		if (!TWAIN_MessageHook ((LPMSG)&msg)) {
			TranslateMessage ((LPMSG)&msg);
			DispatchMessage ((LPMSG)&msg);
		}
	} // while
} // TWAIN_ModalEventLoop


int EZTAPI TWAIN_MessageHook(LPMSG lpmsg)
// returns TRUE if msg processed by TWAIN (source)
{
	int   bProcessed = FALSE;

	if (nState >= 5) {
		// source enabled
		TW_EVENT	twEvent;
		twEvent.pEvent = (TW_MEMREF)lpmsg;
		twEvent.TWMessage = MSG_NULL;
		// see if source wants to process (eat) the message
		TWAIN_DS(DG_CONTROL, DAT_EVENT, MSG_PROCESSEVENT, &twEvent);
		bProcessed = (rc == TWRC_DSEVENT);
		switch (twEvent.TWMessage) {
			case MSG_XFERREADY:
				nState = 6;
				// TWAIN_NativeXferReady(lpmsg);  Spike's original code
				TWAIN_NativeXferGetAll(lpmsg);  // replace with this -- DSN 07/98
				break;
			case MSG_CLOSEDSREQ:
				TWAIN_DisableSource();
				break;
			case MSG_NULL:
				// no message returned from DS
				break;
		} // switch
	 }
	return bProcessed;
} // TWAIN_MessageHook



void TWAIN_NativeXferReady(LPMSG pmsg)
// Spike's original code.  Note that it doesn't get called any more; instead,
// Message_Hook calls NativeXferGetAll, which supports multiple image
// acquisition. -- DSN 7/13/98
{
	TW_UINT32		hNative;

	 pmsg = pmsg;		// suppress warning

	assert(nState == 6);
	TWAIN_DS(DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hNative);

	if (rc != TWRC_XFERDONE) hDib = NULL;

	switch (rc) {
		case TWRC_XFERDONE:
			// hNative contains a valid native image (handle)
			// application is responsible for de-allocating.
			nState = 7;
			// Need to acknowledge the end of the transfer
			hDib = (HANDLE)hNative;
			// above line added by DSN: add to list of hdibs and advance counter
			break;

		case TWRC_CANCEL:
			// user cancelled the transfer
			// hNative is invalid
			nState = 7;
			// acknowledge the end of the transfer
			break;

		case TWRC_FAILURE:
		default:
			// the transfer failed (e.g. insufficient memory)
			// hNative is invalid
			// check condition code for more info
			nState = 6;
			// state transition failed
			// image data is still pending
			break;
	} // switch
	assert(nState >= 6);

	TWAIN_AbortAllPendingXfers();	// state 7 or 6 -> state 5

} // TWAIN_NativeXferReady


int EZTAPI TWAIN_AbortAllPendingXfers(void)
// Not used any more because its only caller was TWAIN_NativeXferReady, which
// is now ignored in favor or TWAIN_NativeXferGetAll.  -- DSN 7/13/98
{
	if (nState == 7 &&
		TWAIN_DS(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &pendingXfers)) {
		nState = pendingXfers.Count ? 6 : 5;
	}
	if (nState == 6 &&
		TWAIN_DS(DG_CONTROL, DAT_PENDINGXFERS, MSG_RESET, &pendingXfers)) {
		nState = 5;
	}
	return (nState <= 5);
} // TWAIN_AbortAllPendingXfers


void EZTAPI TWAIN_NativeXferGetAll(LPMSG pmsg)
// A modified version of Spike's original code that loops through until
// no more images are left. -- DSN 7/98
{
	TW_UINT32		hNative;

	pmsg = pmsg;		// suppress warning; (sic)  -- does this do anything?  DSN
	assert(nState == 6);

	do {
		TWAIN_DS(DG_IMAGE, DAT_IMAGENATIVEXFER, MSG_GET, &hNative);

		if (rc != TWRC_XFERDONE) hDib = NULL;

		switch (rc) {
			case TWRC_XFERDONE:
				// hNative contains a valid native image (handle)
				// application is responsible for de-allocating.
				nState = 7;
				// Need to acknowledge the end of the transfer
				hDib = (HANDLE)hNative;  // thus hDib represents MOST RECENT image!
				hDibList[nDibs] = hDib;
				// added by DSN: add to list of hdibs and advance counter
				if (hDibCallback_registered == TW_CALLBACK_REGISTERED)    // user may specify callback
					  (*lpfnDibCallback)(hDibList[nDibs], nDibs);   // great for multithreading!
				nDibs++;
				break;

			case TWRC_CANCEL:
				// user cancelled the transfer
				// hNative is invalid
				nState = 7;
				// acknowledge the end of the transfer
				break;

			case TWRC_FAILURE:
				default:
				// the transfer failed (e.g. insufficient memory)
				// hNative is invalid
				// check condition code for more info
				nState = 6;
				// state transition failed
				// image data is still pending
				break;
		} // switch
		assert(nState >= 6);
		if (nState == 7 && TWAIN_DS(DG_CONTROL, DAT_PENDINGXFERS, MSG_ENDXFER, &pendingXfers))
			nState = pendingXfers.Count ? 6 : 5;
	} while (nState == 6);

	//	TWAIN_AbortAllPendingXfers();	// state 7 or 6 -> state 5
	// Commented out the above; we want to get all xfers!!

} // TWAIN_NativeXferReady
///////////////////////////////////////////////////////////////////////
// DIB/BMP File I/O

int EZTAPI TWAIN_WriteNativeToFilename(HANDLE hdib, LPCSTR pszFile)
// Writes a DIB handle to a .BMP file
//
// hdib		= DIB handle, as returned by TWAIN_AcquireNative
// pszFile	= far pointer to NUL-terminated filename
// If pszFile is NULL or points to a null string, prompts the user
// for the filename with a standard file-save dialog.
//
// Return values:
//	 0	success
//	-1	user cancelled File Save dialog
//	-2	file open error (invalid path or name, or access denied)
//	-3	(weird) unable to lock DIB - probably an invalid handle.
//	-4	writing BMP data failed, possibly output device is full
{
	int result;
	char szFile[256];
	HFILE fh;
	OFSTRUCT ofs;

	if (!pszFile || !*pszFile) {
		// prompt for filename
		OPENFILENAME ofn;
		int nExt;

		FMEMSET(&ofn, 0, sizeof ofn);
		szFile[0] = '\0';
		ofn.lStructSize = sizeof(OPENFILENAME);
		ofn.hwndOwner = NULL;
		ofn.lpstrFilter = "Windows Bitmap (*.bmp)\0*.bmp\0\0";
		ofn.lpstrFile= szFile;
		ofn.nMaxFile = sizeof(szFile) - 5;
		ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY |
					OFN_NOREADONLYRETURN;

		if (!GetSaveFileName(&ofn)) {
			return -1;					// user cancelled dialog
		}
		// supply default extension - GetSaveFileName doesn't seem to do it!
		nExt = ofn.nFileExtension;
		if (nExt && !szFile[nExt]) {
			// no extension
			lstrcat(szFile, ".bmp");
		}
		pszFile = szFile;
	}

	result = -2;
	fh = OpenFile(pszFile , &ofs, OF_CREATE | OF_WRITE | OF_SHARE_EXCLUSIVE);
	if (fh != HFILE_ERROR) {
		result = TWAIN_WriteNativeToFile(hdib, fh);
		_lclose(fh);
	}
	return result;
} // TWAIN_WriteNativeToFilename


int EZTAPI TWAIN_WriteNativeToFile(HANDLE hdib, HFILE fh)
// Writes a DIB to a file in .BMP format.
//
// hdib		= DIB handle, as returned by TWAIN_AcquireNative
// fh		= file handle, as returned by C _open or Windows _lopen or OpenFile
//
// Return value as for TWAIN_WriteNativeToFilename
{
	int result = -3;
	LPBITMAPINFOHEADER lpbmi = (LPBITMAPINFOHEADER)GlobalLock(hdib);
	if (lpbmi) {
		result = -4;
		if (TWAIN_WriteDibToFile(lpbmi, fh)) {
			result = 0;			// success
		}
		GlobalUnlock(hdib);
	}
	return result;
} //  TWAIN_WriteNativeToFile


int EZTAPI TWAIN_WriteDibToFile(LPBITMAPINFOHEADER lpDIB, HFILE fh)
{
	BITMAPFILEHEADER		bfh;
	int						fOk = FALSE;
	int						nBPP = lpDIB->biBitCount;
	int						nColors = (int)lpDIB->biClrUsed;

	// figure out actual size of color table
	if (nColors == 0 && nBPP <= 8) {
		nColors = (1 << nBPP);
	}
	if (lpDIB->biCompression == BI_RGB) {
		// uncompressed bitmap, image size might not be set
		DWORD dwBytesPerRow = (((lpDIB->biWidth * nBPP) + 31) / 32) * 4;
		lpDIB->biSizeImage = dwBytesPerRow * lpDIB->biHeight;
	} else if (lpDIB->biSizeImage == 0) {
		// compressed bitmap, image size had damn well better be set!
		return FALSE;
		// This could be hacked around with something like this:
		//lpDIB->biSizeImage = GlobalSize((HANDLE)GlobalHandle(HIWORD(lpDIB)));
	}

	// Set up BMP header.
	bfh.bfType = 0x4d42;                // "BM"
	bfh.bfReserved1 = 0;
	bfh.bfReserved2 = 0;
	bfh.bfOffBits = sizeof(BITMAPFILEHEADER) +
					sizeof(BITMAPINFOHEADER) +
					sizeof(RGBQUAD) * nColors;
	bfh.bfSize = bfh.bfOffBits + lpDIB->biSizeImage;

	if (_lwrite(fh, (LPCSTR)&bfh, sizeof bfh) == sizeof bfh) {

		INT32 towrite = bfh.bfSize - (INT32)sizeof bfh;

		if (HUGEWRITE(fh, (LPCSTR)lpDIB, towrite) == towrite) {
			fOk = TRUE;
		}
	}

	return fOk;

} // TWAIN_WriteDibToFile


HANDLE EZTAPI TWAIN_LoadNativeFromFilename(LPCSTR pszFile)
// Load a .BMP file and return a DIB handle (as from AcquireNative.)
//
// pszFile	= far pointer to NUL-terminated filename
// If pszFile is NULL or points to a null string, prompts the user
// for the filename with a standard file-open dialog.
//
// Return value:
//	handle to a DIB if successful, otherwise NULL (0).
{
	HANDLE hdib = NULL;
	char szFile[256];
	HFILE fh;
	OFSTRUCT ofs;

	if (!pszFile || !*pszFile) {
		// prompt for filename
		OPENFILENAME ofn;
		int nExt;

		FMEMSET(&ofn, 0, sizeof ofn);
		szFile[0] = '\0';
		ofn.lStructSize = sizeof(OPENFILENAME);
		ofn.hwndOwner = NULL;
		ofn.lpstrFilter = "Windows Bitmaps (*.bmp)\0*.bmp\0\0";
		ofn.lpstrFile= szFile;
		ofn.nMaxFile = sizeof(szFile) - 5;
		ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY |
					OFN_NOREADONLYRETURN;

		if (!GetOpenFileName(&ofn)) {
			return NULL;					// user cancelled dialog
		}
		// supply default extension - GetOpenFileName doesn't seem to do it!
		nExt = ofn.nFileExtension;
		if (nExt && !szFile[nExt]) {
			// no extension
			lstrcat(szFile, ".bmp");
		}
		pszFile = szFile;
	}

	fh = OpenFile(pszFile, &ofs, OF_READ | OF_SHARE_DENY_WRITE);
	if (fh != HFILE_ERROR) {
		hdib = TWAIN_LoadNativeFromFile(fh);
		_lclose(fh);
	}
	return hdib;
} // TWAIN_LoadNativeFromFilename


HANDLE EZTAPI TWAIN_LoadNativeFromFile(HFILE fh)
// Like LoadNativeFromFilename, but takes an already open file handle.
{
	HANDLE hdib;
	LPBYTE pbi;
	BITMAPFILEHEADER bmh;
	INT32 dibSize;
	// Read BMP file header and validate
	if (_lread(fh, &bmh, sizeof bmh) != sizeof bmh ||
		bmh.bfType != 0x4d42) {
		return NULL;
	}
	// Allocate global block for DIB
	dibSize = bmh.bfSize - sizeof bmh;
	hdib = GlobalAlloc(0, dibSize);
	pbi = (LPBYTE)GlobalLock(hdib);
	if (!hdib || !pbi) {
		return NULL;
	}

	// Read DIB from file
	if (_hread(fh, pbi, dibSize) != dibSize) {
		GlobalUnlock(hdib);
		GlobalFree(hdib);
		return NULL;
	}
	GlobalUnlock(hdib);
	return hdib;
} // TWAIN_LoadNativeFromFile

///////////////////////////////////////////////////////////////////////
// TWAIN State 4 Negotiation Functions

int EZTAPI TWAIN_NegotiateXferCount(int nXfers)
{
	return TWAIN_SetCapOneValue(CAP_XFERCOUNT, TWTY_INT16, nXfers);
} // TWAIN_NegotiateXferCount


int EZTAPI TWAIN_NegotiatePixelTypes(unsigned wPixTypes)
{
	TW_CAPABILITY 		cap;
	void far *			pv;
	int					fSuccess = FALSE;

	if (nState != TWAIN_SOURCE_OPEN) {
		return RecordError(ED_NOT_STATE_4);
	}

	if (TWAIN_ANYTYPE == wPixTypes) {
		return TRUE;			// that was easy!
	}
                                                                           
                                                                           
	// Fill in capability structure
	cap.Cap = ICAP_PIXELTYPE;			// capability id
	cap.ConType = TWON_ENUMERATION;		// favorite type of container (should be ignored...)

	if (!TWAIN_DS(DG_CONTROL, DAT_CAPABILITY, MSG_GET, (TW_MEMREF)&cap)) {
		return RecordError(ED_CAP_GET);
	}
	if (!cap.hContainer) {
		return RecordError(ED_NULL_HCON);
	}
	if (!(pv = GlobalLock(cap.hContainer))) {
		// this source is invalid, further negotiation is unlikely to succeed
		return RecordError(ED_BAD_HCON);
	}

	switch (cap.ConType) {

		case TWON_ENUMERATION: {
			TW_ENUMERATION far *pcon = (TW_ENUMERATION far *)pv;
			if (pcon->NumItems < 1) {
				RecordError(ED_CAP_GET_EMPTY);
			} else if (pcon->ItemType != TWTY_UINT16 && pcon->ItemType != TWTY_INT16) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久久精品一区二区| 综合电影一区二区三区| 777午夜精品视频在线播放| 欧美在线看片a免费观看| 99国产精品久久久久| 成人免费视频免费观看| 成人精品亚洲人成在线| www.色精品| 一本色道综合亚洲| 在线观看欧美黄色| 欧美日本在线观看| 在线播放日韩导航| 日韩免费高清视频| 久久精品在线观看| 国产精品对白交换视频| 一区二区三区在线视频播放| 香蕉乱码成人久久天堂爱免费| 五月天视频一区| 精品一区二区综合| 成人污污视频在线观看| 色94色欧美sute亚洲13| 91麻豆精品国产| 久久亚洲精精品中文字幕早川悠里| 久久人人超碰精品| 国产精品美女久久久久久| 18欧美乱大交hd1984| 亚洲电影中文字幕在线观看| 久久国产生活片100| 国产不卡视频一区| 色哟哟欧美精品| 日韩一级二级三级| 国产精品对白交换视频 | 1区2区3区国产精品| 一二三四区精品视频| 美日韩一级片在线观看| 国产91富婆露脸刺激对白| 91国产成人在线| 日韩欧美综合一区| 国产精品美女一区二区在线观看| 亚洲精品一二三| 老司机免费视频一区二区| 成人app在线| 欧美军同video69gay| 久久精品男人天堂av| 亚洲国产精品一区二区www | 欧美专区日韩专区| 亚洲精品一区二区在线观看| 一区二区在线观看免费| 久久99热狠狠色一区二区| 色综合天天综合| 久久亚洲一区二区三区四区| 一区二区欧美精品| 国产精品中文字幕一区二区三区| 日本高清不卡在线观看| 国产亚洲短视频| 五月天欧美精品| 99re热视频精品| 日韩欧美一区二区在线视频| 亚洲视频狠狠干| 国产剧情一区在线| 欧美精品乱人伦久久久久久| 国产精品久久二区二区| 精品亚洲成a人在线观看| 欧美视频一区二| 中文字幕+乱码+中文字幕一区| 青青草原综合久久大伊人精品 | 精品在线播放免费| 欧美日韩一区二区电影| 国产精品久久午夜夜伦鲁鲁| 日韩二区在线观看| 欧美在线小视频| 中文字幕在线不卡| 国产精品99久久久久久有的能看| 欧美高清一级片在线| 亚洲蜜臀av乱码久久精品| 国产成人日日夜夜| 精品国产一区二区三区不卡 | 亚洲免费高清视频在线| 国产激情一区二区三区| 欧美成人r级一区二区三区| 亚洲18色成人| 在线观看区一区二| 综合亚洲深深色噜噜狠狠网站| 国产一区中文字幕| 精品国产露脸精彩对白| 免费观看30秒视频久久| 在线成人av影院| 亚洲一卡二卡三卡四卡五卡| 91麻豆swag| 亚洲人成在线播放网站岛国| 成人av在线网站| 久久精品人人爽人人爽| 麻豆国产91在线播放| 欧美一区二区三区视频免费 | 国产激情视频一区二区三区欧美 | 国产精品理论在线观看| 国产成人丝袜美腿| 日本一区二区三区国色天香 | 91久久精品一区二区三| 日韩毛片一二三区| 91欧美激情一区二区三区成人| 亚洲国产成人自拍| jlzzjlzz亚洲女人18| 中文字幕日本不卡| 91香蕉视频mp4| 亚洲美女屁股眼交3| 日本高清不卡aⅴ免费网站| 一区二区三区免费在线观看| 欧美中文字幕一区二区三区亚洲| 久久综合综合久久综合| 欧美一区二区三区爱爱| 蜜桃视频一区二区三区在线观看| 日韩欧美在线1卡| 精品亚洲免费视频| 欧美激情资源网| 91在线云播放| 亚洲电影欧美电影有声小说| 欧美一区二区私人影院日本| 久久狠狠亚洲综合| 中文字幕精品一区二区精品绿巨人| 成人免费黄色大片| 一区二区三区四区在线免费观看| 精品视频一区二区不卡| 免费人成精品欧美精品| 久久欧美一区二区| www.爱久久.com| 亚洲v日本v欧美v久久精品| 欧美一级淫片007| 国产91色综合久久免费分享| 亚洲精品成人悠悠色影视| 欧美精品aⅴ在线视频| 国产一区美女在线| 亚洲欧美日韩国产成人精品影院| 欧美日韩精品一区二区三区四区| 蜜臀精品一区二区三区在线观看| 国产亚洲综合在线| 日本丶国产丶欧美色综合| 日本成人在线不卡视频| 国产欧美精品区一区二区三区| 一本一本久久a久久精品综合麻豆| 天天色综合成人网| 久久亚洲影视婷婷| 在线中文字幕一区| 精品无人区卡一卡二卡三乱码免费卡| 国产欧美精品区一区二区三区| 在线看国产一区二区| 黄一区二区三区| 亚洲精品高清视频在线观看| 日韩精品专区在线影院重磅| 国产98色在线|日韩| 亚洲精品成a人| 久久久亚洲午夜电影| 91老师片黄在线观看| 久久se精品一区二区| 亚洲精品综合在线| 欧美一区二区在线播放| 972aa.com艺术欧美| 理论片日本一区| 一区二区在线观看av| 久久久美女毛片| 欧美视频一区二区三区四区| 粉嫩在线一区二区三区视频| 日日噜噜夜夜狠狠视频欧美人| 国产精品视频免费| 日韩午夜激情电影| 欧美三级日韩三级国产三级| 高清在线成人网| 日韩avvvv在线播放| 亚洲另类色综合网站| 国产欧美日韩激情| 91精品国产乱| 欧美在线综合视频| 福利电影一区二区三区| 久久er99热精品一区二区| 一区二区三区国产精华| 国产精品视频线看| 26uuu精品一区二区| 日韩一区二区三区av| 色哟哟在线观看一区二区三区| 国产91丝袜在线观看| 国产一区二区福利视频| 人妖欧美一区二区| 无码av免费一区二区三区试看 | 蜜桃免费网站一区二区三区| 亚洲你懂的在线视频| 欧美va天堂va视频va在线| 欧美日韩精品一区视频| 在线免费观看日本欧美| jlzzjlzz欧美大全| 成人精品国产福利| 国产成人免费视频网站高清观看视频 | 亚洲色图在线看| 国产亚洲欧美日韩日本| 久久这里只精品最新地址| 欧美videos大乳护士334| 欧美一区二区三区四区视频 | 一区av在线播放| 一区二区三区中文字幕电影| 亚洲免费毛片网站| 亚洲美女精品一区|