Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: DEV-C++, ikkuna koko ruudulle?

jone2712 [07.02.2025 21:05:59]

#

Olen vaihtamassa Borlandin C++ kääntäjää DEV-C++ kääntäjään. Borland ei sellaisenaan aivan ole yhteensopiva, tai vika on koodissa, jonka Borland onnistuu kiertämään ja kääntämään.

Millä manööverillä nuo turhat ja rumat reunat saa pois niin, että jäisi koko näytön tyhjä musta piirtoalue ilman turhia reunoja?

#include <windows.h>

int __win_maxx;
int __win_maxy;
HDC __win_hdc;
HWND __win_hwnd;
int OwnMain(void);

LOGPEN log_pen;
int ProcActive;
int MousePosX;
int MousePosY;
int __win_ctrl;
char SenMerkki;

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
	switch (Message)
    {
		case WM_DESTROY:
        {
			PostQuitMessage(0);
			break;
		}

        case WM_PAINT:
        {
            Sleep(100);
            ProcActive=11;
        }

		default:
			return DefWindowProc(hwnd, Message, wParam, lParam);
	}
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	WNDCLASSEX wc;
	MSG msg;
    ProcActive=0x00;

	memset(&wc, 0, sizeof(wc));
	wc.cbSize		 = sizeof(WNDCLASSEX);
	wc.lpfnWndProc	 = WndProc;
	wc.hInstance	 = hInstance;
	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);
    wc.style         = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;

	wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	wc.lpszClassName = "WindowClass";
	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION);
	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION);

	if (!RegisterClassEx(&wc)) {
		MessageBox(NULL, "Window Registration Failed!",
        "Error!", MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}

    __win_maxx=GetSystemMetrics(SM_CXSCREEN);
    __win_maxy=GetSystemMetrics(SM_CYSCREEN);

	__win_hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,
        "WindowClass", "Caption",
        WS_CLIPSIBLINGS|WS_CLIPCHILDREN|WS_POPUP,
		CW_USEDEFAULT*0, /* x */
		CW_USEDEFAULT*0, /* y */
		__win_maxx, /* width */
		__win_maxy-32, /* height */
		NULL,NULL,hInstance,NULL);

	if (__win_hwnd == NULL)
    {
		MessageBox(NULL, "Window Creation Failed!",
        "Error!", MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}

    __win_hdc=GetDC(__win_hwnd);
    if (!__win_hdc) return 0x00;

    memset(&log_pen, 0, sizeof(LOGPEN));
    log_pen.lopnStyle = (UINT) PS_SOLID;

    ShowWindow(__win_hwnd, SW_SHOW);
    SetForegroundWindow(__win_hwnd);
    SetFocus(__win_hwnd);

	while (GetMessage(&msg, NULL, 0, 0) > 0)
    {
		TranslateMessage(&msg);
		DispatchMessage(&msg);
        if (ProcActive == 11)
        {
        	OwnMain();
            return 0;
        }
	}
	return msg.wParam;
}

int OwnMain(void)
{
	Sleep(4096);
    return 0;
}

Grez [08.02.2025 12:38:06]

#

Tarkoitatko että miten määrittämäsi ikkunan kehyksen saa pois?

lainaus:

WS_EX_CLIENTEDGE
0x00000200L
The window has a border with a sunken edge.

En nyt jaksa lähteä kokeilemaan, mutta kenties jos laitat WS_EX_CLIENTEDGE tilalle jomman kumman seuraavista
- WS_EX_APPWINDOW (näkyy taskbarissa)
- WS_EX_TOOLWINDOW (ei näy)

jone2712 [09.02.2025 16:32:07]

#

Pitkällisen ja vaivalloisen yrittämisen jälkeen sain full screenin toimimaan Borlandissa ja DEV-C++:ssa. Piirtofunktiot toimivat kutakuinkin samalla tavalla kuin Borlandin legendaarisessa BGI:ssä.

Näin helppoa on Windows ohjelmointi, kun Windows mössö on koodattu omaan yksiköönsä, ja joka kutsuu OwnMain-funktiota, eikä anna enää kontrollia Windowsille, paitsi siinä tapauksessa, kun OwnMain lopettaa sovelluksen ajon.

void zoomaa(skaala &S)
{
    ZPoint Zx;
    ZPoint Zy;
    int ctrl;

    while (1)
    {
    	Sleep(256);
    	ctrl=updateCtrl();
        if (ctrl&MouseMove)
        {
        	if (ctrl&LeftButtonDown)
        	{
        		Zx.paivita(MousePosX, MousePosY);
        	}
        	else if (ctrl&RightButtonDown)
        	{
        		Zy.paivita(MousePosX, MousePosY);
        	}
        }
        if (ctrl&Enter)
        {
        	break;
        }
    }

    S.set(Zx.x, Zx.y, Zy.x, Zy.y);
}

int OwnMain(void)
{
	skaala S;
    zoomaa(S);
    Sleep(1000);
    return 0;
}

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta