#include "stdafx.h"
#include "stdio.h"
#include "windows.h"
#include "resource.h"
HINSTANCE g_hInstance;
LRESULT CALLBACK Windowproc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}BOOL CALLBACK SettingProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch(uMsg)
{
case WM_SYSCOMMAND:
if(SC_CLOSE==wParam) {EndDialog(hwndDlg,101); return TRUE;}
break;
}
return false;
}void OnCreate_c(HWND hWnd)
{
INT nRet = DialogBox(g_hInstance,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,SettingProc);
}void OnSysmenu(HWND hWnd)
{
HMENU hSysMenu = GetSystemMenu(hWnd,TRUE);
AppendMenu(hSysMenu,MF_SEPARATOR,0,"");
AppendMenu(hSysMenu,MF_STRING,1005,"myDialog");
}void OnSyscommand(HWND hWnd,WPARAM wParam)
{
switch(LOWORD(wParam))
{
case 1005:
OnCreate_c(hWnd);
break;
}
}LRESULT CALLBACK ChildProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{ switch(uMsg)
{
case WM_CREATE:
OnSysmenu(hWnd);
break;
case WM_SYSCOMMAND:
OnSyscommand(hWnd,wParam);
break;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam);
}void Register(LPSTR pszClassName, WNDPROC pszWndProc )
{
WNDCLASSEX obj={0};
obj.cbSize = sizeof(obj);
obj.cbClsExtra=0;
obj.cbWndExtra=0;
obj.hbrBackground=(HBRUSH)(COLOR_GRAYTEXT+2);
obj.hCursor=NULL;
obj.hIcon=NULL;
obj.hIconSm=NULL;
obj.hInstance=g_hInstance;
obj.lpfnWndProc=pszWndProc;
obj.lpszClassName=pszClassName;
obj.lpszMenuName=NULL;
obj.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC;
RegisterClassEx(&obj);
}void Register_o(LPSTR pszClassName, WNDPROC pszWndProc )
{
WNDCLASSEX obj={0};
obj.cbSize = sizeof(obj);
obj.cbClsExtra=0;
obj.cbWndExtra=0;
obj.hbrBackground=(HBRUSH)(COLOR_GRAYTEXT+2);
obj.hCursor=NULL;
obj.hIcon=NULL;
obj.hIconSm=NULL;
obj.hInstance=g_hInstance;
obj.lpfnWndProc=pszWndProc;
obj.lpszClassName=pszClassName;
obj.lpszMenuName=NULL;
obj.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC;
RegisterClassEx(&obj);
}HWND Create(LPSTR pszClassName,LPSTR pszWndName)
{
HWND hWnd= CreateWindowEx(NULL,pszClassName,pszWndName,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,NULL);
return hWnd;
}HWND CreateChild(LPSTR pszClassName,LPSTR pszWndName,HWND hParent)
{
HMENU hMenu = LoadMenu(g_hInstance,MAKEINTRESOURCE(IDR_MENU1));
HWND hChild = CreateWindowEx(0,pszClassName,pszWndName,WS_CHILD|WS_VISIBLE|WS_OVERLAPPEDWINDOW,100,100,350,350,hParent,hMenu,g_hInstance,NULL);
return hChild;
}void Display(HWND hWnd)
{
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
}void Message(HWND hWnd)
{
MSG nMsg={0};
while(GetMessage(&nMsg,NULL,0,0))
{
TranslateMessage(&nMsg);
DispatchMessage(&nMsg);
}
}int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
g_hInstance=hInstance;
Register("Main", (WNDPROC)Windowproc);
Register_o("child", (WNDPROC)ChildProc);
HWND hMain = Create("Main","Application");
HWND hChild = CreateChild("child","Hello,Client",hMain);
Display(hMain);
Message(hMain);
return 0;
}