#define _CRT_SECURE_NO_WARNINGS //msvc doesn't like freopen
#include <Windows.h>
#include <iostream>
#include <vector>
HWND MainWindowHWND;
HMENU hMenu;
HMENU hMenuPopupFile;
HMENU hMenuPopupAbout;
HMODULE hInstance;
HWND ScriptTextBoxHWND;
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
#define MYMENU_EXIT (WM_APP + 101)
#define MYMENU_ABOUTMB (WM_APP + 102)
#define MYMENU_EXECUTECODE (WM_APP + 103)
#define MYMENU_SCRIPTTEXTBOX (WM_APP + 104)
#define MYMENU_CLEARSCRIPT (WM_APP + 105)
#define MYMENU_MINIMIZE (WM_APP + 109)
LRESULT CALLBACK DLLWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
switch (wParam)
{
case MYMENU_EXIT:
if (MessageBox(0, "Are you sure you want to close stigma?", "wtf r u doin", MB_YESNO) == IDYES)
SendMessage(hwnd, WM_CLOSE, 0, 0);
break;
case MYMENU_MINIMIZE:
ShowWindow(hwnd, SW_MINIMIZE);
break;
case MYMENU_ABOUTMB:
MessageBox(hwnd, "Original script by 9/11\nProgram by [FaZe] GabeN (aka Asymmetry)", "About", MB_OK);
break;
case MYMENU_CLEARSCRIPT:
SetDlgItemText(hwnd, MYMENU_SCRIPTTEXTBOX, "");
break;
case MYMENU_EXECUTECODE:
int length;
length = SendMessage(ScriptTextBoxHWND, WM_GETTEXTLENGTH, 0, 0);
if (length == -1)
break;
char buff[80896]; // = 1024 * 79
char len[255];
_itoa_s(length, len, 10);
GetDlgItemText(hwnd, MYMENU_SCRIPTTEXTBOX, buff, length + 1);
//exec_script((void*)logservice, buff); //call LogService:ExecuteScript
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
BOOL RegisterDLLWindowClass(char *szClassName)
{
WNDCLASSEX wc;
wc.hInstance = GetModuleHandle(NULL);
wc.lpszClassName = szClassName;
wc.lpfnWndProc = DLLWindowProc;
wc.style = CS_DBLCLKS;
wc.cbSize = sizeof(WNDCLASSEX);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.lpszMenuName = "Test";
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
if (!RegisterClassEx(&wc))
return 0;
return 1;
}
void RefreshContextMenu(HMENU hhMenu)
{
hMenuPopupFile = CreatePopupMenu();
AppendMenu(hMenuPopupFile, MF_STRING, MYMENU_MINIMIZE, TEXT("Minimize"));
AppendMenu(hMenuPopupFile, MF_STRING, MYMENU_EXIT, TEXT("Exit"));
AppendMenu(hhMenu, MF_POPUP, (UINT_PTR)hMenuPopupFile, TEXT("File"));
hMenuPopupAbout = CreatePopupMenu();
AppendMenu(hMenuPopupAbout, MF_STRING, MYMENU_ABOUTMB, TEXT("About"));
AppendMenu(hhMenu, MF_POPUP, (UINT_PTR)hMenuPopupAbout, TEXT("Help"));
}
HMENU CreateDLLWindowMenu()
{
HMENU heyMenu;
heyMenu = CreateMenu();
if (heyMenu == NULL)
return FALSE;
RefreshContextMenu(heyMenu);
return heyMenu;
}
void CreateFWindows()
{
CreateWindow("BUTTON", "EXE", WS_CHILD | WS_VISIBLE, 2, 411, 308, 361, MainWindowHWND, (HMENU)MYMENU_EXECUTECODE, hInstance, NULL);
CreateWindow("BUTTON", "CLEAR", WS_CHILD | WS_VISIBLE, 308, 411, 12, 361, MainWindowHWND, (HMENU)MYMENU_CLEARSCRIPT, hInstance, NULL);
ScriptTextBoxHWND = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | ES_MULTILINE | WS_BORDER | WS_VSCROLL, 2, 12, 437, 302, MainWindowHWND, (HMENU)MYMENU_SCRIPTTEXTBOX, hInstance, 0);
SendMessage(ScriptTextBoxHWND, EM_SETLIMITTEXT, 0x7FFFFFFE, 0);
}
void ShowForm()
{
hInstance = GetModuleHandle(NULL);
hMenu = CreateDLLWindowMenu();
RegisterDLLWindowClass("DLLWindowClass");
MainWindowHWND = CreateWindowEx(WS_EX_TOPMOST, "DLLWindowClass", "Tutorial GUI For ROBLOX v1", WS_EX_PALETTEWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 439, 486, NULL, hMenu, hInstance, NULL);
CreateFWindows();
ShowWindow(MainWindowHWND, SW_SHOWNORMAL);
MSG messages;
while (GetMessage(&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
}
int main() {
ShowForm();
return 0; // do that first.
}