C/C++/MFC
sysprogram
这个作者很懒,什么都没留下…
展开
-
ofstream写文件
#include #include using namespace std ;void main (){ char * p= "SysProgram" ; ofstream tfile ("C:原创 2010-03-30 10:52:00 · 979 阅读 · 0 评论 -
API函数读写文件
//写文件#include #include void main(int argc, char *argv[]){ HANDLE hFile; char szBuffer[256原创 2010-03-30 11:48:00 · 1141 阅读 · 0 评论 -
激活VS2008
添加删除程序 ---- 升级VS2008 输入以下一个就激活成正式版了VS2008简体中文正式版序列号1.Visual Studio 2008 Professional Edition: XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT 本人用这个成功注册! 2.Visual Studio 2008 Team Tes原创 2010-04-19 12:04:00 · 925 阅读 · 0 评论 -
GetOpenFileName的简单使用实例
OPENFILENAME ofn;char filename[MAX_PATH]={0};//一定要清零,否则它会返回NULLRtlZeroMemory(&ofn,sizeof(ofn));ofn.lStructSize=sizeof(ofn);ofn.hwndOwner原创 2010-04-27 15:46:00 · 2216 阅读 · 0 评论 -
mfc 中获得本身程序句柄的代码
首先是利用MFC的一个全局函数AfxgetApp(),来得到程序自身的一个指针解析如下:CWinApp* AfxGetApp();返回值:指向应用程序的单一CWinApp对象的指针然后用到的CWinApp类中的一个属性(继承自CWinThread类):CWinThread::m_pMainWnd说明:使用这个数据成员来保存你的线程的主窗口对象的指针。原创 2010-05-02 21:18:00 · 1322 阅读 · 0 评论 -
#if语句
#if #else #endif 的作用是控制编译的代码如:#if 1 代码A#else 代码B#endif 则程序编译的时候就只编译代码A如果#if 0 代码A#else 代码B#endif 则程序编译的时候就只编译代码B其中代码A和代码B可以是函数也可以是几句代码。所以#if #else原创 2010-05-06 23:14:00 · 999 阅读 · 0 评论 -
VC编写托盘程序
一、什么是托盘: 所谓托盘就是指Windows操作系统右下角有系统时间和应用程序图标的那一块区域。在应用程序最小化得时候,如果不希望程序占据任务栏,则可将程序放入托盘区。二、如何编写托盘程序:首先,我们先来看一个API函数,如下:BOOL Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA lpdata);参数dwMessage说明要执行的动作,可选如下值:NIM_ADD :增加一个图标到托盘区 NIM_DELETE :从托盘区删除一个图标 NIM_转载 2010-07-23 16:02:00 · 1525 阅读 · 0 评论 -
如何在MFC线程中使用控件的成员变量和函数
<br />比如说,在ListBox里我添加了一个CString类型的成员变量m_str,我想用m_str.GetCount或m_str.GetText之类的方法,但这些在线程中就不能用了。<br /> <br />使用控件的成员变量和函数要用控件的对象或指针!应该定义一个CListBox类型的变量;<br />创建线程时要传递CXXXDlg 的指针过去就能调用CXXXDlg中定义的变量、控件了。<br />举例如下:<br /> <br />CWinThread * mThread = NULL; <br转载 2010-07-23 16:05:00 · 6977 阅读 · 3 评论 -
变长数组
使用new分配变长数组#include <iostream.h> <br />voidmain() <br />{<br /> int len; <br /> cout<<"请输入数组的长度: "; <br /> cin>>len; <br /><br /> int *array=new int[len];<br /> cout<<"数组的长度是"<<len<<endl; <br /> //................ <br /> delete[]array; <br />原创 2010-07-31 15:34:00 · 1096 阅读 · 0 评论 -
vector动态数组
<br />vector是C++中的一种数据结构,确切的说是一个类,它相当于一个动态的数组,当程序员无法知道自己需要的数组长度多大时,使用vector可以达到最大节约空间的目的,也就是实现动态分配数组。<br /> <br />举例如下:<br /> <br />#include <iostream><br />#include <vector><br />usingnamespacestd;<br /><br />voidmain()<br />{<br /> vector<int>array;原创 2010-07-31 17:04:00 · 5688 阅读 · 1 评论 -
SDK的下载与安装
Platform SDK XPSP2:http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htmPlatform SDK February 2003:http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htmClick the links on the right. The File Download dialog box is原创 2010-06-10 12:33:00 · 1418 阅读 · 0 评论 -
十六进制读文件
<br />charch;<br />FILE*fp;<br />CStringstrTemp,strRead;<br /><br />if ((fp=fopen("c://1.exe","rb")) ==NULL)<br />{<br /> return;<br />}<br /><br />while (!feof(fp))<br />{<br /> ch=fgetc(fp);<br /> strTemp.Format("%02X ",(unsignedchar)ch);<br /> s转载 2010-08-11 19:02:00 · 832 阅读 · 0 评论 -
字符数据类型转换代码
《字符数据类型转换代码(全部调试通过)》作者:Coderui 书于:2007-6-12------------------------------------------------------------------------<br />int nSize;<br />char* bufw;<br />CString str = "Coderui";nSize = str.GetLeng转载 2010-08-11 19:13:00 · 892 阅读 · 0 评论 -
创建多级文件夹
#include <windows.h><br />#include <Shlobj.h><br /><br />voidmain()<br />{<br /> SHCreateDirectoryExA(NULL,"d://testfolder//test",NULL);<br />}<br />原创 2010-06-21 23:09:00 · 868 阅读 · 0 评论 -
转义字符 /r与/n的区别
<br />/r它并没有换行,是从本行开头开始输出<br />/n它换行了,是下一行开头处开始输出<br /> <br />看看这符语句就知道了,输入结果将a给覆盖了,只剩下b,因为/r是从本行开头处开始输出。<br />printf("a/rb");<br />而如果使用/n的话就不会覆盖了,比如下面这条语句。<br />printf("a/nb");原创 2010-06-22 11:14:00 · 2823 阅读 · 1 评论 -
MFC使用CCommandLineInfo处理命令行
<br />目标<br />让应用程序处理这里所见的命令行标志。<br />>XXX.exe /c /d<br />策略<br />一个MFC应用程序可以用CCommandLineInfo类的成员函数ParseParam()处理一些标准标<br />志。要添加我们自己的标志,而仍然能够支持另外一些标志,我们将从CCommandLineInfo派<br />生类,然后重载ParseParam()。<br />步骤<br />1.创建一个新的CCommandLineInfo类<br />1)用ClassWiza原创 2010-08-18 16:59:00 · 1848 阅读 · 0 评论 -
mfc对话框隐藏
有很多应用程序要求一起动就隐藏起来,这些程序多作为后台程序运行,希望不影响其他窗口,往往只在托盘区显示一个图标。这些程序通常都是对话框程序,而对话框在初始化的过程上与SDI、MDI的初始化是不同的,对话框只需要DoModule或者是CreateDialog等等对话框函数调用一次便可,SDI、MDI则要好几步才行。这样看来,对话框在使用方法上面是隐藏了不少细节的,其中就没有SDI、MDI所要求的ShowWindow(nCmdShow)这一步。因此对话框要想一运行就隐藏,并不是很直接的。有一些方法可以做到这一点原创 2010-08-18 17:12:00 · 2415 阅读 · 0 评论 -
VC控制台输出时设置字体及背景颜色
<br />1.改变整个控制台的颜色<br />用 system("color 0A"); <br />其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下: <br />0=黑色 <br />1=蓝色 <br />2=绿色 <br />3=湖蓝色 <br />4=红色 <br />5=紫色 <br />6=黄色 <br />7=白色 <br />8=灰色 <br />9=淡蓝色 <br />A=淡绿色 <br />B=淡浅绿色 <br />C=淡红色 <br />D=淡紫色 <br />E=原创 2010-08-18 17:09:00 · 3445 阅读 · 0 评论 -
MFC命令行及CCommandLineInfo类
<br />获取命令行的方法:<br />1、GetCommandLine() 获取输入的所有信息,包括程序所在路径及参数<br />2、AfxGetApp()->m_lpCmdLine 只包含参数<br />一般情况下,获取到命令行后就可以针对命令行中的内容进行相应的处理了<br /> <br />CObject <br />└CCommandLineInfo <br />类CCommandLineInfo用于分析启动应用时的命令行参数。<br />MFC应用一般都会在它的应用对象中使用函数InitIns原创 2010-08-18 16:57:00 · 961 阅读 · 0 评论 -
WinMain中的Console与main中的Window
1.如何在WinMain中创建一个Console。调用AllocConsole分配一个Console资源;调用GetStdHandle获得OS的标准设备(输入,输出或错误),此函数返回一个句柄,若要使用标准C库函数,则需要根据获得的句柄转化为文件描述符;将此描述符与输出绑定就可以将它视为stdout/stdin/stderr了。#include <windows.h>#include <stdio.h>#include <io.h>#include <fcntl.h>int__stdcall WinMain原创 2010-08-18 17:02:00 · 1215 阅读 · 0 评论 -
VC++ ipaddress控件的使用
<br />void CMyDlg::OnIPAddress() <br />{<br />// 此段代码:独立的获取本机IP地址和计算机名<br />WORD wVersionRequested; <br />WSADATA wsaData; <br />char name[255]; <br />CString ip; <br />PHOSTENT hostinfo; <br />wVersionRequested = MAKEWORD(2, 0); <br /> <br />if (WSASta原创 2010-08-18 17:15:00 · 2812 阅读 · 0 评论 -
CIPAddressCtrl类的使用(IP地址与CString的互相转化)
<br />//将CString 型IP地址在IPAddressCtrl中显示 <br />CString strIP="192.168.0.10"; <br />DWORD dwIP; <br />dwIP = inet_addr(strIP); <br />unsigned char *pIP = (unsigned char*)&dwIP; <br />m_ipAddr.SetAddress(*pIP, *(pIP+1), *(pIP+2),原创 2010-08-18 17:24:00 · 1203 阅读 · 0 评论 -
MFC动态创建控件
<br /> <br />void CTestDlg::OnOK() <br />{<br /> // TODO: Add extra validation here<br /> <br /> CEdit* edit;<br /> edit = new CEdit;<br /> edit->Create( ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,<br /> CRect(10,10,120,30), this, 1);<br原创 2010-08-19 11:51:00 · 1025 阅读 · 0 评论 -
MFC 获取命令行参数
<br />在MFC程序中,可以用以下几种方法来获取命令行参数。<br />为方便说明,我们假设执行了命令:C:/test/app.exe -1 -2<br /><br />方法一<br />::GetCommandLine();<br />将获取到 "C:/test/app.exe" -1 -2 <br /> <br /> <br />方法二<br />for (int i=0;i<__argc;i++)<br />{<br />__argv[i];<br />将依次得到C:/test/app.exe原创 2010-08-18 16:54:00 · 825 阅读 · 0 评论 -
ifstream一行一行的读TXT文件
<br />#include <windows.h><br />#include <iostream.h><br />#include <fstream.h><br />void main()<br />{<br /><br /> ifstream ifile;<br /> char str1[256] ;<br /> ifile.open("sfile.txt");<br /> while(ifile)<br /> {<br /> ifile.getline(s原创 2010-09-09 17:07:00 · 8738 阅读 · 0 评论 -
Rundll32使用技巧
<br />rundll32.exe shell32.dll,SHFormatDrive原创 2010-08-30 22:01:00 · 991 阅读 · 0 评论 -
ListCtrl::DeleteColumn的一点小经验
<br />今天在写程序的时候,发现DeleteColumn有点小问题。<br />我想删除List的所有Column,于是用下面的语句。<br /> <br /> m_list_mailinfo.DeleteColumn(0);<br /> m_list_mailinfo.DeleteColumn(1);<br /> m_list_mailinfo.DeleteColumn(2);<br /> m_list_mailinfo.DeleteColumn(3);<br /> m_list_mailinfo.D原创 2010-09-07 18:08:00 · 4617 阅读 · 1 评论 -
如何修改vs2008代码字体
工具->选项->环境->字体和颜色。我比较喜欢VC6.0的那种经典风格字体。将字体选择system就和VC6.0字体一样了,呵呵。原创 2010-12-07 15:18:00 · 2133 阅读 · 0 评论 -
"error LNK2005: _DllMain@12 already defined"的解决办法
<br />用Visual C++编写DLL,如果在new project时选了MFC DLL,而后又想写成Regular DLL,即拥有自己的DllMain()入口函数,则在build时会遇到类似如下的link错误:<br /> error LNK2005: _DllMain@12 already defined in xxx.OBJ<br /> <br />这是因为_USRDLL和_AFXDLL发生冲突所致。<br /> <br />几种解决方案:<br />1, 你只需要在工程设置里面,把<br />原创 2010-10-21 16:15:00 · 1426 阅读 · 0 评论 -
VC控件 Progress Control
m_progress->GetPos(); //获取进度条的当前位置m_progress->GetRange(int min,int max); //获取进度条控件的范围的下限和上限 m_progress->OffsetPos(int nPos); //用指定的增量推进进度条控件的当前位置,重绘进度条反映新位置 m_progress->SetBkColor(COLORREF clrNew); //设定进度条的背景颜色 m_progress->SerPos(int nPos); //设定进度条控件的当前位置,原创 2010-12-20 09:19:00 · 4786 阅读 · 0 评论 -
VC控件 Tab Control
<br />1、添加上一个Tab Control 控件<br />为这个控件添加一个变量,如:m_tabctrl<br />2、创建两个新的对话框资源,其属性作如下修改:<br /> Border:none //边界为空,这样它就没了标题栏<br /> Style :Child // 这样这个模板就可以当作另一个窗口的子窗口了。<br /> 可在上面加一些控件,具体操作跟普通对话框没有区别。<br /> 完成后从这两个对话框模板生成两个新的对话框类。<br />3、在主对话框中为新添原创 2010-12-20 09:22:00 · 1148 阅读 · 2 评论 -
windows7不支持AllocateAndGetTcpExTableFromStack
<br />今天发现iphlpapi.dll 在windows7下已经放弃支持AllocateAndGetTcpExTableFromStack,AllocateAndGetUdpExTableFromStack<br />没用办法只能重新修改程序进行重新编译<br />只能改用 GetExtendedTcpTable 。<br />具体参考:<br />http://msdn.microsoft.com/en-us/library/aa365928(VS.85).aspx原创 2010-11-18 15:39:00 · 5983 阅读 · 1 评论 -
fatal error LNK1103: debugging information corrupt; recompile module
<br />今天在写一个SetWinEventHook的程序时,编译通过,link时,弹出了如下的错误:<br />Linking...<br />uuid.lib(oleidl_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module<br /> 囧,第一反应是google一下,看来遇到这个问题的还不少,仔细回想了下,原来前几天写minidump的时候,装了一个新的SDK(Microsoft Pla转载 2010-11-23 12:52:00 · 1195 阅读 · 0 评论 -
One or more breakpoints cannot be set and have been disabled
<br />今天在写程序的时候,下了一个断点,然后调试运行,弹出这个错误<br />One or more breakpoints cannot be set and have been disabled<br /> <br />弄了半天才搞定。我的程序是Release模式的,Debug模式被不小心删了,不知道怎么加回去。<br /> <br />在Release下:<br /> 将C/C++标签中的Category选择General,Optimizations选Disable (Debug),Debug原创 2011-03-16 12:20:00 · 2686 阅读 · 0 评论 -
获取PE文件的区段表
//清空列表控件 m_ListCtrlSection.DeleteAllItems(); IMAGE_DOS_HEADER DosHeader = {0}; IMAGE_FILE_HEADER FileHeader = {0}; HANDLE hFile = INVALID_HANDLE_VALUE; DWORD dwReadLen = 0; WORD NumOfSec = 0; //区段表个数 IMAGE_SECTION_HEADER *pSecHeader = NULL; //打开文件 hFil原创 2011-05-08 14:32:00 · 4062 阅读 · 1 评论 -
等待CreateProcess进程退出
STARTUPINFO si; //启动信息memset(&si, 0, sizeof(STARTUPINFO));si.cb = sizeof(STARTUPINFO);si.dwFlags = STARTF_USESHOWWINDOW;si.wShowWindow = SW_SHOW;PROCESS_INFORMATION pi; //进程信息if(!CreateProcess("c://windows//system32//notepad.exe",NULL,NULL,NULL,FALSE,0,NUL原创 2011-03-21 12:06:00 · 6856 阅读 · 0 评论 -
自定义回调函数
/*程序名称:自定义回调函数实例 作者:SysProgram 日期:2009年12月21日*/#include int Print(){ int a = 100; printf("print is %d/n",a); return 0;}int Add(int a,int b){ int sum; sum = a + b; printf("sum is %d/n",sum); return 0;}void callback_Print(int (*ptr)()){ (*ptr)();}void call原创 2011-03-22 16:33:00 · 943 阅读 · 0 评论 -
如何在VS2008中添加WM_INITDIALOG消息映射
<br />VS2008在消息列表中找不到WM_INITDIALOG。<br /> <br />点击此类,在属性中,“消息”图标的右边有个象菱形的图标,叫“重写”。点击它,有OnInitDialog,不是以消息的形式列出的。 <br /> <br />OK,搞定。原创 2011-05-12 10:42:00 · 3648 阅读 · 1 评论 -
DLL回调EXE里的函数
EXE call Dll里的函数,然后Dll里的函数callback EXE里的函数/*EXE代码 作者:SysProgram 日期:2011年3月23日*/void Msg(TCHAR *str){ MessageBox(0,str,"Caption",0);}void CTestDlgDlg::OnOK() { // TODO: Add extra validation here typedef void (*MY_FARPROC)(void (*MY_FARPROC)(TCHAR *str))原创 2011-03-23 13:42:00 · 1853 阅读 · 0 评论 -
反向Socket连接
<br />mark一下,以后的开发过程中可能会经常用到socket相关的东西,所以mark一下最基础的东西。<br /> <br />//服务端<br /> <br />#include <stdio.h><br />#include <windows.h><br />#pragma comment(lib,"ws2_32.lib")<br />void main()<br />{<br /> //初始化套接字版本<br /> WSAData wsaData;<br /> WSAStartup(MAKEW原创 2011-03-24 15:34:00 · 2355 阅读 · 0 评论