Original Post
Hi Guys, I am playing with Parent windows and child windows. All is working as I want except I cant detect the press of IDC_MAIN_BUTTON in the child window. This is driving me crazy as I can prove that WM_CREATE and WM_CLOSE work ok in the child window but just cant detect IDC_MAIN_BUTTON. If anyone could help, this would be awesome! Thanks in advance. :)
#include<windows.h>
#include"resource.h"
#define IDC_MAIN_EDIT WM_USER+1
#define IDC_MAIN_BUTTON WM_USER+2
#define IDC_MAIN_BUTTON2 WM_USER+3
// function prototypes
void InitApp();
LRESULT CALLBACK MainProc(HWND,UINT,WPARAM,LPARAM);
LRESULT CALLBACK OtherProc(HWND,UINT,WPARAM,LPARAM);
// Global variables
HWND hWnd;
HWND other;
HMENU hMenu=NULL;
// Program entry point
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR line,int CmdShow)
{
hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENU1));
InitApp();
MSG msg;
while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// initlize application
void InitApp()
{
WNDCLASS wc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
wc.hInstance = GetModuleHandle(NULL); //hInst;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.lpfnWndProc = (WNDPROC) MainProc;
wc.lpszClassName = "Main";
wc.lpszMenuName = NULL; //(LPCSTR)hMenu;
wc.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wc);
wc.lpszClassName = "Other";
wc.lpfnWndProc = (WNDPROC) OtherProc;
wc.hbrBackground = (HBRUSH)16;
RegisterClass(&wc);
hWnd = CreateWindow("Main","Accounting Application",WS_OVERLAPPEDWINDOW,0,0,170,55,0,hMenu,GetModuleHandle(NULL),0);
other = CreateWindow("Other","Customer",WS_OVERLAPPEDWINDOW,200,200,640,480,0,0,GetModuleHandle(NULL),0);
ShowWindow(hWnd,SW_SHOWMAXIMIZED);
UpdateWindow(hWnd);
}
// Main CallBack Function
LRESULT CALLBACK MainProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
{
PostQuitMessage(0);
}
break;
case WM_CREATE:
{
}
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case ID_FILE_EXIT:
{
PostQuitMessage(0);
}
break;
case ID_MASTERFILES_CUSTOMER:
{
ShowWindow(other,SW_SHOW);
}
break;
}
}
break;
default: return DefWindowProc(hWnd,msg,wParam,lParam);
}
return 0;
}
// Other Window CallBack Function
LRESULT CALLBACK OtherProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
HGDIOBJ hfDefault=GetStockObject(DEFAULT_GUI_FONT);
HWND hButton=CreateWindowEx(NULL,"BUTTON","OK",WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,390,400,100,24,hWnd,(HMENU)IDC_MAIN_BUTTON,GetModuleHandle(NULL),NULL);
SendMessage(hButton,WM_SETFONT,(WPARAM)hfDefault,MAKELPARAM(FALSE,0));
}
break;
case WM_CLOSE:
{
ShowWindow(hWnd,SW_HIDE);
}
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDC_MAIN_BUTTON:
{
MessageBox(NULL,"Button pressed","Information",MB_ICONINFORMATION);
}
break;
}
break;
}
break;
default: return DefWindowProc(hWnd,msg,wParam,lParam);
}
return 0;
}