|
|
1.1 root 1: /************************************************************************\
2: *
3: * MODULE: THE_DLL.C
4: *
5: * PURPOSE: To provide a simple DLL template. This module contains a
6: * generic DLL entry point (replacing the LIbMain & WEP of
7: * Win16), four exported skeleton functions with varying
8: * parameter lists, and one exported "DLLDialogBox" function
9: * which loads a dialog template from the attached resource
10: * file.
11: *
12: * FUNCTIONS: DLLEntryPoint() - DLL entry point
13: * DLLFunction1() - skeleton function with no inputs
14: * DLLFunction2() - skeleton function with int input
15: * DLLFunction3() - skeleton function with HANDLE input
16: * DLLFunction4() - skeleton function with HWND input
17: * DLLDialogBox() - calls DialogBox using hndParent param
18: * DLLDlgProc() - dialog window procedure
19: *
20: * COMMENTS: Another name may be used for the entry point
21: * ("DLLEntryPoint" is only an example). If no initialization
22: * or notification is required in a DLL, the DLL entry point
23: * may be omitted. In either case, make sure to modify the
24: * "-entry:DLLEntryPoint" part of the DLL's link line in the
25: * makefile; either substitute the new entry point name, or
26: * delete the line altogether (if omitting the entry point).
27: *
28: \************************************************************************/
29:
30: #include <windows.h>
31: #include "the_dll.h"
32:
33:
34:
35: /************************************************************************\
36: *
37: * FUNCTION: DLLEntryPoint
38: *
39: * INPUTS: hDLL - handle of DLL
40: * dwReason - indicates why DLL called
41: * lpReserved - reserved
42: *
43: * RETURNS: TRUE (always, in this example.)
44: *
45: * Note that the retuRn value is used only when
46: * dwReason = DLL_PROCESS_ATTACH.
47: *
48: * Normally the function would return TRUE if DLL initial-
49: * ization succeeded, or FALSE it it failed.
50: *
51: * GLOBAL VARS: hMod - handle of DLL (initialized when PROCESS_ATTACHes)
52: *
53: * COMMENTS: The function will display a dialog box informing user of
54: * each notification message & the name of the attaching/
55: * detaching process/thread. For more information see
56: * "DLLEntryPoint" in the Win32 API reference.
57: *
58: \************************************************************************/
59:
60: BOOL DLLEntryPoint (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved)
61: { switch (dwReason)
62: { case DLL_PROCESS_ATTACH:
63: { char buf[BUFSIZE];
64:
65: /******************************************************************\
66: * DLL is attaching to the address space of the current process.
67: \******************************************************************/
68:
69: hMod = hDLL;
70: GetModuleFileName (NULL, (LPTSTR) buf, BUFSIZE);
71: MessageBox (NULL, buf, "THE_DLL: Process attaching", MB_OK);
72: break;
73: }
74: case DLL_THREAD_ATTACH:
75:
76: /******************************************************************\
77: * A new thread is being created in the current process.
78: \******************************************************************/
79:
80: MessageBox (NULL, "THE_DLL: Thread attaching", "", MB_OK);
81: break;
82: case DLL_THREAD_DETACH:
83:
84: /******************************************************************\
85: * A thread is exiting cleanly.
86: \******************************************************************/
87:
88: MessageBox (NULL, "THE_DLL: Thread detaching", "", MB_OK);
89: break;
90: case DLL_PROCESS_DETACH:
91:
92: /******************************************************************\
93: * The calling process is detaching the DLL from its address space.
94: \******************************************************************/
95:
96: MessageBox (NULL, "THE_DLL: Process detaching", "", MB_OK);
97: break;
98: }
99: return TRUE;
100: UNREFERENCED_PARAMETER(hDLL);
101: UNREFERENCED_PARAMETER(lpReserved);
102: }
103:
104:
105:
106: /************************************************************************\
107: *
108: * FUNCTION: DLLFunction1
109: *
110: * RETURNS: 1
111: *
112: \************************************************************************/
113:
114: INT DLLFunction1 ()
115: { MessageBeep (0);
116: return 1;
117: }
118:
119:
120:
121: /************************************************************************\
122: *
123: * FUNCTION: DLLFunction2
124: *
125: * INPUTS: i - a dummy int param
126: *
127: * RETURNS: 1
128: *
129: \************************************************************************/
130:
131: INT DLLFunction2 (int i)
132: { MessageBeep (0);
133: return 1;
134: UNREFERENCED_PARAMETER(i);
135: }
136:
137:
138:
139: /************************************************************************\
140: *
141: * FUNCTION: DLLFunction3
142: *
143: * INPUTS: h - a dummy HANDLE param
144: *
145: * RETURNS: 1
146: *
147: \************************************************************************/
148:
149: INT DLLFunction3 (HANDLE h)
150: { MessageBeep (0);
151: return 1;
152: UNREFERENCED_PARAMETER(h);
153: }
154:
155:
156:
157: /************************************************************************\
158: *
159: * FUNCTION: DLLFunction4
160: *
161: * INPUTS: i - a dummy HWND param
162: *
163: * RETURNS: 1
164: *
165: \************************************************************************/
166:
167: INT DLLFunction4 (HWND hwnd)
168: { MessageBeep (0);
169: return 1;
170: UNREFERENCED_PARAMETER(hwnd);
171: }
172:
173:
174:
175: /************************************************************************\
176: *
177: * FUNCTION: DLLDialogBox
178: *
179: * INPUTS: hwndPArent - parent of the dialog box to display
180: *
181: * RETURNS: 1
182: *
183: \************************************************************************/
184:
185: INT DLLDialogBox (HWND hwndParent)
186: { DialogBox (hMod, (LPTSTR) "DLLDlg", hwndParent, DLLDlgProc);
187: return 1;
188: }
189:
190:
191:
192: /************************************************************************\
193: *
194: * FUNCTION: DLLDlgProc (standard dialog procedure INPUTS/RETURNS)
195: *
196: \************************************************************************/
197:
198: BOOL DLLDlgProc (HWND hDlg, UINT msg, UINT wParam, LONG lParam)
199: { switch (msg)
200: { case WM_INITDIALOG:
201: return (TRUE);
202: case WM_COMMAND:
203: EndDialog(hDlg, TRUE);
204: return (TRUE);
205: }
206: return (FALSE);
207: UNREFERENCED_PARAMETER(hDlg);
208: UNREFERENCED_PARAMETER(wParam);
209: UNREFERENCED_PARAMETER(lParam);
210: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.