工具:VS2019
实现功能:C++编写的DLL,通过CreateDialog载入资源中的窗口,获取窗口上编辑框IDC_EDIT1里面的内容,以达到给DLL加窗口功能的目的。
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include "resource.h"
#include <string>
#include <atlstr.h>//CString
#include <sstream>
HINSTANCE hinst = NULL;
HWND hwndDLG = NULL;
using namespace std;
//窗口监听事件
BOOL CALLBACK DlgProc(HWND hDlg, UINT message,
    WPARAM wParam, LPARAM lParam)
{
    CString strText = "1234";
   
    switch (message)
    {
    case WM_INITDIALOG:
        SetDlgItemText(hDlg, IDC_EDIT1, strText);//设置内容
        return TRUE;
    case WM_COMMAND:
        //IDOK是资源控件的ID
        if (LOWORD(wParam) == IDOK) {
            //这里可以写具体的按钮功能代码
           MessageBoxA(NULL, "点击了IDOK按钮", "提示", NULL);
           HWND ID = GetDlgItem(hDlg, IDC_EDIT1);//获取控件IDC_EDIT1的ID
           int len = GetWindowTextLength(ID);//获取内容长度
           char* str = new char[len+1];
           GetWindowText(ID, (LPWSTR)str, len+1);//获取内容
           MessageBoxA(NULL, (LPCSTR)str, "获取到编辑框IDC_EDIT1的内容", NULL);
        }
        else {
            //这里可以写具体的按钮功能代码
           // MessageBoxA(NULL, "操作了其他控件", "提示", NULL);
        }
        return TRUE;
    case WM_CLOSE:
        //窗口销毁
        DestroyWindow(hDlg);
        hwndDLG = NULL;
        return TRUE;
    }
    return FALSE;
}
//显示资源窗口,调用此接口即可载入资源窗口
void ShowDlg()
{   //创建对话框
    hwndDLG = CreateDialog(hinst, MAKEINTRESOURCE(IDHELP),
        NULL, (DLGPROC)DlgProc);
    //显示窗口
    ShowWindow(hwndDLG, SW_SHOW);
}
BOOL APIENTRY DllMain(HMODULE hModule,
    DWORD  ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        hinst = (HINSTANCE)hModule;
        ShowDlg();
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
} 万捷博客
万捷博客
 
	 
	 
	 
		