vc运行其他程序的3种方法
VC常用操作源码汇总(推荐)

CategoryCD-ROM (1)关闭计算机 (1)重启计算机 (1)枚举所有字体 (1)只运行一个程序实例 (2)得到鼠标位置 (2)显示和隐藏程序菜单 (3)获取可执行文件的图标 (3)窗口自动靠边程序演示 (3)系统菜单添加菜单项 (5)动态增加或删除菜单 (6)改变应用程序的图标 (7)改变窗口标题的方法 (7)剪切板上通过增强元文件拷贝图像数据 (8)剪切板上文本数据的传送 (8)捕捉屏幕图像到剪切板中 (9)将位图缩放显示 (11)改变对话框中控件的颜色 (12)修改窗口外观 (14)获得应用程序主窗口的指针 (15)确定应用程序的路径 (15)获得其他程序的图标 (15)获得各种目录信息 (16)如何自定义消息 (16)改变窗口的缺省风格 (16)将窗口居中显示 (17)一启动就最大化和最小化 (17)限制窗口的大小 (17)创建一个字回绕的CEditView (18)程序保持极小状态 (18)移动窗口 (18)重置窗口的大小 (18)单击窗口标题栏以外区域使窗口移动 (19)改变视窗的背景颜色 (20)防止主框窗口在其说明中显示活动的文档名 (20)获取有关窗口正在处理的当前消息的信息 (21)代码中获取工具条和状态条的指针 (21)使能和禁止工具条的工具提示 (21)如何创建一个不规则形状的窗口 (22)获取应用程序的实例句柄 (24)如何编程结束应用程序 (24)创建和使用无模式对话框 (25)怎样加载其他的应用程序 (26)使窗口始终在最前方 (27)在对话框中显示一个位图 (27)获取一个对话控件的指针 (27)改变控件的字体 (28)OLE控件中使用OLE_COLOR数据类型 (28)在不使用通用文件打开对话的情况下如何显示一个文件列表 (29)旋转按钮控件 (29)用位图显示下压按钮 (29)创建三态下压按钮 (30)如何动态创建控件 (30)限制编辑框中的准许字符 (30)向列表框中添加多个项时防止闪烁 (32)向编辑控件中添加文本 (32)访问预定义的GDI对象 (32)获取GDI对象的属性信息 (33)实现一个橡皮区矩形 (34)更新翻转背景颜色的文本 (36)创建一个具有特定点大小的字体 (36)如何计算一个串的大小 (37)显示旋转文本 (37)显示包含标签字符的串 (39)串太长时如何在其末尾显示一个省略号 (39)为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 (39)在用户环境中如何确定系统显示元素的颜色 (40)查询和设置系统参数 (40)确定当前屏幕分辨率 (41)使用预定义Windows光标 (41)检索原先的Task Manager应用程序使用的任务列表 (41)确定Windows和Windows系统目录 (42)在哪儿创建临文件 (43)我怎样才能建立一个等待光标 (44)访问桌面窗口 (44)怎样用COLORREF (44)在应用程序中循环浏览已经打开的文档、视图 (45)MFC在窗口标题栏 (45)CD-ROM打开:mciSendString("Set cdAudio door open wait",NULL,0,NULL);关闭:mciSendString("Set cdAudio door closed wait",NULL,0,NULL);关闭计算机OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);GetVersionEx(&OsVersionInfo); //获取操作系统版本信息if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS){//Windows98,调用ExitWindowsEx()函数重新启动计算机DWORD dwReserved;ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、//关机、关闭电源等操作// 退出前的一些处理程序}重启计算机typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针if(hInst != NULL){//获得函数的地址并调用之ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);(*ShutDownDialog)(0);}枚举所有字体LOGFONT lf;lf.lfCharSet = DEFAULT_CHARSET; // Initialize the LOGFONT structurestrcpy(lf.lfFaceName,"");CClientDC dc (this);// Enumerate the font families::EnumFontFamiliesEx((HDC)dc,&lf,(FONTENUMPROC) EnumFontFamProc,(LPARAM) this,0);//枚举函数int CALLBACK EnumFontFamProc(LPENUMLOGFONT lpelf,LPNEWTEXTMETRIC lpntm,DWORD nFontType,long lparam){// Create a pointer to the dialog windowCDay7Dlg* pWnd = (CDay7Dlg*) lparam;// add the font name to the list boxpWnd ->m_ctlFontList.AddString(lpelf ->elfLogFont.lfFaceName);// Return 1 to continue font enumerationreturn 1;}其中m_ctlFontList是一个列表控件变量只运行一个程序实例if( FindWindow(NULL,"程序标题")) exit(0);或CreateMutx:HANDLE m_hMutex = ::CreateMutex(NULL,true,_T("MBD"));if(GetLastError() == ERROR_ALREADY_EXISTS){ReleaseMutex(m_hMutex);::MessageBox(NULL,_T("应用程序已经运行!"),_T("系统提示"),MB_OK|MB_ICONSTOP);return FALSE;}也可以用CreateThread,方法同CreateMutex得到鼠标位置CPoint pt;GetCursorPos(&pt); //得到位置显示和隐藏程序菜单CWnd *pWnd=AfxGetMainWnd();if(b_m) //隐藏菜单{pWnd->SetMenu(NULL);pWnd->DrawMenuBar();b_m=false;}else{CMenu menu;menu.LoadMenu(IDR_MAINFRAME); ////显示菜单也可改变菜单项pWnd->SetMenu(&menu);pWnd->DrawMenuBar();b_m=true;menu.Detach();}获取可执行文件的图标HICON hIcon=::ExtractIcon(AfxGetInstanceHandle(),_T("NotePad.exe"),0); if (hIcon &&hIcon!=(HICON)-1){pDC->DrawIcon(10,10,hIcon);}DestroyIcon(hIcon);窗口自动靠边程序演示BOOL AdjustPos(CRect* lpRect){//自动靠边int iSX=GetSystemMetrics(SM_CXFULLSCREEN);int iSY=GetSystemMetrics(SM_CYFULLSCREEN);RECT rWorkArea;BOOL bResult = SystemParametersInfo(SPI_GETWORKAREA, sizeof(RECT), &rWorkAre a, 0);CRect rcWA;if(!bResult){//如果调用不成功就利用GetSystemMetrics获取屏幕面积rcWA=CRect(0,0,iSX,iSY);}elsercWA=rWorkArea;int iX=lpRect->left;int iY=lpRect->top;if(iX < rcWA.left + DETASTEP && iX!=rcWA.left){//调整左//pWnd->SetWindowPos(NULL,rcWA.left,iY,0,0,SWP_NOSIZE);lpRect->OffsetRect(rcWA.left-iX,0);AdjustPos(lpRect);return TRUE;}if(iY < rcWA.top + DETASTEP && iY!=rcWA.top){//调整上//pWnd->SetWindowPos(NULL ,iX,rcWA.top,0,0,SWP_NOSIZE);lpRect->OffsetRect(0,rcWA.top-iY);AdjustPos(lpRect);return TRUE;}if(iX + lpRect->Width() > rcWA.right - DETASTEP && iX !=rcWA.right-lpRect->W idth()){//调整右//pWnd->SetWindowPos(NULL ,rcWA.right-rcW.Width(),iY,0,0,SWP_NOSIZE);lpRect->OffsetRect(rcWA.right-lpRect->right,0);AdjustPos(lpRect);return TRUE;}if(iY + lpRect->Height() > rcWA.bottom - DETASTEP && iY !=rcWA.bottom-lpRect->Height()){//调整下//pWnd->SetWindowPos(NULL ,iX,rcWA.bottom-rcW.Height(),0,0,SWP_NOSIZE);lpRect->OffsetRect(0,rcWA.bottom-lpRect->bottom);return TRUE;}return FALSE;}//然后在ONMOVEING事件中使用所下过程调用CRect r=*pRect;AdjustPos(&r);*pRect=(RECT)r;系统菜单添加菜单项给系统菜单添加一个菜单项需要进行下述三个步骤:首先,使用Resource Symbols对话(在View菜单中选择Resource Symbols...可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000;其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd:: Appendmenu将菜单项添加到菜单中。
VC程序调试.

VC程序调试VC程序调试调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。
不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。
一、VC程序调试方法 VC的调试功能:首先,再次强调要用Go命令运行一个将要调试的程序;如果要中止调试状态下的运行程序可以点击Stop Debugging命令,还可以通过Break选项以可恢复方式中断调试程序的运行流程(用Restart选项可以重新开始运行程序);Step Into选项表示每次只执行一行语句(单步执行),但如果当前代码是调用一个函数,那么Step Into表示进入该函数,全部函数语句执行完后返回,而Step Over则是跳出这个函数;Step To Cursor 选项表示程序将执行到光标所在的可执行语句行上;在调试多线程程序时,可以在线程函数或主应用程序线程中设置断点,还可以用Break选项结束线程后用Threads选项查看运行线程列表,也可以选择悬挂和恢复每个线程;在设置断点后,在VC "查看"菜单的"调试窗口"中可以查看变量、内存、调用堆栈、寄存器以及反汇编语句。
在程序中设置断点的方法是,点击要设置的代码行并点击设置代码的工具栏按钮,会出现在代码行最左边的一个小黑点即是断点标志,这时再选Go 程序会在执行到端点处停下来,如果要继续执行可以再选Go。
通过选择VC"工具"菜单下的"源浏览器"可以生成一个.BSC文件,使用浏览器可以从中发现多种信息:程序中任何一个变量、函数、类或宏在何处定义及引用;可以列出所有声明的函数类、变量、宏;可以发现调用一个指定函数的所有函数;可以找到一个指定类的派生来源或者它派生出哪些类。
在使用微软程序开发库MSDN时,我们会发现其中的VC示例经常采用看似多余的ASSERT语句,其作用就是使程序具有"维护"性。
VC操作Excel的方法

VC操作Excel的方法(2007-01-05 21:18:45)分类:VC,VB,Matlab编程开发A: 从classwizard中add class处from type library,去office的安装目录下引入excel.exe(这是office 2003的选择,其他版本都是用olb文件),服务器就算引入了,这时会弹出对话框,要求加入一些类,这些类都是一些接口,里面有大量的方法,类的对象表征着excel文件的一个个部分,常用的有这几个_application,workbooks,_workbook,worksheets,_worksheet,Range,它们分别代表不同的意义._application代表了EXCEL服务器,workbooks表示整个Excel服务器(表现为一个.xls文件)里所有的表,(可以通过"新建"得到多个表,即MDI程序里的一个视窗一样,所有的视窗就是workbooks), _workbook就是一个表,相当于MDI中的一个视窗, worksheets表示所有的表单,每个表都可能有很多表单(建立一个Excel文件之后,打开,可以看到有sheet1,sheet2等,所有这些sheetn就组成了worksheets), _worksheet就表示一个表单, range表示元素的集合. 搞清楚上面这几个名词的意思非常重要.B,在dlg.h中声明下面几个变量:_Application exlapp; //组件服务器的各个classes_Workbook wbk;Workbooks wbks;_Worksheet wht;Worksheets whts;LPDISPATCH lpDisp;并在app.cpp的InitInstance方法中加入下面两句AfxInitOle(); AfxEnableControlContainer(); C,这里我没有像上面一样完全用程序来生成一个Excel文件,而是在开始时就在当前目录下生成了一个Excel文件,在对话框上我设置了两个按钮,下面是"显示"按钮的代码://创建Excel服务器if(!exlapp.CreateDispatch("Excel.Application")){AfxMessageBox("无法启动Excel服务器!");return;}COleVariant avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR);exlapp.SetVisible(TRUE);//使Excel可见exlapp.SetUserControl(TRUE);//允许其它用户控制Excel,否则Excel将一闪即逝.//Open an excel filechar path[MAX_PATH];GetCurrentDirectory(MAX_PA TH,path);CString strPath = path;strPath += "\\VCOpExcel";wbks.AttachDispatch(exlapp.GetWorkbooks());lpDisp=wbks.Open(strPath,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar);wbks.ReleaseDispatch();exlapp.ReleaseDispatch();D,与上面第一种方法一样,可以插入记录:UpdateData(); //读入数据if (""==m_name) //判断名字输入有效{MessageBox("Please input a right name");return;}if (0>=m_age||100<=m_age) //判断年龄输入有效{MessageBox("Please input a right age");return;}char *p=strupr(_strdup(m_gener));if (strcmp(p,"FEMALE")&&strcmp(p,"MALE")) //判断性别输入有效 {MessageBox("Please input a right gener");return;}Range range;Range usedRange;COleVariant avar((long)DISP_E_PARAMNOTFOUND,VT_ERROR);if(!exlapp.CreateDispatch("Excel.Application")) //启动服务器{AfxMessageBox("无法启动Excel服务器!");return;}char path[MAX_PATH];GetCurrentDirectory(MAX_PA TH,path);CString strPath = path;strPath += "\\VCOpExcel";wbks.AttachDispatch(exlapp.GetWorkbooks());lpDisp=wbks.Open(strPath, //初始化.avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar,avar); wbk.AttachDispatch(lpDisp);whts.AttachDispatch(wbk.GetWorksheets());lpDisp=wbk.GetActiveSheet();wht.AttachDispatch(lpDisp);usedRange.AttachDispatch(wht.GetUsedRange());range.AttachDispatch(usedRange.GetRows());long iRowNum=range.GetCount();//已经使用的行数range.AttachDispatch(wht.GetCells());range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(1)),COleVariant(m_name)); range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(2)),COleVariant(m_age));range.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(3)),COleVariant(m_gener));wbk.Save();wbk.Close(avar,COleVariant(strPath),avar);wbks.Close();exlapp.Quit();(完)分享到新浪微博阅读(802)|评论(2)|收藏(0)|打印|举报前一篇:结婚流程(转)后一篇:vc excel 操作补充评论重要提示:警惕虚假中奖信息,点击查看详情免费任选1000款游戏新手卡[发评论]你好:2007-01-11 12:30:31我参考你的文章做了一下关于excel的操作但是执行if(!ExcelApp.CreateDispatch("Excel.Application",NULL)){AfxmessageBox("创建Excel服务失败");exit(1);}总是失败。
VC中调用外部程序方式总结

目前知道三种方式:WinExec,ShellExecute ,CreateProcess,别人已经总结的很好了《vc中调用其他应用程序的方法(函数)winexec,shellexecute ,createprocess》,我全文转载一下,另外后面加点自己的总结(黑体部分,除了标题)。
三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。
WinExec 两个参数,前一个指定路径,后一个指定显示方式。
ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。
CreateProcess 一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。
如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。
三个SDK函数(WinExec、ShellExec、CrateProcess )的语法:(一)WinExec这个函数最简单,只有两个参数,原型如下:UINT WinExec(LPCSTR lpCmdLine, // 命令路径UINT uCmdShow // 显示方式);使用方法如下:WinExec("Notepad.exe", SW_SHOW); // 打开记事本WinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe需要注意的是若用SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如Neterm,Calc 等等,就不会出现正常的窗体,但是已经被加到任务列表里了。
VC++运行C程序的基本方法

附录A C程序的基本开发过程C语言程序开发涉及到四个过程:编辑、编译、连接、装载并运行。
这些单词所表达的意义我们可以慢慢体会,下面首要的是学会依葫芦画瓢,学会按照下面的方法在VC++环境下建立一个工程、编辑源文件、编译、调试、装载并运行程序。
在Windows操作系统下,VC++环境的基本使用方法如下,详细的调试方法可参阅相关资料,或者参阅微软MSDN帮助文件。
A.1 安装程序VC++环境的安装请参阅相关的安装程序说明。
双击setup文件,然后根据提示,一路next就可以了。
A.2 新建一个工程、新建一个源文件、添加源文件到工程1.首先请在F盘(或其他盘)上建立文件夹TEST,以便将待建的C程序工程文件project 等相关文件放置在该文件夹中。
2.新建一个工程project首先鼠标左键单击“文件”菜单,选择“新建”单击鼠标左键,系统将弹出一个窗口,单击“工程”选项,将得到图A.1所示窗口。
请在“位置”栏填入刚才所建的目录F:\TEST (可以是自己设定的其他目录),并在“工程名称”栏填入project(可以是自己命名的其他工程名),然后鼠标左键单击左边窗口倒数第三项“Win32 Console Application”,使该项变蓝,然后鼠标左键单击“确定”按钮。
得到图A.2所示窗口,选择“一个空工程”,单击“完成”得到图A.3。
再单击“确定”得到图A.4所示的窗口,鼠标左键单击右下角的“FileView”字样,再单击project files左边的“+”号,在其下面的工作空间将出现三个文件夹:“Source Files”、“Header Files”、“Resource Files”,如图A.5所示(此时尚无浮动菜单)。
图A.1图A.2 图A.3图A.4图A.53.新建一个源文件hello.c要新建一个C程序源文件可以选择“文件”菜单的“新建”选项,在弹出的窗口中选择“文件”选项单击,得到如图A.6所示的窗口,其“位置”栏中的内容是默认的,在“添加到工程”前打勾,“工程名”project也是默认的,但“文件名”一栏中的内容需要自己填写,且必须是以.c为后缀,比如图中的 hello.c(注:该栏的内容一定要以.c为后缀,否则系统会默认为.cpp,这样编译时就会调用C++的编译器,而我们需要调用C语言的编译器)。
如何在VC++6.0中创建、编译、链接、运行一个C程序

如何在VC++6.0中创建、编译、链接、运行一个C程序2010-12-04 17:26:21| 分类:VC编程| 标签:如图对话框弹出编译单击|字号大中小订阅(1)启动VC++6.0 (如图1)图1(2)创建一个C程序:①单击“File”——单击“New”,会弹出一个窗口(如图2),--选win32 console application --填写工程名并选择放置工程的位置-------确定------在弹出的窗口中选“一个空工程”(an empty project)-----确定。
图2②选择“Files”选项卡,再选中“C++ Sourse File”(如图3)图3③在“Location”栏目中设置存放位置。
方式一:直接输入存放路径,如d:yongsailigaofeng;方式二:单击右侧省略号按钮“”,弹出“Choose Directory”对话框(如图4)进行设置,设置完后单击“OK”即可。
图4④在如图3的对话框中,在“File”栏目中输入文件名*.c(如以1.c为例,注:此时一定要带上.c,否则扩展名就变成了.cpp)。
④设置完后单击“OK”即可。
⑤编辑一个C程序内容后保存(如图5),此时就完成了一个C文件的创建。
图5(3)编译:单击编译按钮“” (或者Ctrl+F7),会弹出如图6的对话框,图6此时选择“是(Y)”创建一个默认project workspace。
编译成功后,会生成1.obj目标文件,出现如图7的提示:图7(4)链接:单击链接按钮“” (或者F7),会弹出如图8的对话框,链接成功后,会生成1.exe的可执行文件,出现如图8的提示:图8(5)运行:单击运行按钮“” (或者Ctrl+F5),会弹出如图9的对话框,图9(6)关闭工作区:①按任意键返回;②单击“File”——单击“Close Workspace”(如图10)。
图10(结束)评论这张转发至微博转发至微博0人 | 分享到:阅读(1070)| 评论(1)| 引用(0) |举报用VC编译C程序学习编程应该学习的语言历史上的今天∙[转]23岁以后的你,一定要看看哦2008-12-04 18:54:15相关文章∙鼠标单击操作教案2009-11-26 09:11:10∙解析Win XP的“单击锁定”功能2007-06-10 15:15:18∙360单击游戏中心诺顿2010简体中文版2010-08-25 22:56:03。
vc2010的使用方法

vc2010的使用方法VC2010是微软公司推出的一款集成开发环境(Integrated Development Environment, IDE),用于开发基于Windows操作系统的应用程序。
本文将介绍VC2010的使用方法,帮助读者快速上手并熟练运用该开发环境。
一、VC2010的安装和配置1. 下载VC2010安装包,双击运行安装程序。
按照提示选择安装目录和组件,建议选择完整安装以获得更多的功能和工具。
2. 安装完成后,打开VC2010。
首次打开时,会弹出一个“开始页面”,其中包含了最近打开的项目、新建项目的模板等信息。
可以根据需要选择打开项目或新建项目。
3. 配置编译器和调试器:点击菜单栏上的“工具”-“选项”,在弹出的对话框中选择“项目和解决方案”-“VC++目录”,可以配置编译器和调试器所需的文件和路径。
二、新建项目1. 在VC2010中,可以通过菜单栏上的“文件”-“新建”-“项目”来创建一个新项目。
在弹出的对话框中,可以选择项目类型和模板。
2. 选择项目类型:根据具体需求选择相应的项目类型,比如Windows桌面应用程序、控制台应用程序、动态链接库等。
3. 选择模板:根据项目类型选择所需的模板。
模板包括空项目、基于DLL的MFC应用程序、Win32控制台应用程序等。
4. 指定项目名称和保存路径,并点击“确定”按钮。
VC2010将自动生成一个项目文件夹,并在其中创建项目文件和相应的代码文件。
三、编辑和编译代码1. 打开项目后,可以在“解决方案资源管理器”中看到项目的文件结构。
在源文件中,可以编写代码。
2. VC2010支持多种编程语言,比如C++、C#等。
根据项目需求,选择相应的编程语言进行开发。
3. 在编辑器中编写代码,可以使用智能感知和自动补全等功能,提高编码效率。
同时,VC2010还提供了丰富的调试工具,可以帮助开发者快速定位和解决问题。
4. 编写完成后,点击菜单栏上的“生成”-“生成解决方案”来编译项目。
vc使用方法

vc使用方法VC 使用方法。
VC 是一款功能强大的集成开发环境,可以帮助开发者进行C/C++ 程序的开发。
本文将介绍 VC 的基本使用方法,帮助初学者快速上手。
1. 安装 VC。
首先,你需要从官方网站下载 VC 的安装包,并按照提示进行安装。
安装完成后,打开 VC,你将看到一个简洁的界面,包括菜单栏、工具栏、编辑区和输出区。
2. 创建新项目。
在 VC 中,你可以创建新项目来进行开发。
点击菜单栏中的“文件”选项,选择“新建”,然后选择“项目”。
在弹出的对话框中,选择项目类型(如控制台应用程序、Windows 桌面应用程序等),填写项目名称,点击“确定”即可创建新项目。
3. 编写代码。
在创建新项目后,你可以在编辑区编写代码。
VC 提供了丰富的代码编辑功能,包括代码高亮、自动补全、代码折叠等,可以大大提高编码效率。
4. 调试程序。
在编写完代码后,你可以点击工具栏中的“调试”按钮来进行程序调试。
VC 提供了强大的调试功能,可以帮助你快速定位和解决程序中的 bug。
5. 构建和运行程序。
当程序编写完成并通过调试后,你可以点击工具栏中的“生成”按钮来构建程序。
构建完成后,你可以点击“运行”按钮来运行程序,查看程序的运行效果。
6. 其他功能。
除了上述基本功能外,VC 还提供了许多其他功能,如版本控制、性能分析、代码重构等,可以帮助你更好地进行程序开发和维护。
总结。
通过本文的介绍,相信你已经对 VC 的基本使用方法有了一定的了解。
当然,VC 还有很多其他功能和技巧等待你去探索和学习。
希望本文能够帮助你快速上手 VC,并顺利进行 C/C++ 程序的开发工作。
祝你编程愉快!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC程序中运行其他程序的三种方法(转)
2009-02-05 12:02
有三个函数可以使用: WinExec, ShellExecute,CreateProcess 1.WinExec(String lpCmdLine,Long nCmdShow);
参数说明:
参数类型及说明
lpCmdLine String,包含要执行的命令行
nCmdShow Long,为窗口指定可视性方面的一个命令。
请用下述任何一个常数SW_HIDE 隐藏窗口,活动状态给令一个窗口
SW_MINIMIZE
最小化窗口,活动状态给令一个窗
口
SW_RESTORE
用原来的大小和位置显示一个窗
口,同时令其进入活动状态
SW_SHOW
用当前的大小和位置显示一个窗
口,同时令其进入活动状态
SW_SHOWMAXIMIZED 最大化窗口,并将其激活
SW_SHOWMINIMIZED 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE
最小化一个窗口,同时不改变活动
窗口
SW_SHOWNA
用当前的大小和位置显示一个窗
口,不改变活动窗口
SW_SHOWNOACTIV A TE
用最近的大小和位置显示一个窗
口,同时不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同
例: WinExec("c:\\a.txt",SW_SHOW);
2.ShellExecute
参数类型及说明
hwnd Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框
lpOperation String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它lpFile String,想用关联程序打印或打开一个程序名或文件名
lpParameters String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数
lpDirectory String,想使用的完整路径
nShowCmd Long,定义了如何显示启动程序的常数值。
参考上表.
例:ShellExecute(Handle, ''open'', PChar(''c:\test\readme.txt''), nil, nil, SW_SHOW);
3.CreateProcess
参数类型及说明
lpApplicationName String,要执行的应用程序的名字。
可设为vbNullString;在这种情况下,应用程序的名字应在lpCommandLine参数的起始处出现
lpCommandLine String,要执行的命令行。
可用GetCommandLine函数取得一个进程使用的命令行。
Windows会尽可能地根据下述搜索顺序来查找执行文件:
(1)包含了父进程执行文件的目录
(2)父进程当前的目录
(3)由GetSystemDirectory返回的系统目录
(4)仅适于windows NT:16位系统目录
(5)由GetWindowDirectory返回的Windows目录
(6)由PATH环境变量指定的目录
lpProcessAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_A TTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值)——表示采用不允许继承的默认描述符。
该参数定义了进程的安全特性
lpThreadAttributes SECURITY_ATTRIBUTES,指定一个SECURITY_A TTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值)——表示采用不允许继承的默认描述符。
该参数定义了进程之主线程的安全特性
bInheritHandles Long,TRUE表示允许当前进程中的所有句柄都由新建的子进程继承
dwCreationFlags Long,来自API32.TXT文件的一个或多个下述常数之一,它们都带有前缀CREATE_。
下面这些用于VB程序员:
CREATE_SEPARATE_WOW_VD
M(仅适用于NT)
启动一个16位的Windows应用程
序时,强迫它在自己的内存空间运
行
CREATE_SHARED_WOW_VD
M(仅适用于NT)
启动一个16位的Windows应用程
序时,强迫它在共享的16位虚拟机
(VM)内运行
CREATE_SUSPENDED
立即挂起新进程。
除非调用了
ResumeThread函数函数,否则它
不会恢复运行
也可能是下述常数之一,用于指定优先级
IDLE_PRIORITY_CLASS
新进程应该有非常低的优先级
——只有在系统空闲的时候才能
运行。
基本值是4
HIGH_PRIORITY_CLASS
新进程有非常高的优先级,它优先
于大多数应用程序。
基本值是13。
注意尽量避免采用这个优先级NORMAL_PRIORITY_CLASS 标准优先级。
如进程位于前台,则
基本值是9;如在后台,则优先值
是7
不要在VB中使用REALTIME_PRIORITY_CLASS
lpEnvironment Any,指向一个环境块的指针(环境缓冲区的头一个字符,或者环境块的地址)
lpCurrentDriectory String,新进程的当前目录路径。
调用函数的时候,可用vbNullString 指定当前目录
lpStartupInfo STARTUPINFO,指定一个STARTUPINFO结构,其中包含了创建进程时使用的附加信息
lpProcessInformation。