- 博客(41)
- 资源 (4)
- 收藏
- 关注
转载 ShowErrMsg()
<br />void ShowErrMsg() <br />{ <br /> LPVOID lpMsgBuf;<br /> DWORD dw = GetLastError(); <br /> FormatMessage(<br /> FORMAT_MESSAGE_ALLOCATE_BUFFER | <br /> FORMAT_MESSAGE_FROM_SYSTEM,<br /> NULL,<br /> dw
2010-12-30 15:27:00 825
原创 关于动态库的几个关键函数
1.DllGetClassObject 用于创建类厂对象2.类厂对象定义个CreateInstance3.CoCreateInstance,客户程序调用此函数,此函数内部调用DllGetClassObject创建类厂对象,然后调用类厂的CreateInstance创建com对象4.DllRegisterServer 用于注册com组件到注册表,如果com组件没有定义此函数或没有引出此函数,使用RegSvr32注册这个组件时会出现找不到入口点5.DllUnregisterServer反注册
2010-12-30 14:38:00 541
原创 vc定义全局变量的问题
全局变量实际分为"文件范围"内的全局变量和"工程范围"内的全局变量 文件范围的:1.由于c++编译器是按文件为单位的,所以普通定义的全局变量其作用域也仅限于所在文件 工程范围的:1.若定义个全局变量,想让其它文件也能使用,则必须把它声明为extern类型(
2010-12-30 13:58:00 710
原创 关于virtual虚函数
1.如果父类定义的是普通virtual函数,(1)父类必须提供一个实现(2)子类如果不需要实现它,可以不在函数成员中列出来,或者类文件中列出来,不提供实现也可以;子类如果要实现它,则必须在函数成员中列出来2.如果父类定义的是纯virtual函数(1)如果子类仍是个抽象类,可以不声明它(2)如果子类不是抽象类,则必须声明它,因为编译器需要用它来制作虚函数表3.在子类列表中
2010-12-30 11:12:00 433
原创 编译时一些莫名其妙的错误
1.fatal error C1004: unexpected end of file found由于class定义忘了分号;
2010-12-30 11:02:00 574
原创 如何在VC++6中实现窗口最大化、最小化的设置
ShowWindow( SW_SHOWMAXIMIZED ); ShowWindow( SW_SHOWMINIMIZED );
2010-12-29 18:18:00 2131
转载 (转)C++中extern “C”含义深层探索
<br />1.引言<br /> C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。<br /> 2.从标准头文件说起<br /> 某企业曾经给出如
2010-12-28 21:32:00 329
原创 树状控件的基本用法
1.加图标 m_listImage.Create(16, 16, ILC_COLOR8|ILC_MASK,2,2); m_listImage.Add(AfxGetApp()->LoadIcon(IDI_ICON_WORKGROUP)); m_list
2010-12-28 14:21:00 578
原创 为什么QueryInterface最后一个参数是(void**),而不是(void*)
1.首先看普通指针参数传递.int n = 0;void func(int *n){ *n = 1;}func(&n);之后n的值变成了1注意点:(1)参数类型是 (int*)类型,函数实际可以表示成 void func( (int*) n)(2)既然参数是指向整形的指针类型,则传参的时候,自然也是传指针 &n2.再看QueryInterface.(1)首先明白一点,函数的参数类型取决它如何被调用,也就是需要用它获取什么.在com中,QueryInterface用于获取接口指针(注意,不是接口对象,而是
2010-12-28 10:10:00 744 1
原创 双击dsw,打开一个新的vc
我的电脑 - 工具 -文件夹选项 - 文件类型 - 选择dsw文件 删除,新建,文件扩展名输入dsw,确定.在下面"dsw"扩展名的详细信息里面点"高级",点"新建",操作里面输入open,用于执行的操作程序里面,点浏览选中vc的MSDEV.exe
2010-12-28 09:20:00 566
原创 vc的相对目录
<br />1.用于打开的文件应该放在工程目录下,而不是debug或release目录下<br />2.对于动态库使用的文件,也应该放在本工程目录下,而不是跟动态库放在一个目录下,因为动态库被加载后是运行在本工程的进程里
2010-12-26 15:26:00 649
转载 模块定义(.def)文件说明
<br />MSDN中的名词解释<br />模块定义 (.def) 文件为链接器提供有关被链接程序的导出、属性及其他方面的信息。生成 DLL 时,.def 文件最有用。由于存在可代替模块定义语句使用的链接器选项,通常不需要 .def 文件。也可以将 __declspec(dllexport) 用作指定导出函数的手段。在链接器阶段可以使用 /DEF(指定模块定义文件)链接器选项调用 .def 文件。<br />如果生成的 .exe 文件没有导出,使用 .def 文件将使输出文件较大并降低加
2010-12-25 23:12:00 1244
转载 HMODULE 到底定义的是什么
定义是这样的:typedef HINSTANCE HMODULE;<br /><br />再看看HINSTANCE<br />typedef HANDLE HINSTANCE;<br /><br />那HANDLE又是什么呢?<br />typedef PVOID HANDLE;<br /><br />PVOID又是什么呢?<br />typedef void *PVOID;<br /><br />现在明白了吧》<br />其实这些都可以称为句柄,为了表述的方便,所以对于不同
2010-12-25 21:14:00 2126
转载 COM字符转换函数编译问题
<br />unresolved external symbol "void __stdcall _com_issue_error(long)" (?_com_issue_error@@YGXJ@Z)<br />unresolved external symbol "char * __stdcall _com_util::ConvertBSTRToString(unsigned short *)" (?ConvertBSTRToString@_com_util@@YGPADPAG@Z)<br /
2010-12-25 20:12:00 449
原创 动态库学习积累
1.建立win32DLL。若选择 An empty DLL project ,则向导不生成任何文件若选择 An simple DLL project ,则向导stdafx.h stdafx.cpp文件(stdafx并不是MFC专用的)2.win32的 DLLMain 会被声明为 APIENTRY3.MFC类型的动态库,建立时选项Regular dll with mfc statically linked,意思并不是说本动态库被使用的时候被静态链接。而是说这个动态库,它在使用MFC的时候,静态链接MFC。A
2010-12-25 20:08:00 376
原创 简单工厂模式/策略模式/装饰模式
1.简单工厂模式,简单说就是封装/继承2.策略模式,也是侧重于继承,策略模式特指具备唯一性选择的情况,比如人穿衣服,只允许其穿一件衣服,自然,衣服需要用继承实现.3.装饰模式.装饰模式与策略模式有一点类似,就是继承.仍然举人与衣服的例子,衣服仍然需要继承实现.但是,不同的是.这里不用两个类,用一个类,人看做是父类,衣服看做是其子类,关键的是,衣服维护一个"人"成员.这样就变成了,不是人穿衣服,而是衣服往人身上穿.由此看来,装饰模式与策略模式很类似,都需要用继承,都需要在客户程序使用时做选择判断.唯一不同的是
2010-12-22 17:55:00 785
转载 sql语句中的union和union all
UNION指令的目的是将两个SQL语句的结果合并起来。从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 union只是将两个结果联结起来一起显示,并
2010-12-22 15:53:00 982
原创 双击VC对话框提示cannot add new member的解决方法
1.:如果出现这种情况,我们可以先把工程给关闭,然后删除 *.clw文件,然后再打开工程,并按CTRL+W打开ClassWizard,这里我们输入先前删除的文件的文件名,然后点确定,便可重新生成一次*.clw文件。(注意:这里的*代码你的工程,如:我的工程叫Test,那么我们就应
2010-12-18 11:17:00 910
转载 vc: ClassView不显示类的信息
打开工作空间时谈出对话框:Cannt access the ClassView information file.ClassView information will not be avaiable.然后再ClassView中的工程下显示0 files left to load.
2010-12-18 10:52:00 726
原创 VC中关于编译时候的错误提示:is not a precompiled header
<br />从project->settings->c/c++页,左边列表选择出错的相关文件,,选择Not using precomiled headers。
2010-12-17 18:10:00 1206
原创 如何手动触发"ComboBox选择改变"消息
/* 消息触发CBN_SELCHANGE事件 */ WPARAM wParam = MAKELPARAM(IDC_COMBO_USER, CBN_SELCHANGE); CSDJMDlg *pDlg = &(pView->m_Page_SDJMDLG); HWND hWnd = ( (CComboBox *)( pDlg->GetDlgItem(IDC_COMBO_USER) ) )->m_hWnd;
2010-12-16 19:26:00 4628
原创 指针的使用
<br /> CUSTOMINFO *pcustinfo= new CUSTOMINFO;<br /> memset(pcustinfo,0x00,sizeof(CUSTOMINFO));<br /> <br /> CUSTOMINFO custinfo2;<br /> <br /> *pcustinfo = custinfo2;//pcustinfo仍指向原来的地址,不过存储内容与custinfo2一样了.等于传值.<br /
2010-12-16 12:23:00 280
原创 带切分的窗口中如何获取某块view的指针
<br /> CTabFormView1 * pView = (CTabFormView1 *)(((CMainFrame*)AfxGetMainWnd())->m_vSplitterWnd.GetPane(0,1));
2010-12-16 10:59:00 493
原创 VC如何通过消息驱使鼠标按下
<br />PostMessage(WM_COMMAND,IDC_STOP,0); // IDC_STOP 为按钮ID
2010-12-16 09:38:00 496
原创 VC打开工程时 弹出 Visual SourceSafe Login的解决办法
点browse找到vss的安装路径,直接把安装文件夹名改掉.或者卸载vss(不过vss好像没有卸载程序)
2010-12-16 09:05:00 3571
原创 重叠窗口,需要改变下层窗口的状态时,改变内容后,需要SetWindowPos把该窗口置顶(位置并非就跑到上面了)
方法一:查看msdn的setwindowpos 示例: ::SetWindowPos(m_hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); /* frame窗口置前,否则节点不显示选中 */ 方法二:SetForegroundWindow(); 方法三:SetFocus();这种方法是最灵活的.但是要
2010-12-15 11:57:00 1059
原创 strlen
<br /> char *szUser = new char[32];<br /> memset(szUser,0x00,sizeof(szUser));<br /><br /> m_listUser.GetItemText(pNMListView->iItem,0,szUser,strlen(szUser));<br /> <br />这样是获取不到值的,因为此时的strlen(szUser)为0了;<br /> <br />应该用 m_li
2010-12-15 11:27:00 349
原创 通过消息传输字符串
char *szUser = new char[32]; ...... PostMessage(WM_SETUSERSELECTED,0,(LPARAM)szUser); ...... char *szUser= (char *)lParam; CString strUser; strUser.
2010-12-14 14:35:00 413
转载 'operator <<' is ambiguous
'operator <<' is ambiguous<br /> class Time{<br />public:<br /> int hour, minute, second;<br />public:<br /> void set(int h, int m, int s){ hour=h, minute=m, second=s; }<br /> friend Time& operator++(Time& a);<br /> friend Time opera
2010-12-04 09:21:00 1346
转载 error LNK2001: unresolved external symbol "void __cdecl 怎么办
关于LNK2001错误的一些总结 在最开始的编程过程中,最常出现的错误就是LNK2001这个错误,究其原因,其实一句话可以解释:当程序调用函数(function1)时,没有找到function1具体的实现部分。最常见的例子和解释: main or
2010-12-03 13:18:00 5456
转载 winocc.cpp 279错误的解决方法
<br />程序编译时出现winocc.cpp 279错误,一般是使用了MoveWindow的问题<br />想在对话框onSize时触发函数,设置控件的大小<br /><br />程序一运行就执行了OnSize函数,此时控件还未生成,此时对控件进行MoveWindow操作就会出现winocc.cpp 279错误<br /><br />解决的方法就是,在控件MoveWindow时判断一下是否存在<br />if(m_content.m_hWnd) //m_content为控件变量名,
2010-12-02 15:35:00 1973
原创 CDC TextOut如何使字的背景透明
cdc-> SetBkMode(TRANSPARENT); cdc-> TextOut( "... ");
2010-12-01 17:39:00 5146
原创 dc重绘树状结构
void CLeftView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here
2010-12-01 09:53:00 651
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人