The WndProc function was missing the CALLBACK modifier.

diff --git a/programs/progman/dialog.c b/programs/progman/dialog.c
index f078aff..565b451 100644
--- a/programs/progman/dialog.c
+++ b/programs/progman/dialog.c
@@ -9,12 +9,12 @@
 #include "progman.h"
 static BOOL    DIALOG_BrowsePrograms(HWND, LPSTR, INT);
 static BOOL    DIALOG_BrowseSymbols(HWND, LPSTR, INT);
-static LRESULT DIALOG_NEW_DlgProc(HWND, UINT, WPARAM, LPARAM);
-static LRESULT DIALOG_COPY_MOVE_DlgProc(HWND, UINT, WPARAM, LPARAM);
-static LRESULT DIALOG_GROUP_DlgProc(HWND, UINT, WPARAM, LPARAM);
-static LRESULT DIALOG_PROGRAM_DlgProc(HWND, UINT, WPARAM, LPARAM);
-static LRESULT DIALOG_SYMBOL_DlgProc(HWND, UINT, WPARAM, LPARAM);
-static LRESULT DIALOG_EXECUTE_DlgProc(HWND, UINT, WPARAM, LPARAM);
+static BOOL CALLBACK DIALOG_NEW_DlgProc(HWND, UINT, WPARAM, LPARAM);
+static BOOL CALLBACK DIALOG_COPY_MOVE_DlgProc(HWND, UINT, WPARAM, LPARAM);
+static BOOL CALLBACK DIALOG_GROUP_DlgProc(HWND, UINT, WPARAM, LPARAM);
+static BOOL CALLBACK DIALOG_PROGRAM_DlgProc(HWND, UINT, WPARAM, LPARAM);
+static BOOL CALLBACK DIALOG_SYMBOL_DlgProc(HWND, UINT, WPARAM, LPARAM);
+static BOOL CALLBACK DIALOG_EXECUTE_DlgProc(HWND, UINT, WPARAM, LPARAM);
 
 /***********************************************************************
  *
@@ -28,13 +28,13 @@
 
 INT DIALOG_New(INT nDefault)
 {
-  WNDPROC lpfnDlg = MakeProcInstance(DIALOG_NEW_DlgProc, Globals.hInstance);
+  DLGPROC lpfnDlg = MakeProcInstance(DIALOG_NEW_DlgProc, Globals.hInstance);
   INT ret;
 
   New.nDefault = nDefault;
 
   ret = DialogBox(Globals.hInstance,  STRING_NEW_Xx,
-		  Globals.hMainWnd, (DLGPROC)lpfnDlg);
+		  Globals.hMainWnd, lpfnDlg);
   FreeProcInstance(lpfnDlg);
   return ret;
 }
@@ -44,7 +44,7 @@
  *           DIALOG_NEW_DlgProc
  */
 
-static LRESULT DIALOG_NEW_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+static BOOL CALLBACK DIALOG_NEW_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
   switch (msg)
     {
@@ -87,7 +87,7 @@
 HLOCAL DIALOG_CopyMove(LPCSTR lpszProgramName, LPCSTR lpszFromGroupName,
 		     BOOL bMove)
 {
-  WNDPROC lpfnDlg = MakeProcInstance(DIALOG_COPY_MOVE_DlgProc, Globals.hInstance);
+  DLGPROC lpfnDlg = MakeProcInstance(DIALOG_COPY_MOVE_DlgProc, Globals.hInstance);
   INT ret;
 
   CopyMove.lpszProgramName   = lpszProgramName;
@@ -96,7 +96,7 @@
 
   ret = DialogBox(Globals.hInstance,
 		  bMove ? STRING_MOVE_Xx : STRING_COPY_Xx,
-		  Globals.hMainWnd, (DLGPROC)lpfnDlg);
+		  Globals.hMainWnd, lpfnDlg);
   FreeProcInstance(lpfnDlg);
 
   return((ret == IDOK) ? CopyMove.hToGroup : 0);
@@ -107,7 +107,7 @@
  *           DIALOG_COPY_MOVE_DlgProc
  */
 
-static LRESULT DIALOG_COPY_MOVE_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+static BOOL CALLBACK DIALOG_COPY_MOVE_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
   HLOCAL hGroup;
 
@@ -177,7 +177,7 @@
 
 BOOL DIALOG_GroupAttributes(LPSTR lpszTitle, LPSTR lpszGrpFile, INT nSize)
 {
-  WNDPROC lpfnDlg = MakeProcInstance(DIALOG_GROUP_DlgProc, Globals.hInstance);
+  DLGPROC lpfnDlg = MakeProcInstance(DIALOG_GROUP_DlgProc, Globals.hInstance);
   INT ret;
 
   GroupAttributes.nSize       = nSize;
@@ -185,7 +185,7 @@
   GroupAttributes.lpszGrpFile = lpszGrpFile;
 
   ret = DialogBox(Globals.hInstance,  STRING_GROUP_Xx,
-		  Globals.hMainWnd, (DLGPROC)lpfnDlg);
+		  Globals.hMainWnd, lpfnDlg);
   FreeProcInstance(lpfnDlg);
   return(ret == IDOK);
 }
@@ -195,7 +195,7 @@
  *           DIALOG_GROUP_DlgProc
  */
 
-static LRESULT DIALOG_GROUP_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+static BOOL CALLBACK DIALOG_GROUP_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
   switch (msg)
     {
@@ -245,7 +245,7 @@
 			      INT *lpnHotKey, INT *lpnCmdShow, INT nSize)
 {
   CHAR szTmpIconFile[MAX_PATHNAME_LEN];
-  WNDPROC lpfnDlg = MakeProcInstance(DIALOG_PROGRAM_DlgProc, Globals.hInstance);
+  DLGPROC lpfnDlg = MakeProcInstance(DIALOG_PROGRAM_DlgProc, Globals.hInstance);
   INT ret;
 
   ProgramAttributes.nSize = nSize;
@@ -268,7 +268,7 @@
   lstrcpyn(ProgramAttributes.lpszTmpIconFile, lpszIconFile, MAX_PATHNAME_LEN);
 
   ret = DialogBox(Globals.hInstance,  STRING_PROGRAM_Xx,
-		  Globals.hMainWnd, (DLGPROC)lpfnDlg);
+		  Globals.hMainWnd, lpfnDlg);
   FreeProcInstance(lpfnDlg);
 
   return(ret == IDOK);
@@ -279,7 +279,7 @@
  *           DIALOG_PROGRAM_DlgProc
  */
 
-static LRESULT DIALOG_PROGRAM_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+static BOOL CALLBACK DIALOG_PROGRAM_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
   CHAR buffer[MAX_STRING_LEN];
   switch (msg)
@@ -382,7 +382,7 @@
 VOID DIALOG_Symbol(HICON *lphIcon, LPSTR lpszIconFile,
 		   INT *lpnIconIndex, INT nSize)
 {
-  WNDPROC lpfnDlg = MakeProcInstance(DIALOG_SYMBOL_DlgProc, Globals.hInstance);
+  DLGPROC lpfnDlg = MakeProcInstance(DIALOG_SYMBOL_DlgProc, Globals.hInstance);
 
   Symbol.nSize = nSize;
   Symbol.lpszIconFile = lpszIconFile;
@@ -390,7 +390,7 @@
   Symbol.lpnIconIndex = lpnIconIndex;
 
   DialogBox(Globals.hInstance, STRING_SYMBOL_Xx,
-	    Globals.hMainWnd, (DLGPROC)lpfnDlg);
+	    Globals.hMainWnd, lpfnDlg);
   FreeProcInstance(lpfnDlg);
 }
 
@@ -399,7 +399,7 @@
  *           DIALOG_SYMBOL_DlgProc
  */
 
-static LRESULT DIALOG_SYMBOL_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+static BOOL CALLBACK DIALOG_SYMBOL_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
 {
   switch (msg)
     {
@@ -473,9 +473,9 @@
 
 VOID DIALOG_Execute()
 {
-  WNDPROC lpfnDlg = MakeProcInstance(DIALOG_EXECUTE_DlgProc, Globals.hInstance);
+  DLGPROC lpfnDlg = MakeProcInstance(DIALOG_EXECUTE_DlgProc, Globals.hInstance);
   DialogBox(Globals.hInstance, STRING_EXECUTE_Xx,
-	    Globals.hMainWnd, (DLGPROC)lpfnDlg);
+	    Globals.hMainWnd, lpfnDlg);
   FreeProcInstance(lpfnDlg);
 }
 
@@ -484,7 +484,7 @@
  *           DIALOG_EXECUTE_DlgProc
  */
 
-static LRESULT DIALOG_EXECUTE_DlgProc(HWND hDlg, UINT msg,
+static BOOL CALLBACK DIALOG_EXECUTE_DlgProc(HWND hDlg, UINT msg,
 				      WPARAM wParam, LPARAM lParam)
 {
   switch (msg)