
msvc++研究
文章平均质量分 56
skilledprogrammer
站在起跑线上,只要不断前进,生活就充满了新鲜感
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
vc++中坐标设置及画点
1.vc中的默认坐标方式是x轴水平向右,y轴竖直向下,坐标原点在左上角(0,0),单位为一个像素,这与我们常见的坐标系不太一样,可用以下函数该之。函数原型:int SetMapMode(int nMapMode)参数nMapMode是映像方式代码,可选以下MM_ANISOTROPIC,MM_HIENGLISH,MM_HIMETRIC,MM_ISOTROPIC,MM_LOENGLISH原创 2008-03-28 23:28:00 · 10219 阅读 · 2 评论 -
(转)在CRichEditCtrl中如何获取中文字符的位置
<br />牢骚牢骚rich edit,他给我找了不小的麻烦,等到中文能选半个字的时候我才知道原来那个东西还有中英文之分的,然而麻烦还不就只是这一点。<br /> <br />在2000下或更高版本的OS上,rich edit能接收WM_LBUTTONUP消息,然而98下,只接收一次,第二次就不理你了,至少MFC编译出来的代码是这样,没有在SDK上作过试验。<br /> <br />richedit.SetWindowText("a");<br /> <br />richedit.SetSel(0,-1);转载 2011-03-10 16:27:00 · 3054 阅读 · 0 评论 -
(转)vc++获得系统时间的几种方案
<br />//方案— 优点:仅使用C标准库;缺点:只能精确到秒级<br /> <br />#include <time.h> <br /> <br />#include <stdio.h> <br /> <br />int main( void ) <br /> <br />{ <br /> <br /> time_t t = time( 0 ); <br /> <br /> char tmp[64]; <br /> <br /> strftime( tmp, sizeof(tmp),转载 2011-03-10 16:30:00 · 619 阅读 · 0 评论 -
vc调用cmd命令总结(续)
<br />承接前面博客“vc调用cmd命令总结”,列出以下常用windows命令,从网上找的,仅供查找。<br />附:一些windows的系统命令:<br />winver---------检查Windows版本<br />wmimgmt.msc----打开windows管理体系结构(WMI) <br />wupdmgr--------windows更新程序<br />wscript--------windows脚本宿主设置<br />write----------写字板<br />winmsd----原创 2011-03-14 19:53:00 · 2401 阅读 · 0 评论 -
树形控件CTreeCtrl的使用
<br />树形控件在界面编程中应用十分普遍,如在资源管理器中和树形结构显示书的目录等,我们一步步研究树形控件的使用。<br />在对话框界面上首先拖动创建一个树,一般我们改变三个属性:<br />Has Buttons显示带有”+”或”-“的小方框,表示某项能否被展开或已展开,默认为选中,我们改为选中。<br />Has Lines在父项与子项之间连线以清楚地显示结构,默认为选中,改为选中。<br />Lines at root:在根部划线,默认为选中,改为选中。<br />其余根据需要,可以修改,如Al原创 2011-03-28 16:25:00 · 5554 阅读 · 2 评论 -
Win32和mfc下弹出console窗口的方法
<br />在C**App InitInstance()中 调出console窗口<br />BOOL CWinApp::InitInstance()<br /> AllocConsole();<br /> SetConsoleTitle("debug console");<br /> freopen("CONOUT$","w",stdout);<br />重载ExitInstance()函数,释放Console。<br /> FreeConsole();<br />可以使用prin转载 2011-05-20 20:17:00 · 3468 阅读 · 0 评论 -
在vc中将程序图标最小化到托盘中
<br />1.在**.h中定义消息名字,添加消息函数定义<br />#define WM_ICONNOTIFY WM_USER + 500 //图标响应消息(lParam)<br />afx_msg LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam);<br />2.在**.cpp添加消息映射<br /> ON_MESSAGE(WM_ICONNOTIFY,CtestDlgDlg::OnNotifyIcon)<br />3.编写最小化到托盘的函数<b原创 2011-04-08 09:34:00 · 757 阅读 · 0 评论 -
vs2008下wcecompat库的编译
<br /><br /> wcecompat是windows CE下的C运行库兼容库,对系统自带的C库做了很多补充,一般我们先再要使用的平台上编译源码,然后在工程中引用头文件和静态库。<br />编译它主要有两种方法,一是使用vs自带的命令行工具,缺点是有错误不容易改,另一个就是建个静态库工程,有的源码自带工程,使用vs界面编译。两种方法都要小小的配置一下,更郁闷的是源码编译还有错误,下面听我慢慢道来。<br /> 首先看在工程下编译,首先设置好编译平台,我的是windowsmobile原创 2011-06-01 20:19:00 · 2425 阅读 · 0 评论 -
在Windows下编译OpenSSL(VS2005) 转
<br />如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)<br />1、安装ActivePerl//初始化的时候,需要用到perl解释器<br />2、使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)<br />3、解压缩openssl的包,进入openssl的目录<br />4、perl configure VC-WIN32<br />尽量在这个目录下执行该命令,否则找不到Config转载 2011-04-20 16:50:00 · 718 阅读 · 0 评论 -
vc程序计时器(转)
<br />1 使用time_t time( time_t * timer ) 精确到秒<br /> 计算时间差使用double difftime( time_t timer1, time_t timer0 ) <br /> <br />2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒<br />3 使用DWORD GetTickCount() 得到的是系统运行的时间精确到毫秒<br />4 如果使用MFC的CTime类,可以用CTime::转载 2011-04-20 16:57:00 · 3412 阅读 · 0 评论 -
动态改变按钮上的光标
动态改变按钮上的光标1.在资源视图中添加新的Cursor,在OnInitDialog()中加载光标 m_hCursor = AfxGetApp()->LoadCursor(IDC_CURSOR1);2. 添加WM_SETCURSOR消息,重写函数如下BOOL CtestDlgDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CString s; ::原创 2011-05-06 17:51:00 · 964 阅读 · 0 评论 -
vs打包应用程序的方法
在完成项目开发生成应用程序后,由于相关的文件较多,可能还要分不同的子文件夹,所以一般将程序打包成一个安装文件,当然还可以设置修改注册表等,下面我们看一下在vs下如何打包c++应用程序。首先新建一个安装项目,选择其他项目类型->安装和部署,如图所示,建立好项目之原创 2011-08-12 20:34:46 · 2141 阅读 · 0 评论 -
WinInet编程详解
一般而言,开发Internet服务客户端程序的目的是通过Internet协议(HTTP,FTP)获取网络数据源的信息,微软提供了专门的Win32 Internet扩展接口,也就是WinInet。1使用Win API函数开发客户端程序一般流程是,首先通过InternetOp原创 2011-09-16 16:56:16 · 10492 阅读 · 3 评论 -
如何在vc程序中内嵌文件
如何在vc程序中内部包含一个文件,不想被外部看到?可以将该文件内嵌作为自定义资源。使用内嵌文件作为自定义资源有很多应用,比如有些程序的语言包,皮肤,dll文件,图像或音频视频文件,不想放在程序外面,另外一些病毒木马可能嵌入某个程序中。 添加自定义资源的方法很简单,打开资源视图,右击添加资源->自定义,输入自定义的类型名,如我想内嵌xml文件,就输入xml,然后在xml树节点右击添加原创 2011-10-26 20:10:17 · 1625 阅读 · 0 评论 -
动态链接库dll详解
一、引言在发行的应用程序中,经常包含动态链接库dll,它包含执行一定功能的函数供其他程序调用。Windows API函数都包含在DLL中,其中有三个最重要的DLL:Kernel32.dll 包含用于管理内存、进程、线程的函数。User32.dll 包含哪些用于执行用户界面的函数GDI32.dll 包含哪些用于画图和显示文本的函数使用动态链接库的好处:1. 可以跨语言原创 2011-12-01 21:52:17 · 9449 阅读 · 1 评论 -
Richedit使用大全
<br />很不错的源代码<br />http://www.pudn.com/search_db.asp?keyword=MyRichEdit&x=36&y=16<br />richedit 常见使用问题<br />一.常见问题<br />a.可以编译,不能执行的<br /><br />在需要在相应的对话框中加上InitInstance(void)函数中添加<br />AfxInitRichEdit();<br />b.升级默认的Riched版本(默认的有一些bug),如<br />可在InitInstan转载 2011-03-04 16:09:00 · 3089 阅读 · 0 评论 -
使用skinMagic库实现界面换肤
<br />· 将SkinMagicTrial.lib、SkinMagicTrial.dll和SkinMagicLib.h拷贝到项目根目录下,并在工程中添加;<br />· 把Skins文件夹放在项目根目录下;<br />· 建立一个MFC单文档项目;<br />· 将 #include "SkinMagicLib.h" 拷贝到 StdAfx.h文件原创 2010-11-22 19:31:00 · 870 阅读 · 0 评论 -
对话框响应键盘消息的方法
<br />键盘消息输送给获得焦点的窗口,在对话框中,键盘消息被基本对话框消息,添加WM_KEYDOWN消息不会响应,如果要处理键盘消息,需要重载PreTranslateMessage函数,代码示例如下:<br />过滤了PreTranslateMessage(MSG* pMsg) <br /> { <br /> if( pMsg->message == WM_KEYDOWN ) <br /> { <br />原创 2010-10-23 11:28:00 · 1253 阅读 · 0 评论 -
vc菜单前添加图标(转)
一、单文档的菜单图标实现: 1、新建一个位图资源,大小为13*13,假设ID为IDB_BITMAP1,画好图标 2、在CMainFrame中添加成员变量:CBitmap bitmap 3、在CMainFrame的OnCreate中加入: bitmap.LoadBitmap(IDB_BITMAP1); GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF转载 2009-11-17 21:49:00 · 4044 阅读 · 0 评论 -
动态库的显式链接和隐式链接
1.显式链接例如导入函数如下int sum(int a,int b);那么显式调用时,首先定义一个函数指针,typedef int (*f)(int,int)然后加载动态库,HINSTANCE handle=LoadLibrary("t.dll");接着得到该函数的指针f f1=GetProcAddress("sum");那么就可以利用函数指针f1使用该函数了最后,用完后释放库文件FreeLibr原创 2010-01-14 15:58:00 · 4327 阅读 · 0 评论 -
VC客户区显示图像的方法
今天让编程实现在客户区显示图像,可惜没弄好,其实也很简单,总结了一下,步骤如下。1、首先在资源中创建位图,设为IDB_BITMAP!,如果不创建就要用函数从文件中读了。2、然后建两个对象,CBitmap bt;BITMAP b;并初始化 bt.LoadBitmapW(IDB_BITMAP1);bt.GetBitmap(&b);3、接着创建兼容的设备上下文,CDC dc;原创 2009-11-20 20:52:00 · 1646 阅读 · 1 评论 -
vc调用dev动态链接库的方法
由于不同的编译器对函数的命名方法不同,使跨编译器进行动态库调用变得困难。对于调用g++的一般函数,在dev编写库文件时,在头文件中函数前声明extern "C",然后可以直接在vc中调用,但这种方法对于类是不行的。下面介绍两种调用导出类的方法。1.我们利用vc可以调用普通函数库的能力,将类成员函数全部转化为普通函数进行调用,这种方法的缺点是调用麻烦,封装性不好。2.类似COM原理,我们用dev建立原创 2010-01-28 10:24:00 · 1233 阅读 · 0 评论 -
在工具栏添加带图像的下拉菜单的工具条,并更新工具条
1.首先设置欲弹出下拉菜单的工具条的样式,设置为下拉式DWORD dwExStyle=TBSTYLE_EX_DRAWDDARROWS; m_wndToolBar.GetToolBarCtrl().SendMessage(TB_SETEXTENDEDSTYLE,0,(LPARAM)dwExStyle); DWORD dwStyle=m_wndToolBar.GetButtonStyle(m_wn原创 2009-12-07 13:26:00 · 961 阅读 · 0 评论 -
vc2003中几个基本控件的使用
vc中有些控件经常用到,要非常熟悉,主要有静态文本框CStatic、编辑框CEdit、命令按钮CButton、单选按钮CRadio、复选框CCheck、分组框CGroupBox、组合框CComboBox、列表框CListBox.单选按钮:假设radio1,radio2,radio3为一组,那么需设置属性radio为Group,Auto,TabStop,其余两个设置Auto,TabStop。使用时添原创 2009-12-11 16:31:00 · 961 阅读 · 0 评论 -
自绘CStatic控件
新建一个继承CStatic的派生类,重写DrawItem()虚函数,实现重绘功能。在主程序中添加一该派生类变量,设置OWNERDRAW属性,即可实现控件的自绘。原创 2009-12-31 16:33:00 · 3338 阅读 · 0 评论 -
extern "C"的使用
1.在c程序调用c程序和c++程序调用c++程序时,不涉及。2.在c程序调用c++程序时,C++的头文件需添加extern "C",但是在C语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。3.在c++程序调用c程序时,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:extern "C"{原创 2009-12-31 16:35:00 · 698 阅读 · 0 评论 -
vc中播放mp3文件的方法小结
<br />一般播放MP3常见的有两种方法,一种是自己解码,另外一种用系统的库,比如MCI,当然如果可以用控件直接用个控件会更方便。<br />1. 使用mci<br /> <br />#include <windows.h><br />#include <stdio.h><br />#include <mmsystem.h><br />#include <shellapi.h><br />#include <AFXCOM_.H><br /> <br />#pragma comment(lib,"原创 2010-09-10 20:43:00 · 16824 阅读 · 8 评论 -
选择文件夹的通用对话框
大部分Windows应用工具程序都能响应接受文件拖放,比如Word,Notepad等当把文件直接拖拽到该窗体或者是某个控件下,应用程序会直接打开这个文件,这样将极大的方便客户使用本文就是介绍这个的实现,跟以前一样,不看到代码一定会很不爽:1. 首先先将您的CDialog设置为Accept files,通过代码或者选项点击都可以实现2. 添加函数声明和消息映射1.//添加事件声明(尽量写在”AFX_MSG”宏外面.我记得写在里面会出现错误)2.afx_msg void OnDropFiles( HDROP h原创 2010-09-10 20:31:00 · 2118 阅读 · 0 评论 -
拖拽文件到窗口即打开的方法
<br />大部分Windows应用工具程序都能响应接受文件拖放,比如Word,Notepad等<br />当把文件直接拖拽到该窗体或者是某个控件下,应用程序会直接打开这个文件,这样将极大的方便客户使用<br />本文就是介绍这个的实现,跟以前一样,不看到代码一定会很不爽:<br />1. 首先先将您的CDialog设置为Accept files,通过代码或者选项点击都可以实现<br />2. 添加函数声明和消息映射<br />1.//添加事件声明(尽量写在”AFX_MSG”宏外面.我记得写在里面会出现错误原创 2010-08-31 19:33:00 · 7084 阅读 · 0 评论 -
msvc下显示jpg图片方法之一
在vc中显示bmp图像比较容易,但显示jpg,png等其它格式就没那么容易,一般有几种方法可以考虑,一是用图像控件,但一般要下载并注册,二是采用微软的GDI+接口,对它熟悉的话可以使用,再有就是本文采用的一个方法,就是用COM组件的接口IPicture,具体见例子吧。IPicture* pPic; IStream* pStm; CFile file; CFileStatus fstatus; long cb; if (file.Open( str原创 2010-09-18 11:42:00 · 883 阅读 · 0 评论 -
vc调用cmd命令总结
在vc中调用黑屏下的cmd命令目前知道4种方法,分别是system、WinExec,ShellExecute和CreateProcess四个命令.下面简单介绍一下1.在VC中调用DOS命令时,可以用函数system("DOS命令"),如我们经常见的命令system("pause"),当然也可以执行别的应用程序,比如system("F://lame//lame.exe F://lame//a.wav F://lame//a.mp3")。只要在cmd下执行的在这里应该也没问题,只是注意打开文件或保存文件原创 2010-10-01 17:54:00 · 16996 阅读 · 1 评论 -
一个简单的弹出对话框数据成员检验问题
最近在写界面,碰到一个感觉很简单但一时没不到解决的办法,现在ok了,相信很多写界面的人会经常碰到。比如有个有个主对话框dlg1的按钮,点击弹出一个模态对话框dlg2,dlg2的功能就是输入一些数据,点击确定或取消,来让dlg1得到输入的数据,我想在点击确定时判断是否输入为空,如果为空就弹个信息框提示一下,然后继续等待输入,就是dlg2还在等着。如下图,实现办法就是重载dlg2的确定函数。比如代码大致这么写。void CAsdDlg::Ok(){ UpdateData(TRUE); if原创 2010-10-10 10:17:00 · 940 阅读 · 0 评论 -
windows下c++编写多线程
一.进程首先来看进程,它是一个正在运行的程序的实例,是一个程序在其自身的地址空间的一次执行活动。进程是资源申请、调度、和独立运行的基本单位。进程有两部分组成:1操作系统用来管理进程的内核对象,内核对象是系统用来存放关于进程的统计信息的地方,它是操作系统内部分配的一块内存块,该内存块是一种数据结构,其成员负责维护该对象的各种信息。2地址空间,它包含所有可执行模块、dll模块的代码和数据,原创 2011-12-06 11:41:26 · 34725 阅读 · 2 评论