vc6怎么打开notepad的资源
时间 : 2023-05-31 15:56:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

VC6是一款非常经典的集成开发环境,它可以帮助开发者快速地开发各种类型的程序。其中,在VC6中打开notepad的资源也是很容易的。本文将通过以下步骤介绍如何在VC6中打开notepad的资源。

步骤一:打开VC6,并创建一个新的MFC程序。

首先,打开VC6并选择“新建”-->“MFC应用程序向导”来创建一个新的MFC程序。在创建向导中,填写“应用程序类型”和“应用程序选项”等信息,之后点击“完成”。在弹出的“新建应用程序类”对话框中,点击“添加”的按钮,在“添加类向导”中添加一个新的dlg对话框类。最后,点击“完成”。

步骤二:打开notepad的主程序。

在VC6的资源管理器窗口中,展开“资源文件(RC)”并双击“notepad.rc”文件。该文件包含了notepad的资源。在“应用程序类型”选项卡中,选择“不包含源代码、以文件形式包含”。然后,在“源代码”选项卡中,打开notepad的主程序,即“notepad.exe”。

步骤三:导入资源并调用notepad的主程序。

在VC6的资源文件编辑器中,将notepad的主程序拖到“对话框”设计器中,创建一个CStatic控件。将其属性设为“图像”,并选择notepad的主程序。随后,将“IDC_STATIC”重命名为“IDC_NOTEPAD_ICON”。

若想在对话框启动时显示notepad的图标,可在该对话框类的OnInitDialog()函数中加入以下代码:

CWnd* pWnd = GetDlgItem(IDC_NOTEPAD_ICON);

HBITMAP hBitmap = ::LoadBitmap(::AfxGetInstanceHandle(),

MAKEINTRESOURCE(IDR_MAINFRAME));

pWnd->SendMessage(STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);

注意,上述代码要依据IDC_NOTEPAD_ICON控件的实际ID进行调整。每次执行OnInitDialog()函数时,都会加载notepad的主程序并将其图标在对话框中展示出来。

总之,以上就是在VC6中打开notepad的资源的详细步骤。其中包括:创建一个新的MFC程序,打开notepad的主程序,导入资源并调用notepad的主程序。感谢您的阅读。

在 VC6 中打开记事本(Notepad)的资源的方法如下:

1. 在 VC6 中建立一个 MFC 对话框项目,命名为 NotepadProject。

2. 在资源视图中右键单击“Resource Files”文件夹,选择“Import…”。

3. 在导入资源对话框中选择 Notepad.exe 所在目录下的 notepad.exe 文件,点击“Open”按钮。

4. 在导入资源对话框中勾选“Dialog”,并选择 ID 为 32770 的对话框资源,并点击“Import”按钮。这个对话框资源是记事本主窗口的资源。

5. 在 VC6 的资源编辑器中,双击“IDD_DIALOG1”对话框资源,将其打开并修改为如下图所示:

![](https://i.imgur.com/mZZzSWP.png)

在对话框中添加了编辑框和按钮控件,用于显示文本和打开 Save As 对话框。

6. 双击“Save”按钮,将其添加自定义 Class 名称为“CNotepadProjectDlg”,并点击“OK”按钮。

7. 在 CNotepadProjectDlg 类中添加如下成员变量和成员函数:

private:

CString m_strText;

private:

void LoadNotepadResource();

void GetWindowText(HWND hWnd, CString& strText);

8. 在 CNotepadProjectDlg 类结束符号之前,添加如下代码:

void CNotepadProjectDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT_NOTEPAD, m_strText);

}

BEGIN_MESSAGE_MAP(CNotepadProjectDlg, CDialog)

ON_BN_CLICKED(IDC_BUTTON_SAVE, &CNotepadProjectDlg::OnButtonSave)

ON_WM_CLOSE()

END_MESSAGE_MAP()

BOOL CNotepadProjectDlg::OnInitDialog()

{

CDialog::OnInitDialog();

LoadNotepadResource();

return TRUE;

}

void CNotepadProjectDlg::LoadNotepadResource()

{

HGLOBAL hGlobal = NULL;

HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(32770), RT_DIALOG);

if (hResource != NULL)

{

HMODULE hModule = LoadLibrary(L"notepad.exe");

if (hModule != NULL)

{

hGlobal = LoadResource(hModule, hResource);

if (hGlobal != NULL)

{

LPDLGTEMPLATE pDlgTemplate = (LPDLGTEMPLATE)LockResource(hGlobal);

if (pDlgTemplate != NULL)

{

::SetWindowPos(m_hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);

::CreateDialogIndirectParam(AfxGetApp()->m_pMainWnd->m_hWnd, pDlgTemplate, NULL, (DLGPROC)NULL, 0);

}

}

FreeLibrary(hModule);

}

}

if (hGlobal != NULL)

{

UnlockResource(hGlobal);

FreeResource(hGlobal);

}

}

void CNotepadProjectDlg::GetWindowText(HWND hWnd, CString& strText)

{

if (hWnd != NULL)

{

int nLength = ::GetWindowTextLength(hWnd) + 1;

if (nLength > 1)

{

TCHAR* pszText = new TCHAR[nLength];

::GetWindowText(hWnd, pszText, nLength);

strText = pszText;

delete[] pszText;

}

}

}

void CNotepadProjectDlg::OnButtonSave()

{

CFileDialog dlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"Text Files (*.txt)|*.txt||", this);

if (dlg.DoModal() == IDOK)

{

CString strFilePath = dlg.GetPathName();

CFile file(strFilePath, CFile::modeCreate | CFile::modeWrite | CFile::typeText);

CString strText;

GetWindowText(GetDlgItem(IDC_EDIT_NOTEPAD)->m_hWnd, strText);

file.Write(strText, strText.GetLength() * sizeof(TCHAR));

file.Close();

}

}

void CNotepadProjectDlg::OnClose()

{

GetWindowText(m_hWnd, m_strText);

CDialog::OnClose();

}

9. 在 NotepadProject 应用程序类的 InitInstance 函数中添加如下代码:

CNotepadProjectDlg dlg;

m_pMainWnd = &dlg;

dlg.DoModal();

10. 编译并运行 NotepadProject 项目,可以看到如下效果:

![](https://i.imgur.com/T3rxJFF.png)

点击“File”菜单,然后点击“Save As...”菜单项,即可弹出“另存为”对话框,可输入文件名并将编辑框中的文本保存到指定文件中。

以上就是使用 VC6 打开记事本资源的方法。