📄 stdafx.cpp
字号:
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1997 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
// stdafx.cpp : source file that includes just the standard includes
// stdafx.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#include "math.h"
//#include <sstream>
//using namespace std;
//**************************************************************
//创建并打开一个ADO连接
//输入:ppadoConection Ado Connection 对象指针的指针
//输出:如果创建且打开Ado connection 成功,则返回该指针
//返回: HRESULT类型 S_OK 成功,E_FAIL 失败
//**************************************************************
/*
HRESULT OpenConnection(LPDISPATCH* ppadoConnection_out,tagDsnInfo pDsnInfo)
{
HRESULT hr;
BSTR bstrDSN;
_ConnectionPtr padoConnection;
WCHAR wszDSNBuffer[50];
hr = padoConnection.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
return hr;
if (FAILED(hr = padoConnection->put_CursorLocation(adUseClient)))
return hr;
// set an infinite connection timeout
if (FAILED(hr = padoConnection->put_ConnectionTimeout(0)))
return hr;
if (FAILED(hr = padoConnection->put_CommandTimeout(30000)))
return hr;
//use Kagera
memset((void*)wszDSNBuffer,0,sizeof(wszDSNBuffer));
swprintf(wszDSNBuffer,L"DSN=MSSQL;UID=sa;PWD=");
bstrDSN = ::SysAllocString(wszDSNBuffer);
//hr = padoConnection->Open("MSSQL","sa","",-1);
hr = padoConnection->Open(pDsnInfo.dsn,pDsnInfo.user,pDsnInfo.pwd,-1);
::SysFreeString( bstrDSN );
if (FAILED(hr))
return hr;
// all went well
// note - don't Release padoConnection, our caller will do that later
padoConnection->QueryInterface(IID_IDispatch,(void **)ppadoConnection_out);
return S_OK;
}
*/
//错误处理
void ErrorRaise(_bstr_t ErrorDescrption)
{
MessageBox(NULL,ErrorDescrption, "错误提示",MB_ICONEXCLAMATION|MB_OK);
}
//**************************************************************
//将输入的短整数类型的数字转换为_bstr_t的字符串
//输入:s 短整型
//输出:_bstr_t 数字对应的字符串
//**************************************************************
_bstr_t FixString(short s)
{
char szBuffer[20];
memset(szBuffer,0,sizeof(szBuffer));
sprintf(szBuffer,"%d",s);
return szBuffer;
}
//**************************************************************
//将输入的BSTR类型的字符串转换为_bstr_t的字符串,同时将该字符串
// 包含的'字符转换成''('为SQL Server 中SQL语句的转义符)
//输入:strSQL BSTR类型的字符串
//输出:_bstr_t类型 字符串(已格式化好)
//**************************************************************
/*
_bstr_t FixString(BSTR bStr)
{
//转换成char
//USES_CONVERSION;
string str(OLE2T(bStr));
string repStr("''"); //转换后的字符
string findStr("'"); //被转换的字符
int nPos = -1;
//开始查找替换
do
{
nPos = str.find(findStr,nPos+1);
if (nPos != -1)
{
//开始替换
str.replace(nPos,1,repStr);
nPos++;
}
}while(nPos >= 0);
return str.c_str();
}
*/
//**************************************************************
//将输入的单精度浮点类型的数字转换为_bstr_t的字符串
//输入:s 单精度浮点类型
//输出:_bstr_t 数字对应的字符串
//**************************************************************
_bstr_t FixString(float s)
{
char szBuffer[20];
memset(szBuffer,0,sizeof(szBuffer));
sprintf(szBuffer,"%f",s);
return szBuffer;
}
//**************************************************************
//将输入的货币型类型的数字转换为_bstr_t的字符串
//输入:s 货币类型数字
//输出:_bstr_t 数字对应的字符串
//**************************************************************
_bstr_t FixString(CURRENCY s)
{
char szBuffer[20];
double d;
VarR8FromCy(s,&d);
memset(szBuffer,0,sizeof(szBuffer));
sprintf(szBuffer,"%lf",d);
return szBuffer;
}
//**************************************************************
//将输入的长整数类型的数字转换为_bstr_t的字符串
//输入:s 长整数类型数字
//输出:_bstr_t 数字对应的字符串
//**************************************************************
_bstr_t FixString(long s)
{
char szBuffer[20];
memset(szBuffer,0,sizeof(szBuffer));
sprintf(szBuffer,"%ld",s);
return szBuffer;
}
//**************************************************************
//将输入的日期类型的数据转换为_bstr_t的字符串
//输入:d 日期类型数据
//输出:_bstr_t 日期对应的字符串,格式为yyyy-mm-dd hh:mm:ss
//**************************************************************
_bstr_t FixString(DATE d)
{
SYSTEMTIME tm;
char szBuffer[20];
VariantTimeToSystemTime(d,&tm);
memset(szBuffer,0,sizeof(szBuffer));
//YYYY-MM-DD HH:MM:SS
sprintf(szBuffer,"%d-%02d-%02d %02d:%02d:%02d",
tm.wYear,tm.wMonth,tm.wDay,
tm.wHour,tm.wMinute,tm.wSecond);
return szBuffer;
}
//这时需要求中垂线 取线点两边一定长度的点 eg.20
BOOL CalcDblPoint(float xy[][2],float *x1,float *x2,float *y1,float *y2)
{
int ilen=40;
float x0,y0,k1,k2,b2;//,tmp_a,tmp_b,tmp_c;//,x1,x2,y1,y2
x0 = (xy[1][0]+xy[0][0])/2; //中点x
y0 = (xy[1][1]+xy[0][1])/2; //中点y
k1 = (xy[1][1]-xy[0][1])/(xy[1][0]-xy[0][0]); //(y2-y1)/(x2-x1)
//b1 = -k1*xy[0][0]+xy[0][1]; //-(y2-y1)/(x2-x1)*x1+y1
k2 = -1/k1;
b2 = y0-k2*x0;
int a2 = (int)(-b2/k2);
float xx1 = x0 + (float)(ilen*(- a2/sqrt(a2*a2 + b2*b2))); //x = x0 + t * cos?
float xx2 = x0 + (float)(ilen*(a2/sqrt(a2*a2 + b2*b2))); //y = y0 + t * sin?
float yy1 = y0 + (float)(ilen*(b2/sqrt(a2*a2 + b2*b2))); //
float yy2 = y0 + (float)(ilen*(- b2/sqrt(a2*a2 + b2*b2))); //
*x1 = xx1;
*x2 = xx2;
*y1 = yy1;
*y2 = yy2;
/*
tmp_a = k2*k2+1;
//tmp_b = -(2*(x0-k2*b2+y0*k2));
//tmp_c = x0*x0+b2*b2-2*y0*b2+y0*y0-ilen*ilen;
tmp_b = 2*(k2*(b2-y0)-x0);
tmp_c = x0*x0+b2*b2-2*y0*b2+y0*y0-ilen*ilen;
*x1 = (float)(-tmp_b +sqrt(tmp_b*tmp_b - 4*tmp_a*tmp_c))/(2*tmp_a); //(-b+sqrt(b*b-4*a*c))/2*a
*x2 = (float)(-tmp_b -sqrt(tmp_b*tmp_b - 4*tmp_a*tmp_c))/(2*tmp_a); //(-b-sqrt(b*b-4*a*c))/2*a
*y1 = k2 * *x1 + b2;
*y2 = k2 * *x2 + b2;
*/
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -