- 博客(28)
- 收藏
- 关注
转载 程序员的十层楼——周伟明
自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。 那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多大
2011-05-09 20:49:00 2701 1
转载 vb.net中的自定义事件
'VB.net 自定义事件使用方法'1.先定义包含事件的类(如下)Public Class TestEvent Public Event MyEvent(ByVal s As String) '自定义事件 Public Sub StartEvent(ByVal value As String) '触发事件函数 RaiseEvent MyEvent(value) '触发事件 End SubEnd Class'2.在使用事件的类中添加如下代码
2010-12-28 14:25:00 10552
转载 .NET中的Timer
<br /><br /> .NET 提供了三种Timer:<br />基于服务的Timer System.Timers.Timer<br />基于线程的Timer System.Threading.Timer <br />基于窗体的Timer System.Windows.Forms.Timer<br /> 1、System.Threading.Timer,希望在另一个线程上定时执行后台任务时,这个定时器是最好的定时器。<br /> 2、System.Windows.Form
2010-12-13 16:49:00 1198
转载 一个.NET委托的入门例子
<br />有许多人问的,.Net中的委托以及事件处理。我拿简单的例子说明一下,是现实中的例子:<br /><br />比如说一个公司(场景),你是老板,手下有两个员工,小张和小王。<br /><br />你命令小王,如果小张玩游戏,则小王扣去小张500元钱。<br /><br />这就是现实中的委托。<br /><br /><br />实际上,在写程序中,程序员就是老板,小张和小王就是两个对象。小张玩游戏是一个方法,小张还有一个游戏事件,他玩游戏激发这个事件。而小王就是事件处理对象,他负责把小张的钱扣除5
2010-12-13 16:32:00 805
原创 多个SQL server实例
<br />同一台电脑上可以建立多个SQL server实例,每个实例上可以建立多个独立的数据库,用户等。互不干扰。<br /> <br />以下是转自别人的答疑:<br /> <br /> <br />多个 SQL Server 实例 <br />Microsoft SQL Server 2000 支持在同一台计算机上同时运行多个 SQL Server 数据库引擎实例。每个 SQL Server 数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。应用程序连接
2010-12-01 15:38:00 13527
转载 SQL Server 2005 不允许远程连接解决方法
SQL Server 2005 不允许远程连接解决方法 做课程设计时,很多学生都遇到这个问题。把解决方法写在这儿,供参考。 刚刚安装的数据库系统,按照默认安装的话,很可能在进行远程连接时报错,通常是错误:"在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) "搜MSDN,上面有一片机器翻译的文章,是在让人难以明白,
2010-12-01 15:10:00 552
转载 函数调用的栈管理
<br />当调用(call)一个函数时,主调函数将声明中的参数表以逆序压栈,然后将当前的代码执行指针(eip)压栈,跳转到被调函数的入口点。<br />当调用(call)一个函数时,主调函数将声明中的参数表以逆序压栈,然后将当前的代码执行指针(eip)压栈,跳转到被调函数的入口点。<br /> 进入被调函数时,函数将esp减去相应字节数获取局部变量存储空间。被调函数返回(ret)时,将esp加上相应字节数,归还栈空间,弹出主调函数压在栈中的代码执行指针(eip),跳回主调函数。再由主调函数
2010-11-12 09:41:00 667
转载 AfxOleInit()和::CoInitialize(NULL)区别(转载)
<br /><br />OLE是建立在COM之上的技术,层次比COM要高。AfxOleInit()调用的是OleInitialize(),而OleInitialize()除了调用CoInitializeEx()来初始化COM库外,还进行一些其它的操作,这些操作对OLE应用来说是必须的,这些OLE应用包括: <br /> (1)Clipboard; <br /> (2)Drag and drop; <br /> (3)Object linking and embeddin
2010-11-10 10:04:00 1242 1
转载 CoInitialize()与COM
Coinitialize CoInitialize是 Windows提供的API函数,用来告诉 Windows以单线程的方式创建com对象。应用程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。 返回值S_OK : 该线程中COM库初始化成功S_FALSE 该线程中COM库已经被初始化 CoInitialize () 标明以单线程方式创建。 使用 CoInitialize 创建可以使对象直接与线程连接,得到最高的性能。 CoInitialize并不装载COM 库,
2010-11-10 09:55:00 16304 1
原创 静态函数里不能访问成员变量
<br />因为静态是针对类的,而成员变量为对象所有。<br /> <br />如果要访问的话:<br /> <br />一:可以把要用的参数通过void * argslist 传递进线程函数<br />二:设置一个静态变量,静态变量可以指向你要调用对象的,然后在线程函数中直接调用<br />三:可以把类成员变量设置成静态的,这样就可以在线程函数中直接调用<br />看看你的代码int val=a是不可能调用的因为没有this指针,你可以采用我的第一个方案,传递进一个this指针,表明a是属于哪个对象的<b
2010-09-30 14:57:00 2167
原创 this指针问题
<br />我将一个按钮的响应函数放到了View类里边,如下:<br /><br /><br /><br />void CBitmapZoomApp::OnBmpZoom()<br />{<br />CDialogZoom dlgZoom;<br /> <br />if (IDOK == dlgZoom.DoModal())<br />{<br />dibCDib.Zoom(dlgZoom.m_fXZoom, dlgZoom.m_fYZoom);<br />CMainFrame* pMainFrame =
2010-09-25 14:03:00 499
原创 几个宏函数
<br /><br />#define Max(a,b) (((a) > (b)) ? (a) : (b))<br />#define Min(a,b) (((a) < (b)) ? (a) : (b)) <br />#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p); (p)=NULL; } }<br />#defineSAFE_DELETE(p){ if(p) { delete (p); (p)=NULL; } }
2010-09-25 10:30:00 446
原创 C++中获得在App或者Doc中获得当前View的指针
<br />MDI程序中<br /> <br /><br />CMainFrame* pMainFrame = (CMainFrame*)GetMainWnd(); <br />CBitmapZoomView* pActiveView = (CBitmapZoomView*)pMainFrame->MDIGetActive();<br />
2010-09-21 08:23:00 588
原创 CFileDialog
<br />CFileDialog 既用于打开文件也用于保存文件,由第一个参数决定,TRUE就是打开。要注意,这样构造出来的CFileDialog的内存地址是0x00000,实际上是没有构造出来,但是下面的程序能通过并正确执行,而如果用GetFolderPath就会警告。<br /> <br /><br /> CFileDialog fSaveDlg(FALSE,NULL,szFileName, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,NULL,this,NULL);<
2010-09-16 21:45:00 486
原创 弹出选择文件夹的窗口(用于文件存储)
<br />CHAR* cFolderPathT = new CHAR[256];<br /> memset(cFolderPathT, 0, 256);<br /> <br /> BROWSEINFO bRows; <br /> LPITEMIDLIST pIDL = NULL; <br /> bRows.hwndOwner = NULL; <br /> bRows.pidlRoot = NULL; <br /> bRows.pszDisplayName = cFolderPathT;<br />
2010-09-16 13:31:00 552
原创 VC中如何用OCX
通过添加类的形式完成,只不过选择MFC Class From ActiveX ControlADD CLASS FROM TYPE LIBRARY选择*.ocx
2010-09-15 13:44:00 508
原创 删除多余进程(同类进程只留一个)
<br />VOID CMeDViewerDlg::KillSpareProcess(char* strProcessName)<br />{<br /> DWORD dwThisProcessID = GetCurrentProcessId(); //获取当前进程ID<br /> DWORD dwProcessID = 0;<br /> HANDLE hProcessHandle = NULL;<br /> DWORD dwProcessIDes[1024], cbNeeded, cbMNeeded;<b
2010-09-14 11:21:00 966
转载 获取当前进程ID
GetCurrentProcessId();或者#include#include#include#includeint main(){/*获得当前进程的进程ID和其父进程ID*/printf("The PID of this process is %d/n",getpid()); /*getpid函数作用是获得当前进程的PID*/printf("The PPID of this process is %d/n",getppid()); /*getppid函数作用是获得当前进程的父进程PPID*/}
2010-09-14 11:17:00 25318
转载 各种字符串之间的转换
HomeLibraryLearnDownloadsSupportCommunitySign in |中国(简体中文) |PreferencesMSDN LibraryDevelopment Tools and LanguagesVisual Studio 2010Visual StudioVisual Studio LanguagesVisual C++Visual C++ Programming MethodologiesCharacter Sets in C++How to: Convert Betwe
2010-09-13 22:38:00 968
转载 获得进程ID,关闭进程。
//// FindProcess// 这个函数唯一的参数是你指定的进程名,如:你的目标进程// 是 "Notepad.exe",返回值是该进程的ID,失败返回0//DWORD FindProcess(char *strProcessName){ DWORD aProcesses[1024], cbNeeded, cbMNeeded; HMODULE hMods[1024]; HANDLE hProcess; char szProcessName[MAX_PATH]; if (
2010-09-13 21:58:00 3769
原创 VC中include上级目录。
#include "../MeDUtl/CommonUse.h" 上级目录。#include "./CommonUse.h" 当前目录
2010-09-09 19:43:00 5608
原创 Oracle 11g 问题综合
<br />1、Oracle 11g 默认用户激活<br />http://hi.baidu.com/kelongxhu/blog/item/7af85ecb3a5561f452664fde.html<br /> <br />2、获得数据库SID<br />在CMD下进入SQLPLUS方法如下:sqlplus /nologconn / as sysdba-- 查询数据库的SIDselect instance_name from v$instace;这样就可以得到数据库的SID了<br /
2010-06-09 22:59:00 1149
转载 如何使用CArray
MFC的数组类支持的数组类似于常规数组,可以存放任何数据类型。常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,即先确定大小,而MFC数组类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配的。 MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,CArray,C
2010-05-16 15:59:00 2187
转载 Oracle 连接远程数据库
公司使用linux开发机进行程序开发时,由于开发用Oracle数据库是由日方提供,所以经常使用sqlplus连接到远程数据库上进行开发,例如:sqlplus username/password@servicename于是想,用我的两台电脑双机互联试一试,也玩个“远程连接”。实验如下:首先在我的台式机上安装了Oracle9i的数据库管理系统,并建立了一个数据库实例:xy然后为该实例
2010-05-16 15:01:00 7744
转载 Oracle 11g SECUREFILES
Oracle 数据库 11g面向 DBA 和开发人员的重要新特性:SecureFiles:1、SecureFiles:新 LOB 了解如何使用新一代 LOB:SeureFiles。SecureFiles 集外部文件和数据库 LOB 方法的优点于一身,可以存储非结构化数据,允许加密、压缩、重复消除等等。 数据库驻留 BLOBS 或 OS 文件 您在 Oracle 数据库中存储什么
2010-05-06 09:51:00 1470
原创 毕业设计中用到的一些
1、如何设置全局变量/函数(1)定义一个Global.h,内包含 #pragma once#include "OraEnv.h"extern OraEnv Glob_OraEnv; //全局变量#define SQL_MAXLEN 1024 //全局宏定义extern double GetTime(); //全局函数 (2)定义Gl
2010-05-05 15:44:00 421
原创 毕业设计中碰到的一些(简单常识类)
1、UpdateData(TRUE) 和 UpdateData(FALSE)的区别。 UpdateData(TRUE)控健变化通知程序更新内容。 UpdateData(FALSE)内容变化更新控健。 2、数组是在栈内分配的,通常VC默认的栈是1M,如果有数组过大,超过了这个数,就会导致编译出错,所以应该用动态的new。 3、在VC Debug版本里,栈中分配的值都会
2010-05-05 15:28:00 492
转载 VC调试总结 zz http://www.cppblog.com/kevinlynx/archive/2008/04/24/47998.html 博客。
很早前就想写点总结将编程中遇到的各种错误刨根挖底地罗列出来。但是因为这些错误(VC中开调试器遇到的各种错误对话框)都是随机性的,真正想总结的时候又不想不起来有哪些错误。恰好最近运气比较背,各种错误都被我遇遍了,于是恰好有机会做个总结。 这里所说的VC下的错误对话框时指在VC中开调试器运行程序时,IDE弹出的对话框。 1.不是错误的错误:断言 .将断言视为错误其实有点可
2010-05-05 14:25:00 1107
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人