Code:
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK EditProc(HWND, UINT, WPARAM, LPARAM);
char szClassName[] = "WindowsApp";
HINSTANCE g_hInst;
char buf[500];
HWND hEdit1,hEdit2;//the 2 edits
WNDPROC MainWindProc;//for the subclassing
int WINAPI WinMain(HINSTANCE hThisInstance,
HINSTANCE hPrevInstance, LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
g_hInst = hThisInstance;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProc;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
if(!RegisterClassEx(&wincl)) return 0;
hwnd = CreateWindowEx(0,szClassName, "Windows App",
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT, 200,130, HWND_DESKTOP,NULL,
hThisInstance,NULL );
ShowWindow(hwnd, nFunsterStil);
UpdateWindow(hwnd);
while(GetMessage(&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CREATE:
hEdit1 = CreateWindowEx(0,"EDIT","",
WS_BORDER | WS_VISIBLE | WS_CHILD,
10,20,170,30,hwnd,NULL,g_hInst,NULL);//edit 1
hEdit2 = CreateWindowEx(0,"EDIT","",
WS_BORDER | WS_VISIBLE | WS_CHILD,
10,60,170,30,hwnd,NULL,g_hInst,NULL);//edit2
MainWindProc = (WNDPROC)SetWindowLong(hEdit1,
GWL_WNDPROC,(DWORD)EditProc);//set now wnd func
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK EditProc(HWND hwnd,//The new edit proc
UINT msg, WPARAM wParam, LPARAM lParam){
switch(msg){
case WM_CHAR:
if((int) wParam == VK_RETURN){
GetWindowText(hwnd, buf, 500);
SetWindowText(hEdit2,buf);
break;
}
else
return CallWindowProc(MainWindProc,
hwnd,msg,wParam, lParam);
break;
}
return CallWindowProc(MainWindProc,hwnd, msg, wParam, lParam);
}