解决方案 »
- 使用WinINet模拟POST
- 如何只禁用usbU盘和移动硬盘和usb光盘?而不禁用usb鼠标,键盘等。
- 为什么呢?在用ADO的参数化操作的时候,在有些机器上正常运行,但在一些机器上报“列不存在”的错误。
- 高手来解决下阿,如何使用代码重新放置在对话条上的一个控件的位子
- 用CPen画时超出客户区结果画到区域外了,怎么解决?
- 少了文件,VC设置中需要改动什么?
- 窗体通信的问题?(在线等?)求急。
- CString怎么传出去
- SDK,如何在标题条添加图标?
- 为什么CDialog::OnChar, CDialog::OnKeyDown这些回调函数不起作用?
- 如何用代码改变对话框上控件的TabOrder次序?
- 怎样将保存CTreeCtrl数据保存成文件?
class DllExport Yourclass{ ... };不过MFC类只有MFC扩展DLL才支持。
{
public:
BOOL ShortMenu(int iPos, CMenu* pShortMenu = NULL);
BOOL TaskBarDeleteIcon(UINT uID);
BOOL TaskBarIcon(UINT uID, HICON hIcon, LPSTR lpszTip, UINT uMotion);
CWnd* GetpWnd(CString str);
CWndOP();
virtual ~CWndOP(); // Generated message map functions
//{{AFX_MSG(CWndOP)
afx_msg LRESULT OnIconNotify(UINT uType, WPARAM wParam, LPARAM lParam, int iMenuPos, CMenu* pMenu = NULL);
//}}AFX_MSG
private:
BOOL MenuPopup(int iMenuPos, CMenu* pShortMenu);
DWORD WndPopup();
};
[email protected]
3q
注意,要建立成MFC Extend DLL(这样你才能够使用MFC类)
然后Ctrl + R,向资源中加入一个对话框
然后随你在上面放些控件
再然后,Ctrl + W启动类向导
这时系统会提示你新建一个IDD_DIALOG1的对话框类,单击OK确定
好了,到这一步,呵呵,都和普通的Windows Dialog程序没有什么不同
我起的类名字为CMyDlg(哇,这么土~~)
2)双击进入CMyDlg,注意是头文件
整个头文件的部分内容如下:
#if !defined(AFX_MYDLG_H__645E069A_5466_11D7_958C_00E04C821B78__INCLUDED_)
#define AFX_MYDLG_H__645E069A_5466_11D7_958C_00E04C821B78__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// MyDlg.h : header file
///////////////////////////////////////////////////////////////////////////////
// CMyDlg dialog
// 上面那些都是无用的!系统自动生成的,下面这些才是精华!!
#include "resource.h" //这一行必须加,否则MFC找不到Dialog资源的位置#define _MYDLG_EXPORT_#ifndef _MYDLG_EXPORT_
#define _CLASS_EXP_ __declspec(dllimport)
#else
#define _CLASS_EXP_ __declspec(dllexport)
#endif
// 上面是定义了一个编译预处理,正是可以导出类的精华所在必须加
class _CLASS_EXP_ CMyDlg : public CDialog // 看到了罢,在CMyDlg前面加上_CLASS_EXP_即可
{ // 不用那么死心眼非加AFX_EXT_CLASS,只要是上面宏定义的
// Construction 什么字符串都可以
public:
CMyDlg(CWnd* pParent = NULL); // standard constructor// Dialog Data
//{{AFX_DATA(CMyDlg)
enum { IDD = IDD_DIALOG1 };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
好了,除了上面的一点点东西别的都不变,你想要什么功能都可以
自己用Class Wizard编罢
CPP文件的编写没有任何变化,可以随意
在DLLMain所在的文件中加入
#include "MyDlg.h"
然后Build 该DLL即可
3)建立一个Dialog的Win32程序
选择Project->Add To Project...->Files...
选择文件类型为Lib,然后选择xxxx.lib(你的DLL生成的)
注意下面的操作很重要
首先拷贝一份你在DLL工程中的资源文件,resource.h到其他的目录,然后,将其重命名为
resource1.h
然后将其拷到你的Win32 exe工程目录下待用。
将你的MyDlg.h(对话框头文件)拷贝到你的Win32 exe工程目录,
单击Project->Add To Project->Fies...
选择MyDlg.h,好了,现在你应该可以在Class 视图中看到该导出类了。
你如果需要使用的时候,和使用普通的类一样:
#include "MyDlg.h"
...
...
CMyDlg dlg ;
dlg.DoModal()
...
就可以随心所欲了
是不是很简单??上面是导出MFC类,带有资源的,比较烦。
如果你需要导出不带有资源的普通类,那么就不用拷贝什么resource.h
也不用加什么#include "resource.h"了,
只要把.h文件拷过去,Add到当前工程里,并加个.Lib即可使用。最后需要说明的是,该程序需要DLL文件在当前目录下,才能运行喔
不知道大家看没看懂