
我的编程之路
文章平均质量分 64
lovey_carolin
这个作者很懒,什么都没留下…
展开
-
MessageBox和AfxMessageBox函数的区别
1.可以以下面的方式调用AfxMessageBox。<br /><br />AfxMessageBox(“Are you sure?”,MB_YESNO|MB_ICONQUESTION);<br /><br />2.与AfxMessageBox类似的函数MessageBox,它是CWnd的类成员函数:<br /><br />int MessageBox( LPCTSTR lpszText,LPCTSTR lpszCaption = NULL,<br /><br />UINT nType = MB_OK );转载 2010-11-26 10:57:00 · 478 阅读 · 0 评论 -
VC创建可隐藏文件夹的方法
早上闲着没事逛逛csdn,一不小心看到了这几天正好需要用的,于是记了下来:要实现的目的:判断C:/Program Files中有没有一个名为hotel的文件夹,有的话就什么也不做,没有的话就创建一个名为hotel的文件夹,且此文件夹为隐藏的文件夹具体步骤:#include #include using namespace std;int main(){char szDirName[] = "C://Program Files//hotel";if( CreateDirectory(szDirName, NU原创 2011-01-13 10:21:00 · 6895 阅读 · 1 评论 -
关于vc++调用 exe文件的问题
<br />要将一个exe文件通过一个按钮控件进入另外一个exe。一开始有些摸不着头脑,于是在网上找了一些方法,方法很简单,只需要一个函数就可以解决,不过还是标记一下,免得哪天忘记了~<br />WinExec("Student.exe", SW_SHOWNORMAL); //Student.exe就是我需要调用的另外一个exe原创 2010-11-22 14:58:00 · 390 阅读 · 0 评论 -
vc中把数据库记录表导入Excel
<br /> <br />同事教我的方法,很实用~<br />具体步骤:<br />新建基于对话框的工程,在对话框CTestDialog中添加按钮:IDC_TEST,双击按钮,添加成员函数:CTest::OnTest()。<br />1.在InitInstance()中添加:<br /> if(CoInitialize(NULL))<br /> {<br /> AfxMessageBox("初始化Com支持库失败!");<br /> exit(1);<br /> }<br /> 在原创 2010-11-22 15:21:00 · 882 阅读 · 0 评论 -
如何将数据库中的记录表导入到VC中
具体步骤如下:首先新建一个基于对话框的工程,在对话框CConnectDatabaseDialog中添加按钮:IDC_ScoreSequery,Caption:导入表,双击"导入表"按钮,添加成员函数void CConnectDatabaseDlg::OnScoreSequery(),然后添加List Control控件,Ctrl+W进入MFC ClassWizard,打开Member Variables,选中IDC_LIST1,点击Add Variable添加m_list。变量m_list。1、在FileV原创 2010-11-23 09:07:00 · 1284 阅读 · 0 评论 -
UpdateData( )
<br />UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。 <br /><br />UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。 <br /><br />这是从应用上的解释:当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。原创 2010-11-24 15:37:00 · 739 阅读 · 0 评论 -
vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
<br /><br />三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。<br /> WinExec 两个参数,前一个指定路径,后一个指定显示方式。 <br />ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发转载 2010-11-24 15:58:00 · 564 阅读 · 0 评论 -
AfxGetApp用法
AfxGetApp( )是全局的。AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。比如在全局函数中要向对话框中的列表写数据。void writeString(char* pString){ CWnd* pWnd = AfxGetApp()->GetMainWnd(); CMyDlg * pDlg; pDlg=(CMyDlg *) pWnd; pDlg->ShowMsg(pString);}AfxGetApp()得到转载 2010-11-24 19:28:00 · 394 阅读 · 0 评论 -
将一副完整的位图均分成n块位图显示
以下方法实现对话框中一副完整的位图均分为7块具体方法:1、CImageList images1;2、在OnInitDialog函数中添加: images1.Create(120,150,ILC_COLOR24|ILC_MASK,10,10); CBitmap *cBit=new CBitmap(); cBit->LoadBitmap(IDB_BITMAP11); images1.Add(cBit,RGB(192,192,192)); m_list2.SetImageList(&原创 2011-01-24 11:43:00 · 740 阅读 · 0 评论 -
导航图的制作方法
<br />首先在Converse3D三维场景编辑器下按照教程制作一个导航图,并使用动态导出保存为.c3d文件。此外,在程序中的实现方法:<br />BOOL CXXView::PreTranslateMessage(MSG* pMsg) <br />{<br /> if (pMsg->message==WM_LBUTTONDBLCLK)<br /> <br /> { <br /> CRect clientRect,daoHangRect,gd1_rect,gd2_rect,gd3_rect,gd4原创 2011-03-10 14:51:00 · 1748 阅读 · 0 评论 -
阶段总结之碰撞检测
由于3D引擎平台的限制,还没办法在场景中检测所有的碰撞检测。只能使用之前的小车碰撞检测的场景,闲来无事,将过程记录下来~1、由于工具的限制,无法获取到当前选取模型投影在二维平面上的矩形长宽值(PS:这里所做的碰撞检测均采取的是三维模型投影到二维平面上,并使用框选模型得到所有的投影均为矩形区域),这里只能采取手动测量矩形的长宽值。2、针对场景中的静止不变的物体,如厂房的墙壁、柱子等,也是采取手动测量出墙壁、柱子在二维平面上的投影矩形,针对场景中其他的模型,采取如1相同的方法测量出投影矩形区域。将这些矩形区域都原创 2011-05-05 10:42:00 · 991 阅读 · 0 评论 -
wireshark 过滤法则
一、IP过滤:包括来源IP或者目标IP等于某个IP 比如:ip.src addr==192.168.0.208 or ip.src addr eq 192.168.0.208 显示来源IP ip.dst a原创 2011-08-12 09:12:20 · 548 阅读 · 0 评论 -
CFile和CStdioFile的文件读写使用方法
CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。CFile::modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,转载 2010-12-20 11:08:00 · 399 阅读 · 0 评论 -
VC中使用GetModuleFileName获取应用程序路径
<br />.//与API函数GetModuleFileName获取应用程序目录有何不一样?采用.//也能获得应用程序目录,采用GetModuleFileName也能获得,二者有何不同?一样!<br />一个是相对路径,一个是绝对路径.//是的到应用程序的当前目录,但当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的。<br />GetModuleFileName()得到模块的完整路径名,例如,你载入c:/windows/system32/转载 2010-12-15 16:40:00 · 626 阅读 · 1 评论 -
Setimer和Ontimer的使用
<br />关于OnTimer()函数的填写,对于CDialog,可以Ctrl+W中添加;<br />对于SetTimer可以在初始化当中添加!<br />OnTimer()函数是响应用SetTimer()函数设定的时钟发送的时钟消息的,你没设定时钟,就不会有时钟消息,OnTimer()里的语句当然也不会被调用。<br />为类添加VM_TIMER消息响应,会看到类中多了个OnTimer(UINT nIDEvent)。 <br />然后用SetTimer(1,10,NULL)就行了。第一个参数是ID,第转载 2010-12-15 16:01:00 · 597 阅读 · 0 评论 -
C++中this指针的用法
<br />this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 this->month = mn; (*this).month = mn; } 1. this只能在成员函数中使用。全局函数,静态函数都不能使用this。实际上,成员函数默认第一个参数为T*const register this转载 2010-11-29 10:18:00 · 274 阅读 · 0 评论 -
memset函数详细说明
<br />1。void *memset(void *s,int c,size_t n)<br />总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。<br /><br />2。例子<br />#include<br /><br />void main(){<br />char *s="Golden Global View";<br /><br />clrscr();<br /><br />memset(s,'G',6);<br />printf("%s",s);<br /><br />get转载 2010-11-29 10:55:00 · 369 阅读 · 0 评论 -
Setforegroundwindow 将窗口置最前
<br /> windows下简单的调用Setforegroundwindow并不能将窗口置最前,我找到三种方法可以实现该功能。<br /><br />1、先置topmost,然后取消<br /> SetWindowPos(HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);<br /> SetWindowPos(HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);<br /><br />2、改变系统环转载 2010-11-29 18:38:00 · 2302 阅读 · 0 评论 -
VC多线程临界区
<br />在使用多线程时,一般很少有多个线程完全独立的工作。往往是多个线程同时操作一个全局变量来获取程序的运行结果。多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题。如果是写操作,则会发生错误。这时候,我们可以通过临界区,为全局变量设置一个保护,保证同时只有一个线程可以访问此变量,其他变量进入等待状态。<br /> 临界区(Critical Section)是一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一转载 2010-11-30 13:39:00 · 824 阅读 · 0 评论 -
VC多线程编程
<br />VC中多线程使用比较广泛而且实用,刚在网上看到的教程.感觉写的挺好. <br />一、问题的提出<br />编写一个耗时的单线程程序:<br /> 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: <br />void CSingleThreadDlg::OnSleepSixSecond() <br />{<br /> S转载 2010-12-01 16:06:00 · 588 阅读 · 1 评论 -
浅谈C++中的LPVOID类型
LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为参数传递),然后在使用的时候在转换回来。 例如: <br />class CMyClass<br />{<br /> void Start();<br /> static UINT StartThread(LPVOID lParam);<br />};<br /><br />void CMyClass::Start()<br />{<br /> AfxBeginThread(StartTh转载 2010-12-02 14:38:00 · 24315 阅读 · 0 评论 -
释放动态申请的内存
case1:在多个文件都用到的动态申请的变量放在App中的ExitInstance()函数中进行释放case2:如果动态申请的是结构体类型,则使用delete xx;进行释放case3:要进行内存释放的App文件中需包含动态申请内存定义的头文件eg:在selfDefine.cpp中定义:usrLogin_t *uLogin = new usrLogin_t;释放内存时应按如下操作:在工程名.cpp文件下添加#include "selfDefine.h"int CServerApp::ExitInstance原创 2010-12-06 16:54:00 · 642 阅读 · 0 评论 -
淡入BMP图片
<br />要求:打开登录对话框时,登录图片慢慢显示出来<br />方法:1、在工程中添加Splash.h及Splash.c文件<br /> 2、在Login.cpp中添加#include "Splash.h" (Login时需要淡入图片)<br /> 3、在OnInitDialog()函数中添加:CSplashWnd::ShowSplashScreen(this);<br />原创 2010-12-08 10:08:00 · 379 阅读 · 0 评论 -
星号的秘密
<br />1、乘法运算符 2、定义指针int *p = 0; 还是 int* p = 0;?后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int的指针型),相比而言,前面一种定义似乎是定义了*P这个奇怪的东西。但是后面一种写法会带来一个容易产生的误解:int* p1, p2;这儿给人的感觉似乎是定义了两个指针型变量p1和p2,但是,事实上,这种直觉是错误的,正确的理解方式是int *p1, p2;即p1是指针型的,而p2确是整型的。在MS VC++ 6.0中,是按照后面一种格式转载 2010-12-06 09:41:00 · 524 阅读 · 1 评论 -
C++中指针和引用的区别
<br />指针和引用的区别<br /><br />(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. <br /><br />由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值. <br /><br />String & rs = string1; <br /><br />由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需要测试其的有转载 2010-12-06 14:30:00 · 378 阅读 · 0 评论 -
初识GDI、GDI+
<br />GDI在Windows中定义为Graphics Device Interface,即图形设备接口,是Windows API(Application Programming Interface)的一个重要组成部分。它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图形设备无关性,W转载 2010-12-08 20:01:00 · 540 阅读 · 0 评论 -
编程小规范
1、当存在多个文件都会用到的变量时,将这些变量单独定义在一个头文件中(如定义一个 var.h头文件用于定义这些变量)。2、将常量尽可能多的定义成宏,以便后期修改方便。3、关于全局变量是在cpp文件中定义还是.h文件中定义的问题? 全局变量可以这样定义原创 2011-04-29 11:45:00 · 122 阅读 · 0 评论