`
java-mans
  • 浏览: 11427349 次
文章分类
社区版块
存档分类
最新评论

vc开发某系统的总结

 
阅读更多
VC_语音自动转换工具(技术总结)

1.VC命名规范
全局变量用g_开头
静态变量用s_开头
成员变量用m_开头
结构一般用S开头
类一般用C开头
...
http://blog.csdn.net/trierwang/article/details/4219742

2.
char cSource[256]="D:\\d.txt",cTarget="C:\\c.txt";
if(access(filePath,0)==-1) --判断存在与否
DeleteFile(cTarget); --删除
MoveFile(cSource,cTarget); --移动、剪切

3.
--将字符数组格式化,格式化多样化
char cSource[256]={0};
sprintf(cSource,"%s\\%s_%s.txt",backFold,fileName,time);

4.关于时间
1)--获取时间
time_t curr_time = time(NULL);
struct tm *pt = NULL;
pt = localtime(&curr_time);
char cTime[256],cTime1;
sprintf(cTime,"%04d%02d%02d%02d%02d%02d",pt->tm_year+1900, pt->tm_mon+1, pt->tm_mday,pt->tm_hour,pt->tm_min,pt->tm_sec);
sprintf(cTime1,"%04d-%02d-%02d %02d:%02d:%02d",pt->tm_year+1900, pt->tm_mon+1, pt->tm_mday,pt->tm_hour,pt->tm_min,pt->tm_sec);
2)--获取时间1
COleDateTime CurrTime = COleDateTime::GetCurrentTime();
3)将字符串时间(格式为2012-03-08)转换为时间格式
COleDateTime tempTime;
tempTime.ParseDateTime(cTime1);
4)获取时间差
COleDateTimeSpan result = CurrTime - tempTime;
int iMinute = (int)result.GetTotalMinutes();//这是分钟差

5.关于string
1)
char *pcStr="POST /time= Httpservere";
string sRec=(string)pcStr; //将字符指针char *转换为string
int wIndex = sRec.find("http",0);//从0开始寻在http结束的地方
string sContent=sRec.substr(0,wIndex);//截取字符串
int wRes=atoi(sContent.c_str()); //将string 转换为int
char cStr[256]={0};
sprintf(cStr,"%s",sRec.c_str()); //将string 转换为char []

6.关于vector
1)遍历http://blog.csdn.net/loveheronly/article/details/7330535
2)查找http://blog.csdn.net/loveheronly/article/details/7337533

7.读取配置文件的时候,写一个类CConfig,在启动程序的时候,将配置文件保存在这里,供调用

8.各种头文件
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#include <crtdbg.h>
#include <vector>
#include <algorithm>

9.使用ListBox
CListBox *pListBox = (CListBox *)GetDlgItem(IDC_LIST2); //则可以定义全局变量
pListBox-> AddString( "1 ");
pListBox-> AddString( "2 ");
pListBox-> AddString( "3 ");

10.在OnSysCommand可以判断一些事件
else if(nID==SC_CLOSE)
{
//关闭的时候做什么
CDialog::EndDialog(IDOK);
return;
}
CDialog::OnSysCommand(nID, lParam);

11.配置文件获取字符串
GetPrivateProfileStringEx("Config","DataSource","",str,256, SYSCONFIG);
int a=GetPrivateProfileIntEx("Config","IsFtp",3000,SYSCONFIG);

12.vs 添加资源导入的时候总是失败
1)后缀名得是bmp的,直接改了后缀名无效的
2)看看项目是否有中文路径

13.VC添加背景图片
把下面这段代码加进OnPaint()里就行了
CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200);// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);

14.如果程序是新建的对话框,要给其添加背景图片的步骤:
1)加入消息函数:afx_msg void OnPaint();
2)BEGIN_MESSAGE_MAP(QueryDlg, CDialog)
ON_WM_PAINT()//add this
END_MESSAGE_MAP()
3)重写OnPaint函数:
void QueryDlg::OnPaint()
{
CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP2); //这个IDB_BITMAP2要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,660,554);// 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);
...
}

15.在点击事件里面发现失效,最好在事件里面添加代码 {MessageBox("1");}调试。不知道是不是VS一个Bug
AfxMessageBox("1");

16.新建的对话框的基类可以使CDHmlDialog,也可以是CDialog

17.Access 操作或事件已被禁用模式阻止
这种情况就更新不了数据库,update语句执行不了
http://blog.csdn.net/caomiao2006/article/details/4460754

18.类向导
首先,打开一个项目文件后,你应该找到一个叫做类视图的悬浮窗口,如果你没有,可以进入点击窗口上方的是“视图”菜单,然后可找到“类视图”
这个选项,点击就出来了。快捷键是 ctrl+shift+C. 第二,点击选定类视图中你像添加成员函数的类,
我这里举例是View类,右击该类,选择“属性”项,可以看到一个对话框“属性”。点击“消息”按钮,这个按钮就是
就是一个闪电形状按钮和绿色按钮中间的那个按钮。你可以找到各种系统消息,比如你说的 WM_CHAR。之后就可以添加
键盘响应的消息了。

19.数据库
char dbconnstr[512];
1)Access2007的连接字符串
sprintf(dbconnstr,"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=TTS.accdb;Persist Security Info=False");
2)mysql
sprintf(dbconnstr,"DSN=ADOmysql;Server=%s;DATABASE=%s;UID=%s;PWD=%s",DatabaseSource,DatabaseName,UserName,PassWord);
3)查询读取表的数据
int DBConnection::ExecQueryResult(char *start,char *end)
{
long nRecordId = 0;
if (m_bDBOpened == FALSE)
m_bDBOpened=OpenDB();
if (m_bDBOpened == FALSE)
{
g_tLog.print("OpenDB fail.\n");
return -1;
}
long nRet=0;
char sql[1024];
sprintf(sql,"select * from TTS_Interface where (Flag=1 or (Flag=2 and Times>=1)) and SendTime>='%s' and SendTime<='%s' order by ResultTime",start,end);
try
{
_CommandPtr pCmd;
pCmd.CreateInstance(__uuidof(Command));
pCmd->ActiveConnection = m_pConn;
pCmd->CommandText =_bstr_t(sql);
pCmd->Parameters->Refresh();
pCmd->CommandType = adCmdText;
_RecordsetPtr pRs=pCmd->Execute(NULL,NULL,adCmdText);
if (pRs->GetState() == adStateClosed ||pRs->adoEOF)
return -1;
while (pRs->GetState() != adStateClosed && !pRs->adoEOF)//
{
char result[1024],ResultTime[256],FileName[256],FilePath[256],SendTime[256],BackPath[256];
CString strTemp="";
_variant_t var;
//FilePath
var.Clear();
strTemp.Empty();
var=(LPTSTR)_bstr_t(pRs->GetCollect(L"FilePath"));
if (var.vt!=VT_NULL&&var.vt!=VT_EMPTY)
{
strTemp=(LPTSTR)_bstr_t(var);
strTemp.TrimLeft();
strTemp.TrimRight();
}
lstrcpy(FilePath, strTemp);
// g_tLog.print("FilePath(%s)\n",FilePath);
pRs->MoveNext();
}
pRs->Close();
pRs.Release();
}
catch (_com_error& e)
{
CloseDB();
g_tLog.print("com_error:%s,%s\n",(LPTSTR)e.Description(),sql);
return -1;
}
catch (...)
{
CloseDB();
g_tLog.print("error:%s,%s\n","出错,关闭数据库",sql);
return -1;
}
return nRecordId;//nRet;
}

20.将时间格式20120312转换为室间格式
struct node{
char year[5];
char month[3];
char day[3];
char h[3];
char m[3];
char s[3];
}data;
char str[]="20120312121212";
strncpy(data.year, str, 4);
strncpy(data.month, str + 4, 2);
strncpy(data.day, str + 6, 2);
strncpy(data.h, str + 8, 2);
strncpy(data.m, str + 10, 2);
strncpy(data.s, str + 12, 2);
printf("%s-%s-%s %s:%s:%s\n", data.year, data.month, data.day, data.h, data.m, data.s);

21.将时间格式20120312转换为室间格式
char* date = "20120312121212";
char dateFormat[20]={0};
int y=0,m=0,d=0,h=0,s=0,mi=0;
sscanf(date, "%4d%2d%2d%2d%2d%2d", &y,&m,&d,&h,&s,&mi);
sprintf(dateFormat,"%4d-%02d-%02d %02d:%02d:%02d",y,m,d,h,s,mi);











分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics