Первый вопрос такой: как создать MenuBar. Я использую такую функцию
- Код: Выделить всё
- function CreateMenuBar(hInst: HANDLE; Parent: HWND; ResID: Integer): HWND;
 var
 mbi: SHMENUBARINFO;
 BR: TRect;
 begin
 Result := 0;
 GetWindowRect(Parent, BR);
 mbi.hwndMB := SHFindMenuBar(Parent);
 if mbi.hwndMB <> 0 then
 begin
 DestroyWindow(mbi.hwndMB);
 mbi.hwndMB := 0;
 end;
 FillChar(mbi, SizeOf(mbi), 0);
 mbi.cbSize := SizeOf(mbi);
 mbi.hwndParent := Parent;
 mbi.dwFlags := SHCMBF_EMPTYBAR;
 mbi.nToolBarId := ResID;
 mbi.hInstRes := hInst;
 if SHCreateMenuBar(@mbi) then
 Result := mbi.hwndMB;
 end;
- Код: Выделить всё
- CreateMenuBar(hInstance, Wnd, 2001);
Второй вопрос связан с диалогами из ресурса. Код вызова диалога следующий:
- Код: Выделить всё
- DialogBox(hInstance, MAKEINTRESOURCE(1001), Wnd, DLGPROC(@mDlgProc));
- Код: Выделить всё
- function mDlgProc(Dlg: HWND; mms: integer; wparam: WPARAM; lparam: LPARAM): INT_PTR; STDCALL;
 var
 shidi: SHINITDLGINFO;
 begin
 case mms of
 WM_INITDIALOG:
 begin
 shidi.dwMask := SHIDIM_FLAGS;
 shidi.dwFlags := SHIDIF_DONEBUTTON or SHIDIF_SIPDOWN or SHIDIF_SIZEDLGFULLSCREEN;
 shidi.hDlg := Dlg;
 SHInitDialog(@shidi);
 Result := INT_PTR(True);
 end;
 WM_PAINT:
 begin
 //todo
 end;
 WM_CLOSE: EndDialog(Dlg, mms);
 end; //case of
 Result := INT_PTR(True);
 end;
P.S.
Я решил в ответ на библиотеку KOL портированную для Win CE, портировать LENIN_INC для Win CE, уже несколько десятков функций успешно портированно, эта библиотека лучше чем KOL т.к. не использует ни классы ни объекты (используется "голый WinAPI"), и поэтому проги написанные с использованием этой библиотеки весят "катастрофически" мало, а оперативной памяти потребляют минимум (KOL оперативку "кушает не стесняясь"). Месяца эдак через четыре - пять выложу портированную версию библы.



 ) Кстати работало это только на смартфонах и под WM5-6...
  ) Кстати работало это только на смартфонах и под WM5-6...