Привет всем.
Тут тренеруюсь по маленьку, и возник вопрос а как положить программу на тодай панель КПК. Что то нужно както с реестром работать или что ? Подскажите плиз.
Модератор: Модераторы
//
// Пример компонента Плагина для Тудей
// Рисует черный прямоугольник :)
//
// Взято с msdn.microsoft.com
// Автор - Джон Кеннеди (John Kennedy)
//
// Перевел и доработал DarkClaus для 4da
#include "windows.h"
#include <todaycmn.h> // есть в инклюдах к SDK PPC2003
#include <Aygshell.h> //__/
const TCHAR k_szWindowClass[] = TEXT("TodayTest");
HINSTANCE g_hInst = NULL;
// Высота нашего модуля в пикселях
#define MODULE_HEIGHT 42
/*************************************************************************/
/* WndProc для окна */
/*************************************************************************/
LRESULT WINAPI CustomItemWndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
PAINTSTRUCT ps;
HDC hdc=NULL;
// Структура для хранения
// различной внутренней информации
// о компоненте Today.
TODAYLISTITEM *ptli2;
switch(msg)
{
// Поменялись данные и..
case: (WM_TODAYCUSTOM_CLEARCACHE):
break;
// Это событие происходит примерно каждые 2 секунды
case (WM_TODAYCUSTOM_QUERYREFRESHCACHE):
ptli2=(struct _TODAYLISTITEM *)wp;
// Обратите внимание!
if (0 == ptli2->cyp)
{
// ТРУ возвращается однажды
// после установки высоты
ptli2->cyp = MODULE_HEIGHT;
return TRUE;
}
else
{
// Обычно обрабатывается именно эта ветка
return FALSE;
}
break;
// Стандартное событие рисования
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
// Быстрый и "грубый" пример рисования
// Рисуется черный квадрат
BitBlt(hdc,0,0,240,MODULE_HEIGHT,NULL,0,0,BLACKNESS);
EndPaint(hwnd, &ps);
break;
// Обработка события Тыканья стилусом
case WM_LBUTTON:
// тут нечто :)
break;
default:
break;
}
return DefWindowProc(hwnd, msg, wp, lp);
}
/*************************************************************************/
/* Инициализация класса */
/*************************************************************************/
void InitilizeClass(HINSTANCE hinst)
{
WNDCLASS wc;
memset(&wc, 0, sizeof(wc));
wc.style = 0;
wc.lpfnWndProc = (WNDPROC)CustomItemWndProc;
wc.hInstance = hinst;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = (struct HBRUSH__*)GetStockObject(WHITE_BRUSH);
wc.lpszClassName = k_szWindowClass;
UnregisterClass(k_szWindowClass, hinst);
RegisterClass(&wc);
}
/*************************************************************************/
/* Инициализируем всё, что может потребоваться ДЛЛке */
/*************************************************************************/
BOOL WINAPI DllMain(HANDLE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
{
UNREFERENCED_PARAMETER(lpvReserved);
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
g_hInst = (struct HINSTANCE__ *)hDLLInst;
DEBUGREGISTER((HINSTANCE)hDLLInst);
InitilizeClass((HINSTANCE)hDLLInst);
break;
case DLL_PROCESS_DETACH:
UnregisterClass(k_szWindowClass, (struct HINSTANCE__ *)hDLLInst);
break;
}
return TRUE;
}
// Вход в ДЛ:
HWND InitializeCustomItem(TODAYLISTITEM *ptli, HWND hwndParent)
{
HWND hWnd;
if (!ptli->fEnabled)
return NULL;
hWnd = CreateWindow (k_szWindowClass, k_szWindowClass, WS_VISIBLE|WS_CHILD, 0, 0, 0, MODULE_HEIGHT,
hwndParent, NULL, g_hInst, NULL);
ShowWindow (hWnd, SW_SHOWNORMAL);
return hWnd;
}
library MyFistTodayPlugin;
{$mode delphi}{$H+}
uses
Classes, Windows, todaycmn, aygshell
var
g_hWnd: HWND;
g_hInst: HModule;
Const
IDS_CUSTOM_ITEM_APPNAME='MyFistTodayPlugin';
function MyWndProc(hwnd: hwnd; uimessage: UINT; wParam: WPARAM; lParam: LPARAM) : LResult; cdecl;
var ps: PAINTSTRUCT;
ahdc: HDC=0;
ptli2: _TODAYLISTITEM;
begin
case uimessage of
WM_LBUTTONUP:
begin
MessageBox(hwnd,String('WM_TODAYCUSTOM_QUE'),String('mess'), MB_OK);
end;
WM_TODAYCUSTOM_QUERYREFRESHCACHE:
begin
ptli2 := LPTODAYLISTITEM(wParam)^;
if (ptli2.cyp=0) then
begin
ptli2.cyp := 42;
Result:= 1;
end else
begin
Result:= 0;
End;
exit;
end;
Скорее всего dll. Если компилиш в Лазарусе зайди в свойства проэкта и поменяй имя исполняемого файла на любое с расширением длл. А насчёт реестра на сайте майкрософта вроде пишут что надо сюда прописывать (сверху линк давали):yurc писал(а):Почему-то у меня после исправления ошибки с недостающей точки с запятой компилируется exe файл, а не dll. Так и должно быть?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3