
VC
文章平均质量分 56
vinep
我思念的城市 已是黄昏 为何我总对你 一往情深 曾经给我快乐 也给我创伤 曾经给我希望 也给我绝望 我在遥远的城市 陌生的人群 感觉着你遥远的忧伤
展开
-
查看事件发生顺序的方法
可以在窗体的消息处理函数中:LRESULT CSkinWnd::WindowProc(UINT msg, WPARAM wp, LPARAM lp){ static int i; char buf[32]; sprintf(buf,"%d 0x%04x/n",i++,msg); OutputDebugString(buf); 。。。。。。}原创 2006-11-05 13:07:00 · 929 阅读 · 0 评论 -
VC++中进程间相互通信的十一种方法
进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方 另一个是地址空间,它包含所有的可执行模块或DLL模块的代码和数据。它还包含动态分配的空间。如线程堆栈和堆分配空间。每个进程被赋予它自己的虚拟地址空间,当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则是隐藏的转载 2006-11-05 13:18:00 · 688 阅读 · 0 评论 -
menu与toolbar
vc 中menu与toolbar是有关联的。如果把toolbar中button的ID号设置为和menu中某一项相同,那么在点击toolbar时,就会调用相应的菜单而menu菜单对应的项前也会显示toolbar中的图标。 如何导入其它图标到toolbar中。在项目目录下有一个res目录。toolbar中的图标会显示成一个位图。只要按对应的位置编辑这个位图,再保存即可。回到vc中会原创 2006-11-05 13:19:00 · 748 阅读 · 0 评论 -
定时器
定时器的原型是: WINUSERAPI UINT WINAPI SetTimer ( HWND hWnd , UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc); hWnd 是欲设置定时器的窗体句柄。定时时间到时,系统会向该窗体发送WM_TIMER消息。 nIDEvent 定时器标识符。在一个窗体内可以原创 2006-11-05 13:22:00 · 633 阅读 · 0 评论 -
多线程--同步(事件Event)
事件分为两类:人工重置, 自动重置人工重置时,所有等待线程都变为有信号状态。并且持续保持有信号状态,除非显式调用ResetEvent(g_hEvent);自动重置则不。所以人工重置不利于做线程同步。创建事件 g_hEvent = CreateEvent(NULL, false, false, NULL);param1:安全级别,设置为NULL, 取得默认值param2:人工重置(t原创 2006-11-05 13:23:00 · 2829 阅读 · 0 评论 -
绘图-图像绘制相关
OnCtlColor每个控件在绘制时,都会向父窗口(通常都是dialog)发送一个WM_CTLCOLOR消息,用来返回一个Cbrush句柄,用来绘制自己.HBRUSH CDlgDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlCol原创 2006-11-05 13:25:00 · 758 阅读 · 0 评论 -
绘图-根据Mouse状态画图
m_isUp 保存是否抬起鼠标m_startPoint 保存鼠标起点位置void CDlg_DCTest1::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); m_isUp = false;原创 2006-11-05 13:34:00 · 972 阅读 · 0 评论 -
多线程--多线程创建
//创建线程/*HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, 安全性,可以为 NULL使用缺省的安全性DWORD dwStackSize, 初始提交栈的大小,如果为0表示和调用线程一样的大小LPTHREAD_START_ROUTINE lpStartAddress, 线程函数地址,有固定格式LPVOID lpPara原创 2006-11-05 13:42:00 · 682 阅读 · 0 评论 -
vc环境--常用快捷键
ctrl+w Class Wizardalt+f8 格式化ctrl+L 剪切一行ctrl+shift+L 删除一行f12 函数定义shift+f12 函数声明ctrl+] 查找括号另一半ctrl+f2 加/去书签f2 下一书签shift+f2 上一书签f5 调试运行/运行到下一断点ct原创 2006-11-05 13:42:00 · 694 阅读 · 0 评论 -
控件使用--CImageList
m_imagelist.Create(16, 16, TRUE, 2, 2); //创建16*16的图标 m_imagelist.Add(AfxGetApp()->LoadIcon(IDR_DBTYPE)); //向imagelist中加入图标 m_imagelist原创 2006-11-05 13:44:00 · 1252 阅读 · 0 评论 -
sunxin-绘图
mfc中绘图要用设备上下文才可以完成。绘图基础1。apiHDC hdc = ::GetDC(m_hWnd);用api函数可以获得设备上下文句柄。m_hWnd是CWnd类对象的句柄。使用完后要调用ReleaseDC(m_hWnd, hdc)来释放。2。MFCCDCCDC *pdc = GetDC();CDC类封装了绘图相关的所有操作。在哪个CWnd子类中调用,就获得原创 2006-11-05 13:47:00 · 930 阅读 · 0 评论 -
多线程--同步(Critical Section临界区)
//临界区#i nclude #i nclude extern int tickets;//临界区对象CRITICAL_SECTION csMyCriticalSection;DWORD WINAPI thread_CS_Fun1Proc(LPVOID lpParameter){ while (true) { //进入临界区 EnterCriticalSection (&cs原创 2006-11-05 13:40:00 · 1803 阅读 · 0 评论 -
控件使用--CProgressCtrl
初始化Progress, 不是必须的BOOL CDlgProgress::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_progress.SetRange(0, 1000); m_progress.SetStep(2); return TRUE; // return TR原创 2006-11-05 13:45:00 · 4316 阅读 · 0 评论 -
控件使用--CSliderCtrl
//CSliderCtrl//当控件移动时,会向父窗体发送//ON_WM_HSCROLL(横向控件发送), ON_WM_VSCROLL(纵向控件发送) 消息BOOL CPic::OnInitDialog() { CDialog::OnInitDialog(); //m_slider 是绑定到控件的控件变量 m_slider.SetRange(0, 255); m_slider.SetPos(5原创 2006-11-05 13:46:00 · 2987 阅读 · 0 评论 -
网络常通讯、传输方法简介
常用的通讯方法有:1。socketSocket通讯相对来说是很古老的通讯方式,也是最常用的通讯方式。Socket通讯有阻塞和非阻塞两种方式。2。中间件例如BEA的tuxedo,他有9种通讯模式⑴.同步Request/Response模式;⑵.异步Request/Response模式;⑶.嵌套调用;⑷.调用转发;⑸.会话通信;⑹.主动消息通告;⑺.基于事件的通信;⑻.基于队列的通信;⑼.使用原创 2006-11-05 13:51:00 · 993 阅读 · 0 评论 -
vc6.0生成文件的种类和作用
类型说明DSW全称是Developer Studio Workspace,最高级别的配置文件,记录了整个 工作空间的配置信息,是一个纯文本的文件,在vc创建新项目的时候自动 生成DSP全称是Developer Studio Project,也是一个配置文件,不过记录的是一个项目的所有配置信息,纯文本文件OPT与DSW、DSP配原创 2008-02-13 11:27:00 · 1021 阅读 · 0 评论 -
在VC中使用正则表达式(boost库)
boost库regex的编译下载boost库后,在boost_1_34_0/boost_1_34_0/libs/regex/build目录, 这个目录下有makefile文件,对应vc6的有vc6.mak 先运行Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT 然后转到boost_1_34_0/boost_1_34_0/libs/regex/build原创 2008-06-11 19:07:00 · 848 阅读 · 1 评论 -
文件的合并与分割
文件的合并与分割其实比较简单,分割时将一个大文件按二进制方式读取,然后按二进制写成一个个小文件。合并时就把小文件顺次读取,再写入一个大文件。下面是一个简单的例子://文件分割, 二进制读取void CMyupdateDlg::OnBinary() { UINT nNewSize = 500000; //分成每个文件为512k UINT nPerSize = nNewSize/10; //每原创 2006-11-05 13:15:00 · 770 阅读 · 0 评论 -
vc中编写com组件供Asp使用时的注意问题
1。对象创建 Set cls = Server.CreateObject("Simplealt.first_alt") b = cls.funsum3(5) response.write "b: " & b%>以上是asp中调用的样式。在创建com对象时,要一个com对象创建时的工程名,一个接口名在vc中创建com时,工程名为:Simplealt 接口名:Ifirst_alt原创 2006-11-05 13:12:00 · 1399 阅读 · 0 评论 -
枚举进程,枚举窗口
枚举进程要用到下面几个函数1。HANDLE handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);得到一个processes and the heaps, modules, and threads 的快照,参数0表示从当前进程取得。2。PROCESSENTRY32 procinfo;procinfo.dwSize = si原创 2006-11-05 13:16:00 · 2422 阅读 · 0 评论 -
修改windows的登录界面
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/GinaDLL二进制 NoReboot.DLL在这个下面添加一个hook好像就可以。原创 2006-11-05 13:24:00 · 781 阅读 · 1 评论 -
sunxin-DC
m_hWnd从CWnd类继承的子类都具有一个m_hWnd变量, 保存了当前窗口对象的句柄原创 2006-11-05 13:35:00 · 515 阅读 · 0 评论 -
多线程--同步(概述)
线程同步的方法一般有以下几种,vc下实现方法有sdk, 和MFC封装类两种1临界区(Critical Section):通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2互斥量(Mutex):为协调共同对一个共享资源的单独访问而设计的。 3信号量(Semaphores):为控制一个具有有限数量用户资源而设计。 4事 件(Event):用来通知线程有一些事件已发生,从而原创 2006-11-05 13:40:00 · 5436 阅读 · 2 评论 -
多线程--同步(Mutex互斥量)
//创建互斥量/*HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, 安全性BOOL bInitialOwner, true:创建线程拥有互斥量,false: 相反LPCTSTR lpName ); 线程名字,如果为NULL表示匿名,否则为命名*///得到互斥量(也包括其它线程同步内核对象)/*DWORD WaitForS原创 2006-11-05 13:41:00 · 1708 阅读 · 0 评论 -
vc环境--VC项目文件说明
VC项目文件说明 .opt 工程关于开发环境的参数文件。如工具条位置等信息; .aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他; .clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建; .ds原创 2006-11-05 13:43:00 · 691 阅读 · 0 评论 -
vc数据库编程-mfc odbc
1.连接数据库CDatabase conn;conn.OpenEx(_T("DSN=bbodbc"));2.执行更新conn.ExecuteSQL(updateSQL);3.CRecordset初始化rst = new CRecordset(&conn); //指针或者下面的也可以rst.m_pDatabase = &conn; //针对非指针4.执行查询rst->Ope原创 2006-11-05 13:48:00 · 1264 阅读 · 0 评论 -
Windows SDK 程序编写过程
1.WinMain 函数为程序入口点2.WinMain中首先定义窗口类3.注册窗口类4.建立窗口5.显示窗口6.更新窗口7.消息循环 下面要定义消息处理函数,函数名在定义窗口类时已经说明。消息处理函数是一个switch语句,对需要处理的消息进行处理。在函数的结束,要有一个默认的处理,把不处理的消息交给windows自动处理。另外发现在处理WM_PAINT消息时,如果原创 2006-11-05 13:53:00 · 841 阅读 · 0 评论 -
进程间通讯-共享内存2(代码)
下面是创建共享内存的进程中的一段代码://共享内存 实现进程通讯void CMyupdateDlg::OnFilemapping() { HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 1000000, "DataMap"); if(!hFile) {原创 2006-11-05 13:13:00 · 1208 阅读 · 0 评论 -
进程间通讯-共享内存
先说一种比较类似的方法。通过发送WM_COPYDATA来传送数据。如果用SendMessage发送,发送方要等待接收方返回,期间发送方将被阻塞。如果用PostMessage发送,在数据发送过于频繁时,有可能发生数据丢失。所以在发送大数据量时,从性能方面考虑WM_COPYDATA并不是很好的一种方法。 共享内存是通过直接操作内存映射文件来进行的,而内存映射文件又是进行单机数据共享原创 2006-11-05 13:13:00 · 914 阅读 · 0 评论 -
托盘程序创建
1。先定义一个NOTIFYICONDATA类型的变量 typedef struct _NOTIFYICONDATA { DWORD cbSize; //以字节为单位的这个结构的大小 HWND hWnd; //接收托盘图标通知消息的窗口句柄 UINT uID; //应用程序定义的该图标的ID号 UINT uFlags; //设置该图原创 2006-11-05 13:20:00 · 633 阅读 · 0 评论 -
hook-简要实现
hook一般建立在dll中。在dll中完成hook安装,卸载。hook安装:hhook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)beep, hInstance, 0);其中WH_KEYBOARD是hook要监控的类型,这儿是键盘消息。(HOOKPROC)beep是截获消息后的处理函数hInstance是要安装钩子的程序实例,如果某个程序是给自原创 2006-11-05 13:21:00 · 632 阅读 · 0 评论 -
dll--几种基本实现及调用方法
1。dll的建立选择win32的dll lib工程, 建立一个cpp文件,代码如下:_declspec(dllexport) int add(int a, int b){ return a+b;}注意前面的标识_declspec(dllexport),表示dll的输出函数。每个输出的函数都要用这个进行标识。可以进行dll所在目录用dumpbin -exports dll1.dll 查看原创 2006-11-05 13:36:00 · 5337 阅读 · 1 评论 -
控件使用--CSpinButtonCtrl
基本操作CSpinButtonCtrl需要一个伙伴窗口才可以完成功能。伙伴窗口一般为编辑控件在dialog上加 spin控件, edit控件。spine控件的属性 Set buddy integer要选择,我试了很长时间不起作用就是因为这个没有选择然后代码为: m_spin1.SetBuddy(GetDlgItem(IDC_EDIT1)); //设置伙伴窗口 m_spin原创 2006-11-05 13:46:00 · 4658 阅读 · 1 评论 -
进程间常通讯方法
UNIX BSD中的管道(pipe)、命名管道(named pipe)和软中断信号(signal),UNIX system V的消息(message)、共享存储区(shared memory)和信号量(semaphore)等套接字是一种常用的进程间通讯方法,与上面方法不同的是,除了单机内进程通讯,还可以进行网络间的进程通讯。原创 2006-11-05 13:51:00 · 1627 阅读 · 0 评论 -
com-采用sdk方式编写概述
com相关的概念1. 何为com微软提出了C O M(Component Object Model, 中文也可以译作"组件对象模型")COM组件是完全与语言无关的,开发后,可以供其它开发语言使用。2.如何调用com进程内com其实是一个Dll, 这个dll与普通dll有些区别,就是可以通过regsvr32之类的程序进行注册,注册过程其实是将com的clsid写入注册表,并给出dll的物理路原创 2006-11-05 13:10:00 · 1265 阅读 · 0 评论 -
隐藏(屏闭)桌面、任务栏、开始菜单
任务栏 ::ShowWindow(::FindWindow("Shell_TrayWnd", NULL), SW_HIDE); 开始菜单 ::ShowWindow(::GetDlgItem(::FindWindow("Shell_TrayWnd", NULL),0x130), SW_HIDE); 桌面 ::ShowWindow(::FindWindow("ProgMan",原创 2009-02-17 12:54:00 · 2565 阅读 · 0 评论