Articles of OOP

面向对象的shell for linux?

有没有类似于Linux的Linux(可能build立在Java,GObject或其自己的对象types/无)的Microsoft Powershell(一个构build在.NET框架上的面向对象的shell)? 编辑:特别是如果类似于bash或者powershell或者cmd等语法(=''standard''shell语法)

存储这个指针在WndProc中使用的最佳方法

我有兴趣知道存储this指针在WndProc使用的最佳/常用的方法。 我知道几种方法,但据我了解,每种方法都有自己的缺点。 我的问题是: 生成这种代码有什么不同的方法: CWindow::WndProc(UINT msg, WPARAM wParam, LPARAM) { this->DoSomething(); } 我可以想到Thunks,HashMaps,线程本地存储和窗口用户数据结构。 每种方法有哪些优点/缺点? 为代码示例和build议授予的积分。 这纯粹是出于好奇的缘故。 使用MFC后,我只是想知道如何工作,然后想到ATL等。 编辑:我可以有效地使用窗口过程中的HWND最早的地方是什么? 它被logging为WM_NCCREATE – 但如果你真的试验,这不是第一个消息发送到窗口。 编辑: ATL使用thunk来访问这个指针。 MFC使用HWND的散列表查找。

虚拟环境的哪些部分需要改变来重新定位呢?

所以,我已经有了一个可笑的一些插件/包的Python程序。 我希望能够在其virtualenv分发该程序,以便捆绑包。 但是,该程序是针对Windows的,而virtualenvs的“可重定位”function在Windows上是不受支持的(并且仍然是实验性的)。 所以,我正在考虑编写一个脚本,或者只是编写指令手动更改绝对path名称来重新定位virtualenv。 我的问题是,如果有人知道我必须在virtualenv中查找绝对path名。 我很新的Python包装。 activate.bat脚本包含绝对path名称,但是单个软件包的绝对path名是否被硬编码到其安装中? “ 使环境可重定位 ”一节介绍了为什么不能简单地移动virtualenv,但不列出包含绝对path名的地方。

将函数的声明设置为0意味着什么? 你怎么能给一个函数赋一个整数?

当我在窗口类中find以下函数定义时,我浏览了一个封装Windows API的GUI工具包的源代码(更不用说名称): virtual LRESULT CALLBACK wndProc (HWND, UINT, WPARAM, LPARAM) = 0; 这里发生了什么? 你怎么能给一个整数分配一个函数? 还是它分配给NULL ? 如果你想在wndproc中使用函数指针,你需要这样做吗?

我如何调用另一个类的静态方法

我有一个类,让我们说说有一个静态方法的CAppPath : public: static CString GetAppPath(); 并在CAppPath.cpp定义为: CString CAppPath::GetAppPath() { return "C:\..\MypAth"; } 现在我有另外一个类CXMLHandler ,并且在其中包含了CAppPath.h 。 但是,如何调用GetAppPath()方法? 我试过了: #include "CAppPath.h" void CXMLHandler::MyMethod { CNDSClientDlg->GetAppPath(); } 但它不起作用。 我应该如何访问这个方法? 既然它是一个静态的方法,我是否需要创build一个类的对象,或者我应该让类本身是静态的?