随笔分类 - c/c++
使用 DllImport 属性
摘要:本主题说明 DllImport 属性的常见用法。第一节讨论使用 DllImport 从托管应用程序调用本机代码的优点。第二节集中讨论封送处理和 DllImport 属性的各个方面。从托管应用程序调用非托管代码当在托管应用程序中重用现有的非托管代码时,DllImport 属性非常有用。例如,托管应用程...
阅读全文
DllImport属性详解
摘要:API函数是构筑Windows的基石, 是Windows编程的必备利器。每一种Windows应用程序开发工具都提供间接或者直接的方式调用Win32API,C#也不例外。使用Win32API的一个好处就是,我们可以实现更多的功能。首先,要引入命名空间:using System.Runtime.Inte...
阅读全文
dll开发中遇到的问题
摘要:刚碰到个问题,我的一个项目中引用了一个dll,这个dll又引用了另一个dll,我把这俩个都放在bin文件夹下,但是会报错,说第二个dll找不到。把它放到系统文件夹system32下就没事了。但是遇到一个奇怪的问题,我的各部分代码是只有的:Text.cint plus(int a,int b){ re...
阅读全文
如何逐步实现动态库的加载,类型的匹配
摘要:如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可:#defineLIBEXPORT_APIextern"C"__declspec(dllexport)第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和:LIBEXPORT_APIint...
阅读全文
在C#调用C++的DLL简析(一)——生成非托管dll
摘要:经过一晚上的折腾,还是下点决心将些许的心得写下来,以免以后重复劳动。C#与C/C++相 比,前者的优势在于UI,后者的优势在于算法,C++下的指针虽然恶心,若使用得当还是相当方便的,最重要的问题是,市面上很多流行的开发工具库,几乎没 有不支持C++的,但全面支持C#只能说是难得,在CPU发展到今天,...
阅读全文
#pragma comment使用
摘要:编程经常碰到,理解的总不是很透彻,在这里查阅资料总结一下!在编写程序的时候,我们常用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma once :这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,避免文件被重复包含。#prag...
阅读全文
lib 和 dll 的区别、生成以及使用详解
摘要:首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直...
阅读全文
关于名称重整(name mangling)、多态性的一些简单介绍
摘要:在看GCC源码的时候看到mangles这个单词,于是google了一下。在面向对象编程语言出现之前,如果你想要打印不同类型的数据,需要写多个方法,例如PrintInteger(int i),PrintString(string s) 和 PrintFloat(float f) 。也就是说, 你必须通...
阅读全文
c语言 while (~scanf("%d%d",&n,&m)) 在这里这个符号“~”是什么意思
摘要:按位取反,简单地说就是二进制1变0,0变1由于scanf是有返回值的,且返回值为int型特别的此处用法导致只有scanf返回-1,循环才会结束,也就是要返回EOF while (~scanf("%d%d",&n,&m))等效于 while (scanf("%d%d",&n,&m)!=EOF)
阅读全文
F - Coins
摘要:F - Coins Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1742Description People in Silverland use coin...
阅读全文
K - 最少拦截系统
摘要:Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不 能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么...
阅读全文
CFileDialog的用法
摘要:CFileDialog 在MSDN中的函数原形CFileDialog::CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDERE...
阅读全文
MFC编辑框换行实现
摘要:MFC中换行实现在mfc中编辑框允许输入多行时,换行符被表示为即“\r\n”,用ascii码表示为13 10如果为编辑框中想要输入换行,就请将编辑框的属性:Auto HScroll 设置为 FalseMultiLine 设置为 TrueWant Return 设置为 Truetxt文本框中的换行实现...
阅读全文
MFC通过对话框窗口句柄获得对话框对象指针
摘要:C***Dialog* pWnd= (C***Dialog*)FromHandle(hWnd); //由句柄得到对话框的对象指针 pWnd->xxx( ); //调用C***Dialog中的函数xxx();通过窗口类函数:CWnd *GetWindow获得窗口指针,pWnd->m_hWnd(Th...
阅读全文
AfxGetMainWnd()函数用法
摘要:CWnd* AfxGetMainWnd( ); 使用AfxGetMainWnd函数获取MFC程序中的主框架类指针是一个常用作法。就是获得应用程序主窗口的指针,AfxGetMainWnd()-> m_hWnd是主窗口的句柄。
阅读全文
this指针和m_hWnd的区别
摘要:m_hWnd①m_hWnd这个成员变量,最早是定义在类CWnd中,而且是类CWnd的第一个数据成员,先看一下MSDN的解析:ThehandleoftheWindowswindowattachedtothisCWnd.Them_hWnddatamemberisapublicvariableoftype...
阅读全文
WinAPI: FindWindow、FindWindowEx - 查找窗口
摘要:FindWindow( lpClassName, {窗口的类名} lpWindowName: PChar {窗口的标题}): HWND; {返回窗口的句柄; 失败返回 0}//FindWindowEx 比 FindWindow 多出两个句柄参数:FindWindowEx( Pare...
阅读全文
VC 各种情况下的窗口句柄的获取
摘要:动窗口的句柄。否则,返回值为NULL。GetSafeHwnd函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。通过下面的例子来看其理由: CWnd *pwnd = FindWindow(“ExploreWClass”,NUL...
阅读全文
cout 格式化输出
摘要:将 cout 的 flag 保存到变量, 以便修改后的恢复 ostream::fmtflags old = cout.flag() ; // 无参将返回当前 flag 值 cout.flag(old) ; // 恢复到原...
阅读全文