随笔分类 - C++
WinCE5.0下直接写屏操作与函数 CreateDIBSection() 的使用(转)
摘要:这段时间在研究直接写屏的方法.此问题的起因是: 在 iMX31(WinCE 5.0)上, 屏的分辨为: 800*480. 调用 BitBlt() API 函数画一整屏的动作, 竟然需要 120ms 左右; 同样的程序, 在 Prima 上只需要 20ms 以内的时间.直接写屏, 需要用到以下两个主要的函数: CreateDC(TEXT("DISPLAY"),......) 和 CreateDIBSection().1) CreateDC(TEXT("DISPLAY"),......) 的用法比较简单, 参考 MSDN 就可以很容易的搞定.2) Creat
阅读全文
两张bmp叠加
摘要://创建24位bmp区域HBITMAP CreateBitmapSection(HDC hdc,int cx,int cy,BYTE** ppbit){ BITMAPINFO bmi ; memset(&bmi.bmiHeader, 0, sizeof(BITMAPINFOHEADER)); bmi.bmiHeader.biSize = sizeof (BITMAPINFOHEADER) ; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biBitCount = 24; bmi.bmiHeader.biCompression = BI_RGB; b
阅读全文
VC实现透明窗体
摘要:可以利用Windows系统提供的SetLayeredWindowAttributes函数设置透明度和不透明的颜色关键值。BOOL SetLayeredWindowAttributes(HWND hwnd,//分层窗口句柄COLORREF crKey,//颜色关键值BYTE bAlpha,//描述不透明的程度,0表示全透明,255表示完全不透明DWORD dwFlags//明确采取的动作);dwflags的值:LWA_COLORKEY 使用crKey为透明值LWA_ALPHA使用bAlpha为窗口的不透明值该函数只支持WS_POPUP风格窗体,不支持WS_CHILD风格窗体参考:SetWindo
阅读全文
c++获取当前目录
摘要:char p_filepath[MAX_PATH]; TCHAR w_FilePath[MAX_PATH]; DWORD len = GetModuleFileName(NULL, w_FilePath, MAX_PATH); if (len > 0) { len = WideCharToMultiByte(CP_ACP, 0, w_FilePath, len, p_filepath, sizeof(p_filepath)-1, NULL, NULL); if( len > 0 ) ...
阅读全文
List control & combo box 用法
摘要:先 定义 一个 变量 m_listlist control控件中的风格选项:m_list1.SetExtendedStyle( LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES );LVS_EX_FULLROWSELECT表示可以点中行中的任意一个列选中这一条记录LVS_EX_GRIDLINES表示列之间有分隔符号LVS_EX_CHECKBOXES 表示每一行第一列是checkboxm_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);风格设置m_list.Se
阅读全文
_ttoi 代替atoi
摘要:直接使用GetDlgItemInt() CString strNum;m_LogDlg.GetDlgItem(IDC_DAYEDIT)->GetWindowText(strNum);strNum.Replace(_T(","), _T(""));m_MainSetting.m_dwM = _ttoi(strNum.GetBuffer(0));strNum.ReleaseBuffer();
阅读全文
MFC中CString.Format的详细用法
摘要:在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。 先看看Format用于转换的格式字符: %c 单个字符 %d 十进制整数(int) %ld 十进制整数(long) %f 十进制浮点数(float) %lf 十进制浮点数(double) %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进...
阅读全文
Mfc 中多个SliderCtrl滑动事件的捕捉
摘要:在Mfc中SliderCtrl控件直接是没有事件来获取当滑动时SliderCtrl的值,不过可以处理ON_WM_HSCROLL消息,在头文件中添加:afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);在cpp中的消息队列映射中添加:ON_WM_HSCROLL()最后添加处理函数:void CMusicPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: Add your message handl
阅读全文
使用RICHEDIT
摘要:在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入AfxInitRichEdit,或者AfxInitRichEdit2否则的话 程序会起不来.也没有任何错误信息.这俩函数 是加载 Riched20.dll(Riched32.dll)的.1.设置edit只读属性 方法一: m_edit1.SetReadOnly(TRUE); 方法二: ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nEnd; CString strTe
阅读全文
CWnd和CDC, hwnd和hdc
摘要:虽然Gilbert之前介绍过CWnd和HWnd的区别,但是这里和其他几个CDC, HDC放在一起重申一下其中的区别和关系.1.对象和句柄CWnd是类, HWnd是句柄, CWnd封装了HWndCWnd wnd;HWnd hWnd;wnd.Attach(hWnd);//句柄到对象wnd->m_hWnd;//对象到句柄当然一般在程序中是这样获得句柄:AfxGetMainWnd()->m_hwnd;同样的, CDC和HDC也是这样的关系:CDC *pDC=new CDC;HDC hdc;pDC->GetSafeHdc();//通过对象获得句柄:pDC->Attach(hdc)
阅读全文
windows 下VLC播放器应用之二------LIBVLC API解析
摘要:APIlibvlc_instance_t*libvlc_new(int argc, const char* const* argv) libvlc_instance_t* libvlc_new(int argc, const char* const* argv) 创建并初始化一个LIBVLC实例 这个函数接受一个命令行参数列表,这个参数列表影响LIBVLC INSTANCE的缺省配置. Version: 参数意味着被从命令行传递到LIBVLC,就像VLC媒体播放器做的那样。有效的参数列表依赖于LIBVLC的版本、操作系统、平台以及LIBVLC的插件集。无效或不支持的参数将会...
阅读全文
多线程编程之四——线程的同步
摘要:下载源代码八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能读数据库的线程读取的是未完全更新的数据库,因为可能在读的时候只有一部分数据被更新过。 使隶属于同一进程的各线程协调一致地工作称为线程的同步。MFC提供了多种同步对象,下面我们只介绍最常用的四种:临
阅读全文
多线程编程之三——线程间通讯
摘要:下载源代码七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议使用volatile 修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变。如果线程间所需传递的信息较复杂,我们可以定义一个结构,通过传递指
阅读全文
多线程编程之二——MFC中的多线程开发
摘要:下载源代码五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。 在MFC中,一般用全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建
阅读全文
多线程编程之一——问题提出
摘要:下载源代码一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //延时6秒} 编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消息。为了更好地处理这种耗时的操作,我们有必要学习——多线程编程。二、多线程概述 进程和线程都是操
阅读全文
走近 STL
摘要:本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者。这实际上是我学习STL的一篇笔记,老鸟就不用看了。什么是泛型程序设计 我们可以简单的理解为:使用模板的程序设计就是泛型程序设计。就像我们我们可以简单的理解面向对象程序设计就是使用虚函数的程序设计一样。STL是什么 作为一个C++程序设计者,STL是一种不可忽视的技术。Sandard Template Library (STL):标准模板库,更准确的说是 C++ 程序设计语言标准模板库。学习过MFC的人知道,MFC是微软公司创建的 C++ 类库。而与之类似的是 STL 是模板库,只
阅读全文
STATIC变量问题
摘要:static 的两大作用: 一、控制存储方式: static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 1、引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。 2、 解决方案:因此C++ 中引入了static,用它来修饰变量,它能够指示编译器将此变量在程
阅读全文
获取程序数据路径(转)
摘要:GetCurrWorkingDir(){CStringstrPath;GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));strPath.ReleaseBuffer();returnstrPath;}CStringCPropertySampleApp::GetCurrWorkingDir(){CStringstrPath;TCHARszFull[_MAX_PATH];TCHARszDrive[_MAX_DRIVE];TCHARszDir[_MAX_DIR];::GetModuleFileName(NULL,szFull,sizeo
阅读全文
使用_CRTDBG_LEAK_CHECK_DF检查VC程序的内存泄漏(转)
摘要:我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{public:BOOL InitApplication(){int* leak = new int[10];return TRUE;}};产生的内存泄漏报告大体如下:Detected memory leaks!Dumping objects ->c:worktest.cpp(186) : {52} normal block at 0x003C4410, 40 bytes long.Data: < > CD CD CD CD CD
阅读全文
C++中STRING转为INT (转)
摘要:1#include <string>string str="12345";int b=atoi(str.c_str());2【转】C++ int,char,string,CString类型转换(整理总结)#include <string> //使用C++标准库的string类时using namespace std; //同上#include <sstream>#include <iostream>#include <stdlib.h> //要将string类和int类型直接转换最好有这些包含,//因为自己写一个转
阅读全文
浙公网安备 33010602011771号