Привет всем.
Тут тренеруюсь по маленьку, и возник вопрос а как положить программу на тодай панель КПК. Что то нужно както с реестром работать или что ? Подскажите плиз.
			
		Модератор: Модераторы
//
// Пример компонента Плагина для Тудей
// Рисует черный прямоугольник :)
//
// Взято с 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. Так и должно быть?


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0