Hi to all,
I woud like to know how to destroy only a child window?I am Using Dev-C++ WIN32
Thank you for reading.What message to do i need?

Recommended Answers

All 9 Replies

This is Test.cpp

I can compile it but not working as i wanted to work .
I want to first i see a child window and then destroy it and want to show parent.

#include <windows.h>
#include <winuser.h>
#include "resource.h"

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd,lo;    /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = MAKEINTRESOURCE(IDD_FILE);                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd=CreateWindow(  /* Extended possibilites for variation */
           szClassName,         /* Classname */
        "WindowP",       /* Title Text */
        SW_SHOW , /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
         0,        /* The window is a child-window to desktop */
         NULL,              /* No menu */
         NULL,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

lo= CreateWindowEx (
WS_EX_COMPOSITED,
szClassName,
"WindowC",
WS_BORDER,
CW_USEDEFAULT,
CW_USEDEFAULT,
200,
200,
hwnd,
NULL,
NULL,
NULL);
    /* Make the window visible on the screen */
    ShowWindow (lo, SW_SHOW);
    

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
  {
                
                case WM_COMMAND:
                     {
                                
                 switch (LOWORD(wParam))
                 {
             
                 case IDD_FILE_EXIT:{
                        PostMessage(hwnd,WM_CLOSE,0,0);
                        ShowWindow(hwnd,SW_SHOW); 
                        }
                case IDD_HELP_ABOUT:
                     
                     
                default:;
                }
                }
                 
         case WM_DESTROY:
        PostQuitMessage(0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

resource.h

//{{NO_DEPENDENCIES}}
#include <winuser.h>
#include <windows.h>

#define IDD_FILE      6

#define IDD_HELP_ABOUT 3

#define IDD_FILE_EXIT  2

Test_rc.rc

#define "resource.h"

#include <windows.h>
#include <winuser.h>

#define IDD_FILE 6
#define IDD_FILE_EXIT 2
#define IDD_HELP_ABOUT 3


IDD_FILE MENU 
BEGIN

      POPUP "&EXIT"

BEGIN
MENUITEM "&ODMAH",IDD_FILE_EXIT
END

POPUP "HE&LP"
BEGIN 
MENUITEM "Abou&t",IDD_HELP_ABOUT
END
END

>>PostMessage(hwnd,WM_CLOSE,0,0);
You may be attempting to close the wrong window. Try making lo global and using that instead of the hwnd that is pass to WindowProcedure(). Not sure if that will fix the problem but its worth a try.

this is without global lo


102 C:\Documents and Settings\USER\Desktop\Test\Test.cpp

`lo' undeclared (first use this function)

I do not know how to set global lo.

>> do not know how to set global lo
delete lo from line 18 and declare it on line 8. Leave hwnd where it is on line 18.

OK that working,but he did not show me the parent window.

I'm sorry but your problem is somewhat more complicated than I have time to work on this evening or tomorrow. Hope someone else can help you out now.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.