VC
文章平均质量分 62
nonths
这个作者很懒,什么都没留下…
展开
-
一个带系统托盘的VC++程序编写方法
如何创建一个带系统托盘的程序: 第一步:首先在主框架类的PreCreateWindow函数中修改窗口的Style,代码如下:cs.style=WS_POPUP;cs.dwExStyle |=WS_EX_TOOLWINDOW;也就是让窗口隐藏起来,不让它显示。 第二步:在主框架的OnCreate函数中调用函数Shell_NotifyIcon,让我们的系统图标在托盘内显示,代码如下:原创 2014-04-02 09:43:01 · 675 阅读 · 0 评论 -
如何知道VS开发的程序引用了那些dll
在用VS开发的时候经常出现在开发机器上可以正确运行,但是在客户机器上却出现运行错误的情况。一种可以解决原创 2014-07-14 11:12:44 · 2056 阅读 · 0 评论 -
关于const的一个问题
下面的一段代码:#include using namespace std;int main(int argc,char*argv[]){ const int a=1; int*p = (int*)&a; cout <<"source:a="<<a <<"" <<"&a="<<&a cout<<"source:*p="<<*p<<" "<<"p="<<p原创 2014-04-02 09:44:17 · 493 阅读 · 0 评论 -
C++的一些小问题总结
(1)指针修改常量区数据出错char *s1 = "nonths";char s2[] = "nonths";这两句定义看起来一样,实则不然。*s1定义的字符串“nonths”是放在静态区的字符串常量,不能修改,如果我们用*s1 ='x';去修改的时候就会导致程序崩溃;但是s2数组定义的nonths却是放在栈区的字符串变量,程序员可以修改,用s2[1] ='x';来修改不会出错。切记!原创 2014-04-02 09:44:10 · 631 阅读 · 0 评论 -
常量指针和指向常量的指针
(1)常量指针:指针本身的地址值不可修改,这个值是定义指针的时候确定的,以后不可再改变。定义:int *const i = new int; i是常量,执行i++会出错;const修饰的是i,所以i不能变。(2)指向常量的指针:该指针指向的变量是不可修改的。定义:const int *i =new int(100); 或则:intconst *i = new int(100);原创 2014-04-02 09:44:07 · 411 阅读 · 0 评论 -
showjpg
在C++中显示jpg和gif格式的图片:首先读取图片:CFileDialog dlg(TRUE,"jpg","*.jpg",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"jpg文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif||",NULL);if(dlg.DoModal()==IDOK){m_sPath =dlg.GetPathNam原创 2014-04-02 09:43:38 · 519 阅读 · 0 评论 -
VS2008中统计代码行数
在VS2008中,CTRL+SHIFT+F,调出查找对话框:输入:^:b*[^:b#/]+.*$在Find option中勾选Use regular expressions,点击Find需要注意:#开头和/开头或者空行都不计入代码量。如果需要只统计代码文件的代码量,可以按住Ctrl+Shift+F之后选择查找文件的类型。原创 2014-04-02 09:45:54 · 3053 阅读 · 0 评论 -
Semaphore与Mutex简介
Semaphore,即信号量(CreateSemaphore/sem_init),官网解释是用来保护多重资源的访问,它可以设置一个大于0的值,如N,任何访问者在该信号量大于1的情况下均可以获得资源的访问权,并将相应的信号量减1,当访问完成后,信号量加1,即该资源可以同时容纳N个访问者。但是据我了解,一般在为了线程在某一定程度上的顺序执行才使用信号量,即线程A等待线程B执行完某些操作以后,才能继续往原创 2014-04-02 09:45:49 · 1377 阅读 · 0 评论 -
OnDraw和OnPaint的区别
(1)CView类是由CWnd类派生而来的,OnDraw是CView类的虚函数,OnPaint是CWnd的类成员函数,负责相应WM_PAINT消息。(2)一般是这样:窗口发出一个WM_PAINT消息,OnPaint函数响应这个消息,然后这个函数再调用OnDraw函数。虽然CView类中的OnDraw函数是虚函数,但是我们自己生成的CView类的子类已经将这个函数重载了。(3)假设我们在自己原创 2014-04-02 09:44:21 · 672 阅读 · 0 评论 -
一个关于自加的问题++
int i=2;cout 按照我们的理解:首先计算i++结果是2,加完以后i变成3,然后再执行++i结果为4,i的值为4,再执行i++结果为4,i的值为5.最后结果应该是2+4+4等于10。但是输出的结果却是9,因为这整个是一个表达式,是一个整体,它会先执行(++i),这是i等于3,然后执行i+i+i输出9,最后执行两个自加,i最后等于5.所以有时候写程序的时候不能想当然的写,觉得因原创 2014-04-02 09:44:19 · 421 阅读 · 0 评论 -
malloc/free 和new/delete的区别
本质:malloc/free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于mall原创 2014-04-02 09:44:13 · 444 阅读 · 0 评论 -
C++中class String类的定义
之前在网上看到一些关于String类的定义,然后在电脑上运行了一下,发现很多运行的时候都会出错,很苦恼。所以花了一点时间修改了一下,哈哈,现在可以了,调用任何一个函数都不会出错了,分享一下。 源代码如下:#include #include using namespace std;class String { public : //String(); String (const原创 2014-04-02 09:44:02 · 690 阅读 · 0 评论 -
showprocess
很简单,在一个列表框控件中显示进程列表:PROCESSENTRY32 pe;HANDLEhSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);int index;m_prolist.ResetContent();Process32First(hSnapshot,&pe);do{index=m_prolist.AddStr原创 2014-04-02 09:43:41 · 843 阅读 · 0 评论 -
在C++中是这样显示一张位图的
显示一幅位图很简单,代码如下:void CTuopan1View::OnShowbmp(){// TODO: Add your command handler code hereCFileDialogbmpfile(TRUE,"bmp","*.bmp",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"BMP位图文件(*.bmp)|*.bmp||",NULL)原创 2014-04-02 09:43:06 · 4113 阅读 · 0 评论 -
全屏显示单文档程序的编辑区(VC++…
编写一个全屏显示的程序很简单:对全屏显示消息的响应函数如下:void CMainFrame::FullScreenModeOn(){//以下的几句是隐藏当前的工具栏和状态栏,但是仅仅执行以下几句我们的菜单栏和状态栏的确是隐藏了,但是显示菜单栏和状态栏的背景依然存在,所以没有达到我们想要全//屏显示的效果,我们需要把背景也给隐藏了m_bToolBarWasVisible=(m_wndT原创 2014-04-02 09:43:03 · 838 阅读 · 0 评论 -
C/C++/ARMC中的一些预定义宏
不管是ARM C还是C/C++中,经常会用到一些非自定义的宏。这些宏定义是编译器预定义的,程序员不能自定义,编译器在编译的过程中遇到这些宏定义会自动换成相应的内容,下面来看我们经常用到的几个宏定义。__FILE__:文件的路径加名称__LINE__:当前行处于该文件的行数__DATE__:编译的日期__TIME__:编译的时间这几个宏作用比较大,在编程中经常用到,可以用来调试,转载 2015-02-25 10:46:13 · 1215 阅读 · 0 评论