home *** CD-ROM | disk | FTP | other *** search
- // demoplugin.cpp : Defines the entry point for the DLL application.
- //
-
-
- #include "stdafx.h"
-
- #include <stdio.h>
- #include "../../TlenSources/plugin/plugin_struct.h"
- #include "../../TlenSources/plugin/plugin_bar.h"
- #include "AggressiveOptimize.h"
- #include "resource.h"
-
- HINSTANCE hInst;
- TLENPLUGINFUNCTIONS *tlen_functions;
- HWND bar_window[3];
- HBRUSH hBrush = NULL;
-
- TLENPLUGININFO pluginInfo={
- sizeof(TLENPLUGININFO),
- "Doklejane okienka - VC++",
- PLUGIN_API_VERSION,
- MAKE_DWORD_VERSION(1,2,3,4),
- "Plugin tworzy trzy okienka, kt≤re zostaj╣ przyklejone do g│≤wnego okna tlenu.",
- "⌐ Prawa autorskie",
- "Producent",
- "E@mail",
- "http://www",
- 0,
- 0,
- 0,
- 0
- };
-
- extern "C" __declspec(dllexport) TLENPLUGININFO* GetPluginInfo(DWORD TlenVersion);
- extern "C" __declspec(dllexport) int LoadPlugin(TLENPLUGINFUNCTIONS *tlen_functions);
- extern "C" __declspec(dllexport) int UnloadPlugin(void);
-
-
-
- int prefDialog(HWND hWnd, UINT message, WPARAM wparam, LPARAM lparam)
- {
- switch (message) {
-
- case WM_INITDIALOG:
- {
- if (!hBrush) hBrush=::CreateSolidBrush(RGB(150, 220, 220));
- break;
- }
-
- case WM_ERASEBKGND:
- {
-
- RECT rc;
- ::GetClientRect(hWnd, &rc);
- HDC hdc= (HDC) wparam;
-
- FillRect(hdc,&rc,hBrush);
-
- return 1;
- }
-
-
- case WM_CTLCOLORSTATIC:
- {
- RECT rc;
- HWND hnd = (HWND) lparam;
- ::GetClientRect(hnd, &rc);
- HDC hdc= (HDC) wparam;
- SetTextColor(hdc, RGB(0,0,0));
- SetBkColor(hdc, RGB(150, 220, 220));
-
- return (int) hBrush;
- }
-
- case WM_DESTROY:
- {
- if (hBrush)
- {
- DeleteObject(hBrush);
- hBrush = NULL;
- }
- break;
- }
-
- //przesuwanie okienka po naci£niΩciu lewego przycisku w client area
- case WM_LBUTTONDOWN:
- {
- ReleaseCapture();
- SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
-
- return 1;
- }
-
-
- //po przeniesieniu okienka musimy poinformowaµ tlen o tym zdarzeniu
- case WM_EXITSIZEMOVE:
- {
- BarWindowActionDef pdef;
- InitializeStruct(pdef);
- pdef.Handle = hWnd;
- tlen_functions->CallTlenFunction(hInst, TLEN_MANAGE_BAR_WINDOWS, (WPARAM) TLEN_BAR_WINDOW_ACTION_POSCHANGED, (LPARAM) &pdef);
-
- break;
- }
-
- }
-
- return 0;
- }
-
-
- BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
- {
- hInst=hinstDLL;
- return TRUE;
- }
-
- __declspec(dllexport) TLENPLUGININFO* GetPluginInfo(DWORD tlenVersion)
- {
- return &pluginInfo;
- }
-
- static int CallBackFunc(WPARAM wparam, LPARAM lparam)
- {
- switch (wparam)
- {
- //zwracamy lokalizacjΩ doklejonego okienka
- case TLEN_BAR_WINDOW_CALLBACK_GETWINRECT:
- {
- BarWindowActionDef *pos = (BarWindowActionDef *) lparam;
- GetWindowRect(pos->Handle, &(pos->WindowRect));
- }
- break;
-
- //przesuwamy okienko w podane miejsce
- case TLEN_BAR_WINDOW_CALLBACK_MOVE:
- {
- BarWindowActionDef *pos = (BarWindowActionDef *) lparam;
- MoveWindow(pos->Handle, pos->WindowRect.left, pos->WindowRect.top, pos->WindowRect.right - pos->WindowRect.left, pos->WindowRect.bottom - pos->WindowRect.top, TRUE);
- }
- break;
-
- //pokazujemy lub chowamy okienko
- case TLEN_BAR_WINDOW_CALLBACK_SHOW:
- {
- BarWindowActionDef *sdef = (BarWindowActionDef *) lparam;
- sdef->Show ? ShowWindow(sdef->Handle, SW_SHOW) : ShowWindow(sdef->Handle, SW_HIDE);
- }
- break;
- }
-
- return 0;
- }
-
- __declspec(dllexport) int LoadPlugin(TLENPLUGINFUNCTIONS *functions)
- {
- tlen_functions = functions;
-
- //pobieramy uchwyt do g│≤wnego okna tlenu
- HWND h = (HWND) tlen_functions->CallTlenFunction(hInst, TLEN_MANAGE_BAR_WINDOWS, TLEN_BAR_WINDOW_ACTION_GETMAINHANDLE, NULL);
-
- //tworzymy trzy okna doklejane
- for (int i = 0; i < 3; i++)
- {
- bar_window[i] = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG1), h, (DLGPROC)prefDialog);
-
- BarWindowAddDef adddef;
- InitializeStruct(adddef);
-
- char text[64];
- sprintf(text, "Belka nr %d stworzona przez plugin", i + 1);
- SetDlgItemText(bar_window[i], IDC_STATIC1, text);
-
- char id[32];
- sprintf(id, "barplugin_bar%d", i + 1);
-
- adddef.Handle = bar_window[i];
- adddef.CallBackFunction = CallBackFunc;
- adddef.BarID = id;
-
- tlen_functions->CallTlenFunction(hInst, TLEN_MANAGE_BAR_WINDOWS, (WPARAM) TLEN_BAR_WINDOW_ACTION_ADD, (LPARAM) &adddef);
- }
-
- return 0;
- }
-
- __declspec(dllexport) int UnloadPlugin(void)
- {
-
- //niszczymy doklejone okna
- for (int i = 0; i < 3; i++)
- {
- if (bar_window[i])
- {
- tlen_functions->CallTlenFunction(hInst, TLEN_MANAGE_BAR_WINDOWS, (WPARAM) TLEN_BAR_WINDOW_ACTION_REMOVE, (LPARAM) bar_window[i]);
- DestroyWindow(bar_window[i]);
- }
- }
-
- return 0;
- }
-