Var det en løsning at fjerne hele "caption" inklusive system-menuen (den øverst til venstre) og X'et?
Er det en standard Win32 Api applikation?
Det er en standard Win32 Api applikation ja.
Ved ikke helt, for ville gerne have så folk kunne minimere programmet igen, og det ville jo ikke beskytte mod alt+f4?
Hvis du returnerer 0 ved WM_CLOSE uden at kalde DefWindowProc burde det virke.
Du kan kalde DestroyWindow når vinduet skal lukkes.
Et eksempel:
#include <windows.h>
#define IDC_BUTTON1 1200
HINSTANCE InstanceHandle;
LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
CreateWindow("BUTTON",
"Close Me", // Button Text
WS_CHILD | WS_VISIBLE, // Style
5, 30, 100, 30, // position
hwndDlg, // Owner
(HMENU)(IDC_BUTTON1), // ID
InstanceHandle, // The application
0);
break;
case WM_CLOSE:
return 0;
case WM_COMMAND:
if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == IDC_BUTTON1)
{
DestroyWindow(hwndDlg);
}
break;
}
return DefWindowProc(hwndDlg, msg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, INT)
{
InstanceHandle = hInstance;
WNDCLASS wc;
memset(&wc, 0, sizeof(WNDCLASS));
wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wc.lpfnWndProc = DialogProc;
wc.hInstance = InstanceHandle;
wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1);
wc.lpszClassName = "WhateverClass";
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
if(!RegisterClass(&wc))
return FALSE;
HWND WindowHandle = CreateWindow("WhateverClass",
"Whatever", // Caption text
WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU,
100, 100, 150, 100, // Position
NULL,
NULL,
InstanceHandle,
0);
MSG Msg;
while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0)
{
if(!IsDialogMessage(WindowHandle, &Msg))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
return 0;
}