// dllclient.c #include #include "resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); BOOL InitApp(HINSTANCE); BOOL InitInstance(HINSTANCE, int); char szClassName[] = "dlltest"; //À©µµ¿ì Ŭ·¡½º char *titleName = "DLL test"; int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { MSG msg; if (!InitApp(hCurInst)) return FALSE; if (!InitInstance(hCurInst, nCmdShow)) return FALSE; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //À©µµ¿ì¡¤ Ŭ·¡½ºÀÇ µî·Ï BOOL InitApp(HINSTANCE hInst) { WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; //ÇÁ·Î½ÃÀú¸í wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; //ÀνºÅÏÆ® wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); wc.lpszClassName = (LPCSTR)szClassName; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); return (RegisterClassEx(&wc)); } //À©µµ¿ìÀÇ »ý¼º BOOL InitInstance(HINSTANCE hInst, int nCmdShow) { HWND hWnd; hWnd = CreateWindow(szClassName, titleName, //ŸÀÌƲ¹Ù¿¡ ÀÌ À̸§ÀÌ Ç¥½ÃµË´Ï´Ù WS_OVERLAPPEDWINDOW, //À©µµ¿ìÀÇ Á¾·ù CW_USEDEFAULT, //X ÁÂÇ¥ CW_USEDEFAULT, //Y ÁÂÇ¥ 200, //Æø 230, //³ôÀÌ NULL, NULL, //¸Þ´º ÇÚµé, Ŭ·¡½º ¸Þ´º¸¦ »ç¿ëÇÒ ¶§´ÂNULL hInst, //ÀνºÅÏÆ® ÇÚµé NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { typedef BOOL (*PTESTFUNC)(HWND); HINSTANCE hMyLib; PTESTFUNC fpTestFunc; switch (msg) { case WM_COMMAND : switch(LOWORD(wParam)) { case IDM_DLG: hMyLib = LoadLibrary( "dllserver.DLL"); if (hMyLib) { fpTestFunc = (PTESTFUNC)GetProcAddress(hMyLib, "DllDlg"); fpTestFunc(hWnd); FreeLibrary(hMyLib); } return 0; } break; case WM_CLOSE: DestroyWindow(hWnd); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return (DefWindowProc(hWnd, msg, wParam, lParam)); }