129 lines
2.6 KiB
C++
129 lines
2.6 KiB
C++
|
// 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);
|
||
|
}
|