⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.cpp

📁 有关树WDM 驱动的编程.里面包含了许多实例,学习硬件的可以参考哦
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Key.cpp : implementation file
//

#include "stdafx.h"
#include "pctest.h"
#include "Key.h"
#include "adc.h"
#include "address.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
WNDPROC   m_b0,m_b1,m_b2,m_b3,m_b4,m_b5,m_b6,m_b7,m_b8,m_b9;
/////////////////////////////////////////////////////////////////////////////
// CKey dialog
extern HANDLE	hDevice;
extern HANDLE	hDevice1;
extern  PCHAR mDynVxDName ;
CKey::CKey(CWnd* pParent /*=NULL*/)
	: CDialog(CKey::IDD, pParent)
{
	//{{AFX_DATA_INIT(CKey)
	m_keydate = 0;
	//}}AFX_DATA_INIT
    m_first=FALSE;
    m_display_bit=0;
 m_d=(p_data*)malloc(sizeof(p_data));
	for(int z=0;z<4;z++)
	{
	  m_d->work[z]=0xff;
	}
	hDevice1=NULL;
	hDevice=NULL;
}


void CKey::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CKey)
	DDX_Control(pDX, IDC_BUTTON9, m_bb9);
	DDX_Control(pDX, IDC_BUTTON8, m_bb8);
	DDX_Control(pDX, IDC_BUTTON7, m_bb7);
	DDX_Control(pDX, IDC_BUTTON6, m_bb6);
	DDX_Control(pDX, IDC_BUTTON5, m_bb5);
	DDX_Control(pDX, IDC_BUTTON4, m_bb4);
	DDX_Control(pDX, IDC_BUTTON3, m_bb3);
	DDX_Control(pDX, IDC_BUTTON2, m_bb2);
	DDX_Control(pDX, IDC_BUTTON1, m_bb1);
	DDX_Control(pDX, IDC_BUTTON10, m_bb0);
	DDX_Text(pDX, IDC_EDIT1, m_keydate);
	DDV_MinMaxInt(pDX, m_keydate, 0, 9);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CKey, CDialog)
	//{{AFX_MSG_MAP(CKey)
	ON_WM_KEYDOWN()
	ON_BN_CLICKED(IDC_BUTTON10, OnButton10)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_USER+0x100,Onebutton)
	ON_MESSAGE(WM_USER+0x101,One1button)
	ON_MESSAGE(WM_USER+0x102,Twobutton)
	ON_MESSAGE(WM_USER+0x103,Threebutton)
	ON_MESSAGE(WM_USER+0x104,Fourbutton)
	ON_MESSAGE(WM_USER+0x105,Fivebutton)
	ON_MESSAGE(WM_USER+0x106,Sixbutton)
	ON_MESSAGE(WM_USER+0x107,Sevenbutton)
	ON_MESSAGE(WM_USER+0x108,Eightbutton)
	ON_MESSAGE(WM_USER+0x109,Ninebutton)
	
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CKey message handlers
void CKey::OnCancel()
{
}
void CKey::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

BOOL CKey::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
m_b0=(WNDPROC)SetWindowLong(m_bb0.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc0);
m_b1=(WNDPROC)SetWindowLong(m_bb1.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc1);
m_b2=(WNDPROC)SetWindowLong(m_bb2.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc2);
m_b3=(WNDPROC)SetWindowLong(m_bb3.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc3);
m_b4=(WNDPROC)SetWindowLong(m_bb4.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc4);
m_b5=(WNDPROC)SetWindowLong(m_bb5.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc5);
m_b6=(WNDPROC)SetWindowLong(m_bb6.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc6);
m_b7=(WNDPROC)SetWindowLong(m_bb7.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc7);
m_b8=(WNDPROC)SetWindowLong(m_bb8.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc8);
m_b9=(WNDPROC)SetWindowLong(m_bb9.GetSafeHwnd(),GWL_WNDPROC,
	   (DWORD)WindowProc9);
   	if(hDevice==NULL)
	{
	    hDevice = CreateFile(mDynVxDName ,
					  GENERIC_READ | GENERIC_WRITE,
					  FILE_SHARE_READ,
					  NULL,
					  OPEN_EXISTING,
					  0,
					  NULL);
	     if (hDevice == INVALID_HANDLE_VALUE)
		 {
		   AfxMessageBox("请检查板卡和驱动程序");
		   CDialog::OnCancel();
	       return FALSE;
		 }
	};
    W_AD=(Write_AD*)malloc(sizeof(Write_AD));
	W_AD->Data=0x80;
    W_AD->Address=IC_8255_type;
    DeviceIoControl(
					hDevice, 
					IOCTL_IOW,
					W_AD, 
					sizeof(W_AD)+1, 
					NULL, 
					0,
					&nRet, 
 					NULL);
    W_AD->Data=0xff;
    W_AD->Address=IC_8255_A;
    DeviceIoControl(
					hDevice, 
					IOCTL_IOW,
					W_AD, 
					sizeof(W_AD)+1, 
					NULL, 
					0,
					&nRet, 
 					NULL);
 W_AD->Address=IC_8255_B;
	DeviceIoControl(
					hDevice, 
					IOCTL_IOW,
					pci, 
					IC_8255_B, 
	     			NULL, 
					data,
					&nRet, 
 					NULL);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

LRESULT  CALLBACK CKey::WindowProc0(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
	HWND  m_dialog;
	m_dialog=::GetParent(hwnd);
	ASSERT(m_dialog);
	switch(iMsg)
	{
	case WM_KEYDOWN:
		{
			if((int)wParam)
			{
				int a=wParam;
				switch(a)
				{
				case 96:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 97:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 98:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 99:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 100:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 101:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 102:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 103:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 104:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 105:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
				case 48:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 49:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 50:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 51:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 52:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 53:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 54:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 55:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 56:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 57:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
                default:
					AfxMessageBox("请输入0-9数字");
				}
			}
		}
		break;
	}
	return CallWindowProc(m_b0,hwnd,iMsg,wParam,lParam);
}
LRESULT  CALLBACK CKey::WindowProc1(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
	HWND  m_dialog;
	m_dialog=::GetParent(hwnd);
	ASSERT(m_dialog);
	switch(iMsg)
	{
	case WM_KEYDOWN:
		{
			if((int)wParam)
			{
				int a=wParam;
				switch(a)
				{
				case 96:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 97:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 98:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 99:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 100:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 101:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 102:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 103:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 104:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 105:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
				case 48:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 49:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 50:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 51:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 52:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 53:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 54:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 55:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 56:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 57:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
                default:
					AfxMessageBox("请输入0-9数字");
				}
			}
		}
		break;
	}
	return CallWindowProc(m_b1,hwnd,iMsg,wParam,lParam);
}
LRESULT  CALLBACK CKey::WindowProc2(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
	HWND  m_dialog;
	m_dialog=::GetParent(hwnd);
	ASSERT(m_dialog);
	switch(iMsg)
	{
	case WM_KEYDOWN:
		{
			if((int)wParam)
			{
				int a=wParam;
				switch(a)
				{
				case 96:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 97:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 98:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 99:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 100:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 101:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 102:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 103:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 104:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 105:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
				case 48:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 49:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 50:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 51:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 52:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 53:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 54:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 55:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 56:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 57:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
                default:
					AfxMessageBox("请输入0-9数字");
				}
			}
		}
		break;
	}
	return CallWindowProc(m_b2,hwnd,iMsg,wParam,lParam);
}
LRESULT  CALLBACK CKey::WindowProc3(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
	HWND  m_dialog;
	m_dialog=::GetParent(hwnd);
	ASSERT(m_dialog);
	switch(iMsg)
	{
	case WM_KEYDOWN:
		{
			if((int)wParam)
			{
				int a=wParam;
				switch(a)
				{
				case 96:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 97:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 98:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 99:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 100:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 101:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 102:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 103:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 104:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 105:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
				case 48:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 49:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 50:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 51:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 52:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 53:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 54:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 55:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 56:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 57:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
                default:
					AfxMessageBox("请输入0-9数字");
				}
			}
		}
		break;
	}
	return CallWindowProc(m_b3,hwnd,iMsg,wParam,lParam);
}
LRESULT  CALLBACK CKey::WindowProc4(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
	HWND  m_dialog;
	m_dialog=::GetParent(hwnd);
	ASSERT(m_dialog);
	switch(iMsg)
	{
	case WM_KEYDOWN:
		{
			if((int)wParam)
			{
				int a=wParam;
				switch(a)
				{
				case 96:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 97:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 98:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 99:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 100:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 101:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 102:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 103:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 104:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 105:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
				case 48:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 49:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 50:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 51:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 52:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 53:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 54:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 55:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 56:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 57:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
                default:
					AfxMessageBox("请输入0-9数字");
				}
			}
		}
		break;
	}
	return CallWindowProc(m_b4,hwnd,iMsg,wParam,lParam);
}
LRESULT  CALLBACK CKey::WindowProc5(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
	HWND  m_dialog;
	m_dialog=::GetParent(hwnd);
	ASSERT(m_dialog);
	switch(iMsg)
	{
	case WM_KEYDOWN:
		{
			if((int)wParam)
			{
				int a=wParam;
				switch(a)
				{
				case 96:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 97:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 98:
					::SendMessage (m_dialog,WM_USER+0x102,0,0);
					break;
				case 99:
					::SendMessage (m_dialog,WM_USER+0x103,0,0);
					break;
				case 100:
					::SendMessage (m_dialog,WM_USER+0x104,0,0);
					break;
				case 101:
					::SendMessage (m_dialog,WM_USER+0x105,0,0);
					break;
				case 102:
					::SendMessage (m_dialog,WM_USER+0x106,0,0);
					break;
				case 103:
					::SendMessage (m_dialog,WM_USER+0x107,0,0);
					break;
				case 104:
					::SendMessage (m_dialog,WM_USER+0x108,0,0);
					break;
				case 105:
					::SendMessage (m_dialog,WM_USER+0x109,0,0);
					break;
				case 48:
					::SendMessage (m_dialog,WM_USER+0x100,0,0);
					break;
				case 49:
					::SendMessage (m_dialog,WM_USER+0x101,0,0);
					break;
				case 50:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -