//  dsubmit.cpp
//
//  Copyright 2000 Microsoft Corporation, all rights reserved
//
//  Created   2-00  anbrad
//

#include "pch.h"
#pragma hdrstop

#include "dsubmit.h"
#include "resource.h"
#include "main.h"

const DWORD c_cbName = sizeof(g_szName)/sizeof(TCHAR);
const DWORD c_cbProblem = sizeof(g_szProblem)/sizeof(TCHAR);

INT_PTR CALLBACK DlgProcSubmit(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    DWORD cbName = c_cbName;


    switch (msg)
    {
    case WM_INITDIALOG:

        CentreWindow(hwnd);

        SendMessage (GetDlgItem(hwnd, IDC_USER), EM_LIMITTEXT, c_cbName, 0);
        SendMessage (GetDlgItem(hwnd, IDC_PROBLEM), EM_LIMITTEXT, c_cbProblem, 0);

        GetUserName(g_szName, &cbName);

        if (cbName)
        {
            SetDlgItemText(hwnd, IDC_USER, g_szName);
            SetFocus(GetDlgItem(hwnd, IDC_PROBLEM));
            return FALSE;
        }
        return TRUE;

    case WM_COMMAND:
		switch (LOWORD(wParam))
		{
        case IDOK:
            GetDlgItemText(hwnd, IDC_USER, g_szName, c_cbName);
            GetDlgItemText(hwnd, IDC_PROBLEM, g_szProblem, c_cbProblem);
            EndDialog(hwnd, TRUE);
            break;
        case IDCANCEL:
            g_szName[0] = '\0';
            g_szProblem[0] = '\0';

            EndDialog(hwnd, FALSE);
            break;
        }
        return TRUE;
    default:
        return FALSE;
    }
    return TRUE;
}

//////////////////////////////////////////////////////////////////////////////
//
//  CentreWindow
//
//  Positions a window so that it is centered in its parent.
//
//////////////////////////////////////////////////////////////////////////////

void CentreWindow(HWND hwnd)
{
	RECT   rect;
	RECT   rectParent;
	HWND   hwndParent;
	LONG   dx, dy;
	LONG   dxParent, dyParent;
	LONG   Style;

	//
	//  Get window rect.
	//
	GetWindowRect(hwnd, &rect);

	dx = rect.right - rect.left;
	dy = rect.bottom - rect.top;

	//
	//  Get parent rect.
	//
	Style = GetWindowLong(hwnd, GWL_STYLE);
	if ((Style & WS_CHILD) == 0)
	{
		hwndParent = GetDesktopWindow();
	}
	else
	{
		hwndParent = GetParent(hwnd);
		if (hwndParent == NULL)
		{
			 hwndParent = GetDesktopWindow();
		}
	}
	GetWindowRect(hwndParent, &rectParent);

	dxParent = rectParent.right - rectParent.left;
	dyParent = rectParent.bottom - rectParent.top;

	//
	//  Centre the child in the parent.
	//
	rect.left = (dxParent - dx) / 2;
	rect.top	= (dyParent - dy) / 3;

	//
	//  Move the child into position.
	//
	SetWindowPos( hwnd,
				    NULL,
				    rect.left,
				    rect.top,
				    0,
				    0,
				    SWP_NOSIZE | SWP_NOZORDER );

	SetForegroundWindow(hwnd);
}