
VC
jogholy
软件系统工程师
展开
-
VC界面绘制双缓存
1、闪屏的问题在GDI的绘图系统中,每调用一次区域绘图操作,如FillRect、BitBlt等,图形显示系统就会在屏幕中对指定的区域进行一次刷新操作。如果频繁的进行区域绘制操作的操作的话,我们就会发现,屏幕会出现闪屏。使用下面的代码对闪屏的问题进行测试,在XP系统闪屏尤其严重,在Win7系统,闪屏问题有所改善。Win7系统在绘制效率上有所提升。?void转载 2016-04-11 09:55:58 · 546 阅读 · 0 评论 -
[转]VC中进度条实时刷新办法
<br />当我们在处理大程序时,常常需要耗很长时间,为了不让用户错误的认为系统已经死机,我们要给程序添加进度条,但是大家知道如果就直接添加进度条,并在程序里面控制它的进度,往往得到的结果是程序仍然像死机状态,直到处理完毕才显示进度条进度为100%,中间的过程看不到了,那么怎么办呢,是为什么呢?<br />原因是我们处理大程序和进度条显示是在同一个线程中进行的,这样往往因为处理大程序导致界面无法实时更新。<br />解决办法就是把处理大程序的这段逻辑让一个单独的线程在处理,并利用postmessage或se转载 2010-10-11 14:30:00 · 2591 阅读 · 1 评论 -
VC 对话框设置背景颜色和图片
改变背景颜色,有两种方法:1、在app的初始化函数中调用:void SetDialogBkColor( COLORREF clrCtlBk = RGB(192, 192, 192), COLORREF clrCtlText = RGB(0, 0, 0) );2、在对话框类的OnCtlColor函数中:if(nCtlColor == CTLCOLOR_DLG) { CBrush *brush; brush = new CBrush(RGB(221,221,221)); return (HBRUSH)(b原创 2010-07-16 08:51:00 · 2718 阅读 · 0 评论 -
VC中radio的用法
先为对话框加上2个radio button,分别是Radio1和Radio2。问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,第一种:((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上((CButton *)GetDlgItem转载 2009-09-12 21:35:00 · 850 阅读 · 0 评论 -
在DLL中使用资源(CDialog)
在DLL中使用资源 现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题。 1.Win32 DLL 在Win32 DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或者Crea转载 2009-06-22 10:42:00 · 1654 阅读 · 0 评论 -
MultiByteToWideChar
这个是我们需要转化的多字节字符串: char sText[20] = {"多字节字符串!OK!"};我们需要知道转化后的宽字符需要多少个数组空间.虽然在这个里程里面,我们可以直接定义一个20*2宽字符的数组,并且事实上将运行得非常轻松愉快.但假 如多字节字符串更多,达到上千个乃至上万个,我们将会发现其中浪费的内存将会越来越多.所以以多字节字符的个数的两倍作为宽字符数组下标的声明绝对不是一 个好主意转载 2009-06-04 14:49:00 · 977 阅读 · 0 评论 -
VC常用数据类型及使用转换详解
一、常用数据类型列表VC常用数据类型列表(1) Type Default Size Description 基础类型 全是小写说明:这些基础数据类型对于MFC还是API都是被支持的 boolean unsigned 8 bit ,转载 2009-06-03 10:55:00 · 863 阅读 · 0 评论 -
回调机制
调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后从堆栈中弹出现场地址,以便自动返回。借堆栈保护现场真是一项绝妙的发明,它使调用者和被调者可以互不相识,于是才有了后来的函数和构件,使吾辈编程者如此轻松愉快。若评选对人类影响最大之发明,在火与转载 2009-05-14 09:40:00 · 1068 阅读 · 0 评论 -
CComBSTR Class
This class is a wrapper for BSTRs.class CComBSTRRemarksThe CComBSTR class is a wrapper for BSTRs, which are length-prefixed strings. The length is stored as a转载 2009-05-08 11:19:00 · 471 阅读 · 0 评论 -
[转]VC中进度条实时显示的解决方法
<br />当我们在处理大程序时,常常需要耗很长时间,为了不让用户错误的认为系统已经死机,我们要给程序添加进度条,但是大家知道如果就直接添加进度条,并在程序里面控制它的进度,往往得到的结果是程序仍然像死机状态,直到处理完毕才显示进度条进度为100%,中间的过程看不到了,那么怎么办呢,是为什么呢?<br />原因是我们处理大程序和进度条显示是在同一个线程中进行的,这样往往因为处理大程序导致界面无法实时更新。<br />解决办法就是把处理大程序的这段逻辑让一个单独的线程在处理,并利用postmessage或se转载 2010-10-11 14:29:00 · 5873 阅读 · 6 评论 -
关于char, wchar_t, TCHAR, _T(),L,宏 _T、TEXT,_TEXT、L
<br />char :单字节变量类型,最多表示256个字符,<br />wchar_t :宽字节变量类型,用于表示Unicode字符,<br />它实际定义在<string.h>里:typedef unsigned short wchar_t。<br />为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下:<br /> wchar_t c = `A' ; <br />wchar_t * p = L"Hello!" ; <br />wchar_t a[] = L"H转载 2010-10-22 15:06:00 · 667 阅读 · 0 评论 -
按位定义结构体
<br />按位定义一个结构体 <br />struct s_DosAttributes <br />{ <br />unsigned ReadOnly :1; <br />unsigned Hidden :1; <br />unsigned System :1; <br /><br />unsigned VolumeID :1; <br />unsigned Directory :1; <br />unsigned Archi原创 2011-03-01 19:34:00 · 9048 阅读 · 0 评论 -
如何将Unicode文本写到日志文件中
有时为了定位问题,我们需要结合打印日志来处理。特别是较难复现的,一般都需要查看上下文日志才能找出可能存在的问题。考虑到程序要在不同语言的操作系统上运行,程序界面显示要支持Unicode,打印出来的日志也要支持Unicode,即将运行日志以Unicode文本写到日志文件中。 那么如何才能将Unicode文本写到日志文件中呢?只要我们调用Unicode版本的写入函数,传入Unic转载 2016-02-18 10:44:17 · 651 阅读 · 0 评论 -
比较CreateThread,_beginthread与AfxbeginThread
在Windows的多线程编程中,创建线程的函数主要有CreateThread,_beginthead(_beginthreadex)和AfxBeginThread,那么它们之间有什么联系与区别呢?当我需要创建一个线程时该用哪个函数呢?下面先介绍各个函数的用法:CreateThread:函数原型:HANDLE WINAPI CreateThread(_in L转载 2014-08-01 09:01:05 · 4083 阅读 · 0 评论 -
GDI+ 和MFC内存泄露检测
原文地址:http://www.codeproject.com/KB/GDI-plus/gdiplush.aspx绪论当我开始使用VC++6.0进行GDI+和MFC编程后,我遇到了一些麻烦的问题:不移除DEBUG_NEW 宏就不能编译有MFC的GDI代码不少许修改代码就不能编译有STL的GDI+代码不能探测到内存泄露以下是解决方案怎样使用在stdafx.h文件中包含转载 2014-06-06 15:15:50 · 1061 阅读 · 0 评论 -
va_start和va_end使用详解
本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(转载 2014-06-06 11:11:55 · 563 阅读 · 0 评论 -
内存泄露?
http://blog.youkuaiyun.com/dananhai/archive/2007/06/05/1639331.aspx转载 2011-06-29 14:57:00 · 561 阅读 · 0 评论 -
让MFC程序支持命令行参数
<br />让MFC程序支持命令行参数<br /><br />一般情况下,如果我们的VC工程是Console控制台类型或者是Win32类型的情况下,这两类的工程类型比较容易获得命令行参数,即,通过其入口点函数 int main(int argc, char *argv[])int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)复制代码<br />但是,如果我们的工程类原创 2011-03-25 14:14:00 · 1832 阅读 · 0 评论 -
VC对话框启动时隐藏
<br />这个问题其实网上有很多答案,但很多都不够简洁和完美,下面这个方法可能是最佳的。<br /> <br />首先要在资源中将对话框属性的Visible勾选去除。<br /><br /><br />修改项目App的实现文件,以笔者的一个名为AutoInstall的项目为例:<br />AutoInstall.cpp<br />BOOL CAutoInstallApp::InitInstance()<br />{<br /> AfxEnableControlContainer();<br /><b转载 2011-03-25 13:47:00 · 1178 阅读 · 0 评论 -
让MFC程序支持命令行参数
<br />让MFC程序支持命令行参数<br /><br />一般情况下,如果我们的VC工程是Console控制台类型或者是Win32类型的情况下,这两类的工程类型比较容易获得命令行参数,即,通过其入口点函数 int main(int argc, char *argv[])int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)复制代码<br />但是,如果我们的工程类转载 2011-05-10 18:01:00 · 7030 阅读 · 1 评论 -
GetConsoleWindow ()函数找不到的解决办法
在WIN32的控制台模式获取窗口句柄,使用GetConsoleWindow (),但编译器(VC6)编译阶段不能找到此函数,在网上搜了一下,有说在所有引用头文件前#define _WIN32_WINNT 0x0500的,有说包含wincon.h头文件的,试过均不行,后来试了一下下面方法,通过:在使用该函数前声明:extern "C" WINBASEAPI HWND WINAPI GetCo转载 2009-05-06 13:26:00 · 1193 阅读 · 0 评论 -
user breakpoint called from code at 0x...
转自:http://hi.baidu.com/futurecreator/blog/item/636ab4081665ce226b60fbe7.html 处理在NTDll中意外的用户断点很久没有写东西了,这次是为了完善很久很久以前写的一个培训ppt(VC的使用与调试技巧),才想起来写点东西的。下面的文章参考了http://www.debuginfo.com/tips/userbpntd转载 2009-04-24 16:29:00 · 1537 阅读 · 1 评论 -
剪贴板大观园(一): 剪贴板数据拷贝版
声明:您可以随意转载此译文,希望您转载时保留作译者和此声明。如有翻译不当之处,敬请指正:mailto:efoxxx@263.net。译者注:本文之标题亦完全遵照原文翻译,决无篡改! 坚果(In a nutshell)是O’Reilly出版社的一个精品计算机图书系列,深受业内人士欢迎,几乎每一本都一版再版。本文虽与O’Reilly没有直接的关联,可其有着坚果系列鲜明的写作风格――简明、实用转载 2008-12-03 09:26:00 · 840 阅读 · 0 评论 -
[转]进程间通信的11种方法
进程间通信有以下方法Using named objects Waiting for multiple objects Waiting in a message loop Using mutex objects Using semaphore objects Using event objects Using critical section objects Using timer queue转载 2008-11-28 10:46:00 · 455 阅读 · 0 评论 -
VC下线程同步的三种方法(互斥、事件、临界区)
首选使用临界区对象,主要原因是使用简单。 EnterCriticalSection()函数等候指定的危险区段对象的所有权。当调用的线程被允许所有权时,函数返回。 EnterCriticalSection (),一个单独进程的线程可以使用一个危险区段对象作为相互-排除同步。 进程负责分配被一个危险区段对象使用的内存, 它藉由声明一个CRITICAL_SECTION类型 的变量实现。在使用一个危险区转载 2008-11-28 10:20:00 · 941 阅读 · 0 评论 -
解决VC中的有关STl 的4786编译警告
--------------------Configuration: Cpp1 - Win32 Debug--------------------Compiling...Cpp1.cppD:/1prg/Microsoft Visual Studio/prg/menu/Cpp1.cpp(13) : warning C4786: std::reverse_iterator;,std::allo转载 2009-01-03 15:10:00 · 1810 阅读 · 0 评论 -
Combo Box控件
1.你在编辑状态下点那个控件的向下的三角形,就出冒出来一个可以调高度的东东。将高度调高,否则在执行时会不能显示下拉选项。2.为combo box添加选项,在编辑状态下选combo box控件的属性,选Data标签,在编辑框中添加选项,按Ctrl-Enter来添加下一个选项。3.为combo box添加变量 combo box有两个变量,CComboBox类变量和CString变量。转载 2009-01-03 14:15:00 · 1029 阅读 · 0 评论 -
如何在ListBox中选择背景位图
http://www.vckbase.com/document/viewdoc/?id=400[ 原创文档 本文适合初级读者 已阅读26863次 ] 文档 代码 工具 如何在ListBox中选择背景位图作者:zhoudb 下载本文源代码本文介绍如何在ListBox中添加更换背景位图,并提供源代码供参考。本文源代码运行效果图转载 2009-01-03 15:11:00 · 1013 阅读 · 0 评论 -
中文/英文]VC6 sp6补丁下载|VS6 sp6补丁下载 [防VC6卡死]
中文/英文]VC6 sp6补丁下载|VS6 sp6补丁下载 [防VC6卡死] Post By:2008-9-10 18:20:00 初学VC的人最容易遇到的问题,就是VC6在编译的时候,linking.....,一直就这样link下去,打击了多少渴望掌握VC的人。网上的所谓vc集成sp6版本,由于没有测试完全,留下了bug,导致非常容易link卡死,由于这些版本自称转载 2008-12-31 10:50:00 · 3893 阅读 · 0 评论 -
CButtonST类使用说明文档
CButtonST 类是我们经常用到的一个很好的按钮扩展类,他的广泛用法可以让我们应用在很多的领域,尤其是设计界面的时候.但这个类很大,作的函数功能也很多,我整理了一下,希望对大家能更快的理解和使用他起到帮助作用 . 以下是CButtonST类的所有公共成员函数(函数名按音序排列先后): CButtonST::DrawBorder DWORD DrawBorder(BOOL bDrawBor转载 2008-12-30 13:06:00 · 1978 阅读 · 3 评论 -
剪贴板大观园(三): Clipboard 问答集
声明:此译文仅供网友们学习之用!您可以随意转载此译文,希望您转载时保留作译者和此声明。如有翻译不当之处,敬请指正:mailto:efoxxx@263.net。近期,我会在《剪贴板大观园》系列中补充大量新的文章,希望与您交流,共同提高!在我们自己的VC++ / MFC应用程序中增加剪贴板功能其实是很简单的事情。为了让你的程序可以与剪贴板对话,本文就其实现中的一些基本问题做一些实例讲解。转载 2008-12-03 09:02:00 · 642 阅读 · 0 评论 -
剪贴板大观园(二): 剪贴板间谍(ClipSpy)
声明:此译文仅供网友们学习之用!您可以随意转载此译文,希望您转载时保留作译者和此声明。如有翻译不当之处,敬请指正:mailto:efoxxx@263.net。近期,我会在《剪贴板大观园》系列中补充大量新的文章,希望与您交流,共同提高! 简介 最近有些空闲时间,我一直在思考Windows编程中一个我一直想知道却不知道的领域,也就是剪贴板。我已经自己写了一个处理剪贴板上文件拖转载 2008-12-03 09:30:00 · 1414 阅读 · 0 评论 -
如何编写异常安全的C++代码
关于C++中异常的争论何其多也,但往往是一些不合事实的误解。异常曾经是一个难以用好的语言特性,幸运的是,随着C++社区经验的积累,今天我们已经有足够的知识轻松编写异常安全的代码了,而且编写异常安全的代码一般也不会对性能造成影响。 使用异常还是返回错误码?这是个争论不休的话题。大家一定听说过这样的说法:只有在真正异常的时候,才使用异常。那什么是“真正异常的时候”?在回答这个问题以前,让我们先转载 2008-12-11 10:53:00 · 489 阅读 · 0 评论 -
如何重新建立ClassWizard
去年开始改用VS2008写程序了,但有些同事还在用VC6所有有时候难免会有需要把VS2008程序搬回VC6中进行编译的情况. VC6新建个工程,将所有的.CPP/.H文件全部拷入后编译,基本就能使用.但发现个小问题,就是ClassWizard无法正常运行.之前的所有映射都无法在ClassWizard中找到,当然代码中是有的,如果手工改动的话自然是可以的.不过对于习原创 2009-04-22 09:13:00 · 1054 阅读 · 1 评论 -
对话框程序启动隐藏窗口
http://hi.baidu.com/sky7/blog/item/278522977f46a06b54fb9603.html江湖上有众多传闻,ShowWindow是最令人糊涂的,很多人说在OnInitDialog()加上ShowWindow(SW_HIDE) 对话框便不出现,实验证明,这是不行的,可是在非基于对话框的程序,让一个对话框程序隐藏是可以的, 这其中有什么玄机?是因为在OnIni转载 2009-03-31 16:15:00 · 1276 阅读 · 0 评论 -
VC中产生随机数
需要的头文件:<stdlib.h>,库函数:srand;rand;time方法:1.首先设置种子srand(unsigned)time(NULL));使用当前时间作为种子是多数人的习惯做法. 2.产生随机数:rand()可以产生一个随机数;范围在0~RAND_MAX(32767)之间;如果要产生一个[min,max]之间的数,可以这样:rand()%(max) + min;转载 2008-12-23 15:32:00 · 2725 阅读 · 0 评论 -
vc-如何实现窗口比例缩放
1、在类定义中增加变量:bool m_initialize; 2、构造函数中 m_initialize=FALSE;3、OnInitDialog()函数中 m_initialize=TRUE;4、重载onSize()函数void CWebudpDlg::OnSize(UINT nType, int cx, int cy) {// CDialog::OnSize(nT转载 2008-12-23 14:05:00 · 3907 阅读 · 0 评论 -
boost之scoped_ptr
c++标准库提供了std::auto_ptr和boost::scoped_ptr的功能基本类似,但有一点不一样,就是scoped_ptr不能移交指针所有权,而std::auto_ptr可以移交指针。#include #include using boost::scoped_ptr; using std::cout; using std::endl; using std::auto转载 2008-12-11 09:34:00 · 578 阅读 · 0 评论 -
C++中的auto_ptr
stl 文件中的 std::auto_ptr 在C++中的故事特别多, 在它的演变过程中至少出现了3个版本.http://www.josuttis.com/libbook/auto_ptr.html 这个连接里面有它完整的故事. VC6中STL带的auto_ptr( 带owner字段)的版本应该就是文中说的Version 2. 最新的Version里面包含了一个auto_ptr_ref, 这个是转载 2008-12-11 09:16:00 · 575 阅读 · 0 评论 -
C++中接口与实现分离的技术
在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。 下面用一个最简单的例子来说明。 类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下: lxTest.h文件内容:转载 2008-12-11 10:51:00 · 517 阅读 · 0 评论