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

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

?? engine.cpp

?? usb 在vc下的驅(qū)動(dòng)程序
?? CPP
字號(hào):
// =============================================
// Program Name: engine
// =============================================

#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mmsystem.h>

#pragma hdrstop
#include <string.h>
#include <stdlib.h>
#include <tchar.h>
#include <stdio.h> //for _vsntprintf()

#include "resource.h"

#include "engine.h"
#include "dnw.h"
#include "fileopen.h"
#include "font.h"
#include "d_box.h"
#include "usbtxrx.h"

#pragma warning (disable : 4100)
#pragma warning (disable : 4068)

TCHAR szAppName[] = APPNAME;

HINSTANCE _hInstance;
HWND _hwnd;
static HWND _hwndEdit;

#define EDITID   1
#define MAX_EDIT_BUF_SIZE (0x7FFE) 
#define EDIT_BUF_SIZE (0x6000)   
#define EDIT_BUF_DEC_SIZE (0x2000)

//1) Why program doesn't work when EDIT_BUF_SIZE=50000? 
//   If the data size of the edit box is over about 30000, 
//   EM_REPLACESEL message needs very long time.
//   So,EDIT_BUF_SIZE is limited to 30000. 
//   If the size is bigger than 30000, the size will be decreased by 5000. 
//2) WM_CLEAR to the edit box doesn't work. only, EM_REPLACESEL message works.

// ==============================================
// INITIALIZATION
// ==============================================

//////////////////////////////////////
// The WinMain function is the program entry point.
//////////////////////////////////////
#pragma argsused
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance,
                   LPSTR  lpszCmdParam, int nCmdShow)
{
    MSG  Msg;
    _hInstance = hInst;

    //OutputDebugString("");

    if (!Register(hInst))
	return FALSE;

    if (!Create(hInst, nCmdShow))
	return FALSE;
    
    while (GetMessage(&Msg, NULL, 0, 0))
    {
	if( _hDlgDownloadProgress ==0 || !IsDialogMessage(_hDlgDownloadProgress,&Msg) ) 
	    //To throw the message to dialog box procedure
	{
	    TranslateMessage(&Msg);

	    //To intercept key-board input instead of edit control.
	    if(Msg.message==WM_CHAR) 
		SendMessage(_hwnd,WM_CHAR,Msg.wParam,Msg.lParam);
	    else	//2000.1.26
		DispatchMessage(&Msg);
	    //EB_Printf("."); //for debug
	}
    }
    return Msg.wParam;
}


//////////////////////////////////////
// Register Window
//////////////////////////////////////
BOOL Register(HINSTANCE hInst)
{
#if 0
  WNDCLASS WndClass;

  WndClass.style          = CS_HREDRAW | CS_VREDRAW;
  WndClass.lpfnWndProc    = WndProc;
  WndClass.cbClsExtra     = 0;
  WndClass.cbWndExtra     = 0;
  WndClass.hInstance      = hInst;
  WndClass.hIcon          = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
  WndClass.hCursor        = LoadCursor(NULL,IDC_ARROW);
  WndClass.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
  WndClass.lpszMenuName   = MAKEINTRESOURCE(IDR_MENU1);
  WndClass.lpszClassName  = szAppName;

  return (RegisterClass (&WndClass) != 0);
#else
  WNDCLASSEX WndClass;

  WndClass.cbSize	  = sizeof(WNDCLASSEX);
  WndClass.style          = CS_HREDRAW | CS_VREDRAW;
  WndClass.lpfnWndProc    = WndProc;
  WndClass.cbClsExtra     = 0;
  WndClass.cbWndExtra     = 0;
  WndClass.hInstance      = hInst;
  WndClass.hIcon          = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1));
  WndClass.hCursor        = LoadCursor(NULL,IDC_ARROW);
  WndClass.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
  WndClass.lpszMenuName   = MAKEINTRESOURCE(IDR_MENU1);
  WndClass.lpszClassName  = szAppName;
  WndClass.hIconSm	  = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON2));

  return (RegisterClassEx(&WndClass) != 0);

#endif
}

//////////////////////////////////////
// Create the window and show it.
//////////////////////////////////////
BOOL Create(HINSTANCE hInst, int nCmdShow)
{
  HWND hwnd = CreateWindow(szAppName, szAppName,
                  WS_OVERLAPPEDWINDOW /*&(~(WS_SIZEBOX|WS_MAXIMIZEBOX|WS_MINIMIZEBOX))*/,
                  CW_USEDEFAULT, CW_USEDEFAULT,
                  WINDOW_XSIZE,WINDOW_YSIZE,
                  NULL, NULL, hInst, NULL);
  
  if (hwnd == NULL)
    return FALSE;

  //_hwnd=hwnd; 

  ShowWindow(hwnd, nCmdShow);
  UpdateWindow(hwnd);

  return TRUE;
}

//==============================================
// IMPLEMENTATION
//==============================================

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message,
                            WPARAM wParam, LPARAM lParam)
{
    //static HINSTANCE hInst;

    switch(Message)
    {
    case WM_CREATE:
       //PlaySound(TEXT("d:\\windows\\media\\chimes.wav"),NULL,SND_FILENAME|SND_ASYNC);
	_hwnd=hwnd;

        PopFileInitialize(hwnd);

	SetTimer(hwnd,1,1000,NULL);

	// Create the edit control child window
	_hwndEdit = CreateWindow (TEXT("edit"), NULL,
		    WS_CHILD | WS_VISIBLE | /*WS_HSCROLL |*/ WS_VSCROLL | 
                    WS_BORDER | ES_LEFT | ES_MULTILINE | ES_READONLY |
                    /*ES_NOHIDESEL|*/ ES_AUTOVSCROLL /*|ES_AUTOHSCROLL*/ , 
                    0, 0,SCREEN_X,SCREEN_Y,
		    hwnd, (HMENU)EDITID, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
	
	SetFont(_hwndEdit);
	SendMessage(_hwndEdit, EM_SETLIMITTEXT, MAX_EDIT_BUF_SIZE, 0L);

	ReadUserConfig(); //To get serial settings

	return 0; 
    case WM_COMMAND:
        if(lParam==0) //is menu command?
	{
	    switch(LOWORD(wParam))
	    {
	    case CM_CONNECT:
		MenuConnect(hwnd);
		break;
	    case CM_TRANSMIT:
		MenuTransmit(hwnd);
		break;
	    case CM_OPTIONS:
		MenuOptions(hwnd);
		break;
	    case CM_USBTRANSMIT:
		MenuUsbTransmit(hwnd);
		break;
//changed
	    case CM_USBTRANSMITTEST:
		MenuUsbTransmitTest(hwnd);
		break;

	    case CM_USBRECEIVE:
		MenuUsbReceive(hwnd);
		break; 

	    case CM_USBRECEIVETEST:
		MenuUsbReceiveTest(hwnd);
		break;		

		
	    case CM_USBSTATUS:
		MenuUsbStatus(hwnd);
		break;
	    case CM_ABOUT:
		MenuAbout(hwnd);
		break;

		case CM_PRINDATA:
		MenuPrinData(hwnd);
		break;




	    }
	    return 0;
	}
	else
	    return 0;
	break;

    // WM_PAINT should be processed on DefWindowProc(). 
    // If there is WM_PAINT, there should be UpdateWindow(_hwndEdit). 
/*
    case WM_PAINT:
	UpdateWindow(_hwndEdit); 
	return 0;
*/
    case WM_DESTROY:
	KillTimer(hwnd,1);
	Quit(hwnd);
	ReleaseFont();
	PostQuitMessage(0);
	return 0;

    case WM_TIMER:
	switch(wParam)
	{
	case 1:
	    UpdateWindowTitle();
	    break;
	default:
	    break;
	}
	return 0;

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

        return 0 ;
	//If the size of the parent window is not adjustable,
	//WM_SIZE message is not received.
	//If the size of the parent window is adjustable,
	//WM_SIZE message is received although window size is not changed.
	//MoveWindow(,,,,,TRUE) will make WM_PAINT.
	
	//If DefWindowProc() doesn't process WM_PAINT and WM_PAINT is processed by user, 
	//UpdateWindow(_hwndEdit) is should be executed inide WM_PAINT case,
	//which update the child window.
	    
    case WM_CHAR:
	WriteCommBlock((char)wParam);    //UNICODE problem!!!
	return 0;

/*	
    case WM_CTLCOLOR: //for changing FONT & COLOR
      if ( HIWORD(lParam) == CTLCOLOR_EDIT ) {
         // Set the text background color.
            SetBkColor(wParam, RGB(128,128,128));
         // Set the text foreground color.
            SetTextColor(wParam, RGB(255, 255, 255) );
         // Return the control background brush.
            return GetStockObject(LTGRAY_BRUSH);
                  }
      else
         return GetStockObject(WHITE_BRUSH);
*/
    }
    return DefWindowProc(hwnd, Message, wParam, lParam); 
}

//8: \b
//13: \r

// 1)about EM_SETSEL message arguments
//   start_position,end_position
//   The selected character is from start_position to end_position-1;
//   So, We should do +1 to the position of last selected character.
// 2)The char index start from 0.
// 3)WM_CLEAR,WM_CUT doesn't operate on EM_SETSEL chars.

#define STRING_LEN  4096  
volatile static int isUsed=0;

void EB_Printf(TCHAR *fmt,...)
{
    va_list ap;
    int i,slen,lineIdx;
    int txtRepStart,txtRepEnd,txtSelEnd;
    static int wasCr=0; //should be static type.
    static TCHAR string[STRING_LEN+4096]; //margin for '\b'
    static TCHAR string2[STRING_LEN+4096]; //margin for '\n'->'\r\n'
    static int prevBSCnt=0;
    int str2Pt=0;
   
    
    while(isUsed==1); //EB_Printf can be called multiplely  //KIW

    txtRepStart=SendMessage(_hwndEdit,WM_GETTEXTLENGTH,0x0,0x0);
    txtRepEnd=txtRepStart-1;
    
    va_start(ap,fmt);
    _vsntprintf(string2,STRING_LEN-1,fmt,ap);
    va_end(ap);

    string2[STRING_LEN-1]='\0';
    
    //for better look of BS(backspace) char.,
    //the BS in the end of the string will be processed next time.
    for(i=0;i<prevBSCnt;i++) //process the previous BS char.
	string[i]='\b';
    string[prevBSCnt]='\0';
    lstrcat(string,string2);
    string2[0]='\0';

    slen=lstrlen(string);
    for(i=0;i<slen;i++)
    	if(string[slen-i-1]!='\b')break;
    
    prevBSCnt=i; // These BSs will be processed next time.
    slen=slen-prevBSCnt;
    
    if(slen==0)
    {
	isUsed=0;
	return;
    }

    for(i=0;i<slen;i++)
    {
	if( (string[i]=='\n'))
	{
	    string2[str2Pt++]='\r';txtRepEnd++;
	    string2[str2Pt++]='\n';txtRepEnd++;
	    wasCr=0;
	    continue;
	}
	if( (string[i]!='\n') && (wasCr==1) )
	{
	    string2[str2Pt++]='\r';txtRepEnd++;
	    string2[str2Pt++]='\n';txtRepEnd++;
	    wasCr=0;
	}
	if(string[i]=='\r')
	{
	    wasCr=1;
	    continue;
	}

	if(string[i]=='\b')
	{
	    //flush string2
	    if(str2Pt>0)
	    {
		string2[--str2Pt]='\0';
		txtRepEnd--;
		continue;
	    }
	    //str2Pt==0;	    
	    if(txtRepStart>0)
	    {
		txtRepStart--;		
	    }
	    continue;
	}
	string2[str2Pt++]=string[i];
	txtRepEnd++;
	// if(str2Pt>256-3)break; //why needed? 2001.1.26
    }
    
    string2[str2Pt]='\0';    
    if(str2Pt>0)
    {
	SendMessage(_hwndEdit,EM_SETSEL,txtRepStart,txtRepEnd+1);
	SendMessage(_hwndEdit,EM_REPLACESEL,0,(LPARAM)string2);         
    }
    else
    {
	if(txtRepStart<=txtRepEnd)
	{
	SendMessage(_hwndEdit,EM_SETSEL,txtRepStart,txtRepEnd+1);
	SendMessage(_hwndEdit,EM_REPLACESEL,0,(LPARAM)"");         
	}
    }
	
    
    //If edit buffer is over EDIT_BUF_SIZE,
    //the size of buffer must be decreased by EDIT_BUF_DEC_SIZE.
    if(txtRepEnd>EDIT_BUF_SIZE)
    {
        lineIdx=SendMessage(_hwndEdit,EM_LINEFROMCHAR,EDIT_BUF_DEC_SIZE,0x0);
	//lineIdx=SendMessage(_hwndEdit,EM_LINEFROMCHAR,txtRepEnd-txtRepStart+1,0x0); //for debug
        txtSelEnd=SendMessage(_hwndEdit,EM_LINEINDEX,lineIdx,0x0)-1;
	SendMessage(_hwndEdit,EM_SETSEL,0,txtSelEnd+1);
	
	SendMessage(_hwndEdit,EM_REPLACESEL,0,(LPARAM)"");
	//SendMessage(_hwndEdit,WM_CLEAR,0,0); //WM_CLEAR doesn't work? Why?
	//SendMessage(_hwndEdit,WM_CUT,0,0); //WM_CUT doesn't work? Why?

	//make the end of the text shown.
	txtRepEnd=SendMessage(_hwndEdit,WM_GETTEXTLENGTH,0x0,0x0)-1;
	SendMessage(_hwndEdit,EM_SETSEL,txtRepEnd+1,txtRepEnd+2); 
	SendMessage(_hwndEdit,EM_REPLACESEL,0,(LPARAM)" ");
	SendMessage(_hwndEdit,EM_SETSEL,txtRepEnd+1,txtRepEnd+2); 
	SendMessage(_hwndEdit,EM_REPLACESEL,0,(LPARAM)"");
    }

    isUsed=0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丰满少妇videoshd| 亚洲综合成人在线视频| 一本大道久久a久久精品综合| 亚洲高清免费一级二级三级| 国产视频一区在线观看| 欧美日韩一区二区在线视频| 丁香啪啪综合成人亚洲小说| 蜜桃精品视频在线| 亚洲一区在线观看免费 | www激情久久| 欧美三区在线观看| 99国产精品久久久久| 国产一区二区毛片| 美女视频黄免费的久久| 亚洲一区二区美女| 一区二区中文字幕在线| 久久精品一区二区三区av| 日韩精品一区二区三区蜜臀| 欧美色精品天天在线观看视频| 99re热这里只有精品视频| 国产黄色精品视频| 精品在线免费观看| 久久精品72免费观看| 日韩中文字幕不卡| 日韩综合小视频| 亚洲第一二三四区| 亚洲高清中文字幕| 亚洲二区在线视频| 亚洲第一会所有码转帖| 亚洲成人免费视频| 亚洲国产视频a| 亚洲午夜精品在线| 亚洲国产三级在线| 亚洲黄色性网站| 亚洲一区二区在线免费观看视频 | 久久久久久久久久美女| 日韩精品一区二区三区蜜臀| 日韩一区二区电影| 精品国产一区二区三区久久影院| 日韩一区二区视频在线观看| 日韩女同互慰一区二区| 日韩一区二区三区免费看 | 国产精品嫩草久久久久| 日本一区二区三区久久久久久久久不| 久久久久久久av麻豆果冻| 久久久99久久| 国产精品伦理一区二区| 综合激情成人伊人| 亚洲最大色网站| 一级日本不卡的影视| 香蕉成人伊视频在线观看| 日韩精品一区第一页| 麻豆国产精品777777在线| 国产在线不卡一区| 成人听书哪个软件好| 一本一道久久a久久精品| 欧美视频日韩视频在线观看| 91精品国产色综合久久| 久久精品欧美一区二区三区麻豆| 日本一区二区成人| 一区二区三区av电影 | 一区二区三区不卡视频| 午夜精品久久一牛影视| 久久er99精品| 成人免费视频caoporn| 成人午夜av在线| 欧美一区二区免费观在线| 91免费小视频| 在线观看欧美精品| 激情av综合网| 日韩高清不卡一区二区| 老司机一区二区| 成人国产精品免费| 欧美日韩久久不卡| 久久只精品国产| 亚洲精品乱码久久久久久日本蜜臀| 亚洲成a人v欧美综合天堂| 狠狠色狠狠色合久久伊人| 91免费小视频| 欧美不卡视频一区| 亚洲乱码中文字幕综合| 免费在线观看日韩欧美| caoporm超碰国产精品| 欧美色国产精品| 日本一区二区视频在线| 五月天一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 日韩视频一区二区| 成人免费在线视频观看| 亚洲午夜久久久久久久久电影网 | 久久精品99国产国产精| 国产成人免费在线观看不卡| 欧美亚洲动漫制服丝袜| 久久女同性恋中文字幕| 三级影片在线观看欧美日韩一区二区| 国产一区二区三区四区五区美女| 欧美伊人久久久久久久久影院| 欧美精品一区二区三区四区| 亚洲国产va精品久久久不卡综合| 国产精品一区二区黑丝| 欧美日韩成人激情| 专区另类欧美日韩| 国产成人免费av在线| 3d动漫精品啪啪1区2区免费 | 日本午夜精品一区二区三区电影| 99re视频这里只有精品| 久久亚洲综合av| 日韩二区三区四区| 色噜噜狠狠成人网p站| 欧美激情综合在线| 麻豆极品一区二区三区| 欧美精品久久久久久久多人混战| 1000部国产精品成人观看| 激情综合网激情| 欧美一区二区观看视频| 亚洲成人精品一区| 欧洲av一区二区嗯嗯嗯啊| 中文字幕一区二区三区色视频| 国产乱码精品一区二区三区五月婷 | 亚洲男人天堂av| 成人黄色av电影| 日韩国产精品久久| 欧美日韩国产小视频在线观看| 亚洲黄色小说网站| 91性感美女视频| 综合久久久久久| 99久久精品免费看国产免费软件| 国产欧美精品区一区二区三区| 精品制服美女丁香| 日韩免费一区二区| 激情五月激情综合网| 欧美精品一区男女天堂| 久久99国产乱子伦精品免费| 日韩欧美激情在线| 精品在线你懂的| 久久综合九色综合欧美亚洲| 久久国产夜色精品鲁鲁99| 欧美va亚洲va国产综合| 国产真实精品久久二三区| 久久久久久久久蜜桃| 国产成都精品91一区二区三| 国产欧美日韩在线| av亚洲精华国产精华精| 亚洲人成在线播放网站岛国| 色呦呦网站一区| 午夜精品国产更新| 日韩欧美的一区二区| 国产一区二区影院| 国产精品三级在线观看| 91一区二区三区在线观看| 亚洲精品成人精品456| 欧美精品三级日韩久久| 精品一区二区三区av| 日本一区二区免费在线| 91丨九色丨黑人外教| 亚洲午夜一区二区三区| 欧美一区二区三区免费在线看| 精品一区免费av| 中文字幕免费在线观看视频一区| 91在线丨porny丨国产| 亚洲午夜羞羞片| 欧美v日韩v国产v| 成人精品国产一区二区4080| 一区二区三区日韩| 欧美zozo另类异族| caoporn国产一区二区| 五月婷婷激情综合网| 国产日韩欧美精品电影三级在线 | 欧美性三三影院| 久久99精品国产.久久久久久| 中文字幕不卡一区| 欧美日韩精品专区| 国产成人在线影院| 亚洲综合久久久| 亚洲精品一区二区三区四区高清| aaa欧美大片| 日本不卡一二三区黄网| 国产精品色婷婷久久58| 91精品免费在线| 成人激情免费视频| 日本午夜精品视频在线观看 | 中文字幕不卡的av| 欧美精品自拍偷拍| 成人黄色av网站在线| 日本成人在线看| 亚洲视频你懂的| 欧美tickle裸体挠脚心vk| 一本一本大道香蕉久在线精品| 精品一区二区免费视频| 一区二区不卡在线播放| 国产午夜精品久久久久久久| 欧美日韩国产精选| 99久久伊人久久99| 精品写真视频在线观看| 亚洲精品久久久久久国产精华液| 国产亚洲午夜高清国产拍精品| 欧美日韩1区2区| 色一区在线观看| 成+人+亚洲+综合天堂| 国产尤物一区二区|