mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
3.8 KiB
180 lines
3.8 KiB
#define NOSOUND
|
|
#define NOATOM
|
|
#define NOCLIBBOARD
|
|
#define NOMETAFILE
|
|
#define NOWH
|
|
#define NOPROFILER
|
|
#define NOKANJI
|
|
#define OEMRESOURCE
|
|
#include <windows.h>
|
|
#define CC
|
|
#include <commdlg.h>
|
|
|
|
// #define AUTOSUBCLASS
|
|
|
|
HANDLE hinstApp;
|
|
HWND hwndApp;
|
|
TCHAR szAppName[] = TEXT( "Test" );
|
|
|
|
#include "ctl3d.h"
|
|
|
|
BOOL FAR PASCAL DialogProc(HWND hdlg, UINT wm, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
BOOL fResult;
|
|
void FileOpen();
|
|
|
|
switch(wm)
|
|
{
|
|
default:
|
|
return FALSE;
|
|
case WM_COMMAND:
|
|
if(wParam == IDOK)
|
|
{
|
|
EndDialog(hdlg, fResult);
|
|
}
|
|
else if (wParam == 1000)
|
|
{
|
|
MessageBox(hdlg, TEXT( "asdf" ),TEXT( "asdf" ), MB_OK);
|
|
FileOpen(hdlg);
|
|
}
|
|
else
|
|
{
|
|
HWND hwndT;
|
|
|
|
hwndT = GetDlgItem(hdlg, wParam-1000);
|
|
// hwndT = GetDlgItem(hdlg, wParam);
|
|
if (hwndT != NULL)
|
|
{
|
|
// ShowWindow(hwndT, IsWindowVisible(hwndT) ? SW_HIDE : SW_SHOW);//
|
|
EnableWindow(hwndT, !IsWindowEnabled(hwndT));
|
|
}
|
|
}
|
|
break;
|
|
#ifndef AUTOSUBCLASS
|
|
// NOTNEEDED because we call Ctl3dAutoSubclass
|
|
#ifdef WIN32
|
|
case WM_CTLCOLORMSGBOX:
|
|
case WM_CTLCOLOREDIT:
|
|
case WM_CTLCOLORLISTBOX:
|
|
case WM_CTLCOLORBTN:
|
|
case WM_CTLCOLORDLG:
|
|
case WM_CTLCOLORSCROLLBAR:
|
|
case WM_CTLCOLORSTATIC:
|
|
#else
|
|
case WM_CTLCOLOR:
|
|
#endif // WIN32
|
|
return (BOOL) Ctl3dCtlColorEx(wm, wParam, lParam);
|
|
case WM_INITDIALOG:
|
|
fResult = Ctl3dEnabled();
|
|
fResult = Ctl3dSubclassDlg(hdlg, CTL3D_ALL);
|
|
break;
|
|
case WM_SYSCOLORCHANGE:
|
|
Ctl3dColorChange();
|
|
#endif
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL Test()
|
|
{
|
|
DLGPROC lpproc;
|
|
BOOL f;
|
|
|
|
lpproc = MakeProcInstance( DialogProc, hinstApp);
|
|
f = DialogBox(hinstApp, MAKEINTRESOURCE(100), hwndApp, lpproc);
|
|
FreeProcInstance(lpproc);
|
|
return f;
|
|
}
|
|
|
|
LRESULT FAR PASCAL TestWndProc(HWND hwnd, UINT wm, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
return DefWindowProc(hwnd, wm, wParam, lParam);
|
|
}
|
|
|
|
|
|
|
|
TCHAR szFilterSpec [128] = /* file type filters */
|
|
TEXT( "Text Files (*.TXT)\0*.TXT\0All Files (*.*)\0*.*\0" );
|
|
|
|
TCHAR szFileName[120];
|
|
TCHAR szFileTitle[120];
|
|
|
|
BOOL fFirst;
|
|
|
|
BOOL FAR PASCAL OpenHook(HWND hwnd, UINT wm, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch (wm)
|
|
{
|
|
#ifndef AUTOSUBCLAS
|
|
// NOTNEEDED because we call Ctl3dAutoSubclass
|
|
#ifdef WIN32
|
|
case WM_CTLCOLORMSGBOX:
|
|
case WM_CTLCOLOREDIT:
|
|
case WM_CTLCOLORLISTBOX:
|
|
case WM_CTLCOLORBTN:
|
|
case WM_CTLCOLORDLG:
|
|
case WM_CTLCOLORSCROLLBAR:
|
|
case WM_CTLCOLORSTATIC:
|
|
#else
|
|
case WM_CTLCOLOR:
|
|
#endif // WIN32
|
|
return (BOOL) Ctl3dCtlColorEx(wm, wParam, lParam);
|
|
#endif
|
|
case WM_INITDIALOG:
|
|
// We must call this to subclass the directory listbox even
|
|
// if the app calls Ctl3dAutoSubclass (commdlg bug)
|
|
Ctl3dSubclassDlg(hwnd, CTL3D_ALL);
|
|
break;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
void FileOpen(HWND hwndOwner)
|
|
{
|
|
OPENFILENAME ofn;
|
|
|
|
|
|
/* fill in non-variant fields of OPENFILENAME struct. */
|
|
ofn.lStructSize = sizeof(OPENFILENAME);
|
|
ofn.hwndOwner = hwndOwner;
|
|
ofn.lpstrFilter = szFilterSpec;
|
|
ofn.lpstrCustomFilter = NULL;
|
|
ofn.nMaxCustFilter = 0;
|
|
ofn.nFilterIndex = 1;
|
|
ofn.lpstrFile = szFileName;
|
|
ofn.nMaxFile = 120;
|
|
ofn.lpstrInitialDir = NULL;
|
|
ofn.lpstrFileTitle = NULL;
|
|
ofn.nMaxFileTitle = 120;
|
|
ofn.lpstrTitle = TEXT( "yahoo" );
|
|
ofn.lpstrDefExt = TEXT( "TXT" );
|
|
ofn.Flags = OFN_ENABLEHOOK;
|
|
ofn.lpfnHook = MakeProcInstance(OpenHook, hinstApp);
|
|
ofn.lCustData = 0;
|
|
ofn.lpTemplateName = 0;
|
|
|
|
fFirst = TRUE;
|
|
GetOpenFileName ((LPOPENFILENAME)&ofn);
|
|
FreeProcInstance(ofn.lpfnHook);
|
|
}
|
|
|
|
|
|
int PASCAL WinMain(hInstance, hPrevInstance, lpszCmdLine, nCmdShow)
|
|
HINSTANCE hInstance, hPrevInstance;
|
|
LPSTR lpszCmdLine;
|
|
int nCmdShow;
|
|
|
|
{
|
|
hinstApp = hInstance;
|
|
Ctl3dRegister(hInstance);
|
|
#ifdef AUTOSUBCLASS
|
|
Ctl3dAutoSubclass(hInstance);
|
|
#endif
|
|
Test();
|
|
Ctl3dUnregister(hInstance);
|
|
return 0;
|
|
}
|