VC中常见API函数用法(经验版)

1.设置对话框为无边框方法

ModifyStyle(WS_CAPTION | WS_THICKFRAME, 0, SWP_FRAMECHANGED);

2.设置控件灰色与不灰色

void CMthread1Dlg::OnStop()

{
	// TODO: Add your control notification handler code here
	m_bRun = FALSE;
	GetDlgItem(IDC_START)->EnableWindow(TRUE);
	GetDlgItem(IDC_STOP)->EnableWindow(FALSE);
}

按stop按钮,IDC_START对应按钮可见,IDC_STOP对应按钮不可见。

3.模态对话框与非模态对话框

模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口。

A、创建模态对话框

CMyDemoDlg dlg;
dlg.DoModal();

B、创建非模态对话框

CDeviceDomeDlg *tmpDlg;
tmpDlg=new CDeviceDomeDlg;
tmpDlg->Create(IDD_DEVICE_DIALOG1,this); //创建一个非模态对话框
tmpDlg->MoveWindow( CRect(iter->left,iter->top,iter->right,iter->bottom) );//设置对话框位置
tmpDlg->ShowWindow(SW_SHOW); //显示非模态对话框
dlg.push_back(tmpDlg);

4.计算程序运行时间

计算程序运行时间有很多方法,大都是计算时间差。

DWORD dwStartTime=GetTickCount();
DWORD dwElapsedTime=GetTickCount()-dwStartTime;

上面这个代码是在不会被中断的情况下使用的。但是,在抢占式操作系统中,永远无法知道线程何时被赋予CPU时间。当取消线程的CPU时间时,就更难计算线程执行不同任务时所用的时间。我们需要一个函数,以便返回线程得到的CPU时间的数量。

BOOL GetThreadTimes(HANDLE hThread,
   PFILETIME pftCreationTime, PFILETIME pftExitTime,
   PFILETIME pftKernelTime, PFILETIME pftUserTime);

FILETIME ftKernelTimeStart, ftKernelTimeEnd;
FILETIME ftUserTimeStart,   ftUserTimeEnd;
FILETIME ftDummy;
__int64 qwKernelTimeElapsed, qwUserTimeElapsed,
    qwTotalTimeElapsed;

GetThreadTimes(GetCurrentThread(), &ftDummy,
    &ftDummy, &ftKernelTimeStart, &ftUserTimeStart);

GetThreadTimes(GetCurrentThread(), &ftDummy,
    &ftDummy, &ftKernelTimeEnd, &ftUserTimeEnd);

qwKernelTimeElapsed =
   FileTimeToQuadWord(&ftKernelTimeEnd) -
   FileTimeToQuadWord(&ftKernelTimeStart);

qwUserTimeElapsed =
   FileTimeToQuadWord(&ftUserTimeEnd) -
   FileTimeToQuadWord(&ftUserTimeStart);

qwTotalTimeElapsed = qwKernelTimeElapsed +
   qwUserTimeElapsed;

GetProcessTimes是个类似GetThreadTimes的函数,适用于进程中的所有线程:

BOOL GetProcessTimes(HANDLE hProcess,
   PFILETIME pftCreationTime, PFILETIME pftExitTime,
   PFILETIME pftKernelTime, PFILETIME pftUserTime);
返回的时间适用于某个进程中的所有线程,例如,返回的内核时间是所有进程的线程在内核代码中经过的全部时间的总和。

5.在任务栏而非窗口处理

有时需要控件在排除任务栏的窗口内显示,此时只需调用

   RECT winRc;
   SystemParametersInfo(SPI_GETWORKAREA,0,(PVOID)&winRc,0);

得到的winRc即除去了任务栏,注意此时不随任务栏位置变化而变化。

6.MFC中CString和STL中string的互换

string转CString
CString strMfc;
std::string strStl=“test“;
strMfc=strStl.c_str();
CString转string
CString strMFC;
string strSTL;
strSTL = CStringA(strMFC)

VC中常见API函数用法(经验版)

时间: 2024-11-03 21:11:12

VC中常见API函数用法(经验版)的相关文章

VC++中的延时函数

原文链接:http://www.educity.cn/develop/478947.html VC中提供了很多关于时间操作的函数,编写程序时我们可以跟据定时的不同精度要求选择不同的时间函数来完成定时和计时操作. 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时 间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间

VC中常见的108个问题

(1) 如何通过代码获得应用程序主窗口的 指针? 主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现. AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化. (2) 确定应用程序的路径 Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名. Example: TCHAR exeFullPath[MAX_PATH] // MAX_PATH在API中定义了吧,

VC中常见编译错误[转]

VC中常见编译错误(转载看看) 1)disable#pragma warning (disable: 4311 4312)     //指针类型强制转化,大小不完全匹配warning C4311: ''type cast'' : pointer truncation from ''TriNode *const '' to ''long''     warning C4312: ''type cast'' : conversion from ''unsigned int'' to ''SAC_No

Sql server存储过程中常见游标循环用法

原文:Sql server存储过程中常见游标循环用法 用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME fetch next from youcurname into @a1,@a2,@a3 while

【转】VC中MessageBox与AfxMessageBox用法与区别

一.MessageBox()用法 1.函数原型 Messagebox函数在Win32 API和MFC里的定义有区别. Win32 API的定义如下: [cpp] view plaincopy int WINAPI MessageBox( HWND hWnd,          // handle of owner window LPCTSTR lpText,     // address of text in message box LPCTSTR lpCaption, // address o

ShellExecute API函数用法简析

在VC/C++编程中,我们会经常遇到打开文件.网页.可执行程序的应用场景,ShellExecute API函数就可以做到这一点.现在我们看看它的强大!   ShellExecute函数原型: HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd );     ShellExecute函数参数说明:

Numpy中的tile函数用法

0.引言 在看机器学习实战这本书时,遇到numpy.tile(A,B)函数,开始没太明白这个函数用法,网上帖子也不太详细,经过一番试验后基本搞明白基本用法,分享给大家. 1.函数定义 tile函数是模板numpy.lib.shape_base中的函数. 函数形式:tile(A,rep) 功能:重复A的各个维度 参数类型: - A: Array类的都可以 - rep:A沿着各个维度重复的次数,从低维向高维重复 -A的类型众多,几乎所有类型都可以:array, list, tuple, dict,

Oracle中的时间函数用法(to_date、to_char) (总结)

一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二.to_date() function 1.日期格式参数含义说明 D一周中的星期几 DAY天的名字,使用空格填充到9个字符 DD月中的第几天 DDD年中的第几天 DY天的简写名 IW ISO标准

Android中常见Intent习惯用法-上篇(附源码下载)

Android中的Intent是一个非常重要的类,如果对Intent不是特别了解,可以参见博文<Android中Intent概述及使用>.如果对Intent Filter不是特别了解,可以参见博文<Android中Intent对象与Intent Filter过滤匹配过程详解>. 本文着重讲一下Android中一些常见的Intent的习惯用法,比如如何通过Intent发送短信.发送邮件.启动摄像机拍照录视频.设置闹铃.打开WIFI设置界面等等. 限于篇幅,本博文分为上下两篇,这是上篇