#include <windows.h>
#include <iostream>
// Global variables for window handles
HWND hWndMain;
HWND hWndChild;
// Function to create a console window
void CreateConsole() {
// Allocate a console for the calling process
AllocConsole();
// Redirect standard output to the console
FILE* pFile;
freopen_s(&pFile, "CONOUT$", "w", stdout);
// Optionally, you can redirect standard input and error as well
freopen_s(&pFile, "CONIN$", "r", stdin);
freopen_s(&pFile, "CONOUT$", "w", stderr);
std::cout << "Console created." << std::endl;
}
// Function to handle window messages
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// Draw a simple rectangle in the child window
RECT rect = { 50, 50, 200, 200 };
FillRect(hdc, &rect, (HBRUSH)(COLOR_WINDOW + 1));
EndPaint(hwnd, &ps);
}
return 0;
case WM_LBUTTONDOWN:
{
POINT points[2];
points[0].x = LOWORD(lParam);
points[0].y = HIWORD(lParam);
points[1].x = points[0].x + 50; // Just an example offset
points[1].y = points[0].y + 50;
std::cout << "Source window coordinates:" << std::endl;
std::cout << "Point 0: (" << points[0].x << ", " << points[0].y << ")" << std::endl;
std::cout << "Point 1: (" << points[1].x << ", " << points[1].y << ")" << std::endl;
// Map points from the main window to the child window
MapWindowPoints(hWndMain, hWndChild, points, 2);
std::cout << "Target window coordinates:" << std::endl;
std::cout << "Point 0: (" << points[0].x << ", " << points[0].y << ")" << std::endl;
std::cout << "Point 1: (" << points[1].x << ", " << points[1].y << ")" << std::endl;
}
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
// Function to register and create windows
void CreateWindows(HINSTANCE hInstance) {
// Register the main window class
const char CLASS_NAME[] = "Main Window Class";
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
// Create the main window
hWndMain = CreateWindowEx(
0,
CLASS_NAME,
"Main Window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL
);
ShowWindow(hWndMain, SW_SHOW);
UpdateWindow(hWndMain);
// Create the child window
hWndChild = CreateWindowEx(
0,
CLASS_NAME,
"Child Window",
WS_CHILD | WS_VISIBLE,
50, 50, 300, 300,
hWndMain,
NULL,
hInstance,
NULL
);
}
// Entry point of the program
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
MSG msg;
// Create a console window for output
CreateConsole();
CreateWindows(hInstance);
// Main message loop
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
Build apps, not infrastructure.
Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)