Hallo Community,
ich bin neu hier im Forum. Da ich keine hilfreichen Informationen via Google erhalten habe, wende ich mich nun an euch und erhoffe mir hier einige ausfschlussreiche Antworten =)
Wie der Titel schon sagt möchte ich eine GUI in einer Dll verwenden, dieso verknüpfen oder sonst irgendwie miteinander Kommunizieren lassen, sodass ich Werte, die ich in meiner GUI einlese, in der Dll verarbeiten kann.
Ein einfaches Beispiel für die GUI:
Ein Beispiel für eine Dll:
Ich würde mich sher über Antworten freuen!
Liebe Grüße
Infemo
ich bin neu hier im Forum. Da ich keine hilfreichen Informationen via Google erhalten habe, wende ich mich nun an euch und erhoffe mir hier einige ausfschlussreiche Antworten =)
Wie der Titel schon sagt möchte ich eine GUI in einer Dll verwenden, dieso verknüpfen oder sonst irgendwie miteinander Kommunizieren lassen, sodass ich Werte, die ich in meiner GUI einlese, in der Dll verarbeiten kann.
Ein einfaches Beispiel für die GUI:
Code:
#include <windows.h>
#include <stdio.h>
#include <cstdio>
HWND hwndButton;
HWND hwndEdit;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow)
{
LPWSTR szName = L"Fensterklasse";
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hI;
wc.hIcon = LoadIcon (NULL,IDI_WINLOGO);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject(GRAY_BRUSH);
//wc.hbrBackground = CreateSolidBrush(RGB(0,0,0));
wc.lpszMenuName = NULL;
wc.lpszClassName = szName;
RegisterClass(&wc);
HWND hwnd = CreateWindow(szName, L"<Graphical User Interface>", WS_SYSMENU | WS_SIZEBOX,
0,0,300,200,NULL,NULL,hI,NULL);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch(message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
SetBkMode(hdc,TRANSPARENT);
SetTextColor(hdc,RGB(0,0,0));
TextOut(hdc, 20, 20, L"Wert", 4);
EndPaint(hwnd, &ps);
return 0;
case WM_CREATE:
hwndButton = CreateWindow(L"button", L"Einlesen!", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
160, 20, 100, 18, hwnd, (HMENU)1, GetModuleHandle(0),0);
hwndEdit = CreateWindow(L"edit",L"50", WS_VISIBLE | WS_CHILD,
60,20,80,17,hwnd,0, GetModuleHandle(0),0);
break;
case WM_COMMAND:
switch(wParam)
{
case 1:
{
wchar_t text[256];
SendMessage(hwndEdit, WM_GETTEXT, 256, (LPARAM)text);
MessageBox(hwnd, text, L"Edit -- Feld", MB_OK);
break;
}
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
Ein Beispiel für eine Dll:
Code:
#include <iostream>
#include <windows.h>
#include <detours.h>
DWORD WINAPI Thread(LPVOID unused)
{
//In diesem Thread hätte ich gerne (sofern dies so Verknüpfbar ist) eine Anweisung zB:
//Die Ausgabe des Textes in dem Edit Feld der GUI
//Nach drücken des "Einlesen Button"
}
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD Reason, LPVOID Reserved)
{
switch(Reason)
{
case DLL_PROCESS_ATTACH:
MessageBox(0,L"Attached.",L"Info",0);
CreateThread(0, 0, Thread , 0, 0, 0);
break;
case DLL_PROCESS_DETACH:
MessageBox(0,L"Detached.",L"Info",0);
break;
}
return TRUE;
}
Ich würde mich sher über Antworten freuen!
Liebe Grüße
Infemo