What's Different in ATL for Windows CE

There are a few classes in ATL for Windows CE that don't implement all the methods they do in the standard Active Template Library. This is generally because the functionality these methods support doesn't apply to Windows CE-based platforms, or isn't supported by the current version of Windows CE.

The CComControl class doesn't support the IDataObject_GetData method or the m_bDrawGetDataInHimetric data member because IDataObject_GetData requires the storage medium to be of type TYMED_MFPICT, and the current version of Windows CE doesn't support metafiles. CComControl also doesn't implement the DoVerbProperties method in Windows CE, and the CComControlBase::IOleInPlaceObject_SetObjectRects method doesn't support clipping.

The CStockPropImpl class doesn't implement the put_MouseIcon or put_Picture methods because Windows CE doesn't support the global OleLoadPicture function.

Windows CE doesn't support connections between data objects and advise sinks, so the IDataObjectImpl class doesn't implement the DAdvise, DUnadvise, or EnumDAdvise methods or the IDataObjectImpl::m_spDataAdviseHolder data member.

The IOleObjectImpl class doesn't implement the EnumVerbs, GetMiscStatus, or GetUserType methods because Windows CE doesn't support the OleRegEnumVerbs, OleRegGetMiscStatus, or OleRegGetUserType global functions.

The IPropertyPageImpl class doesn't implement the OnStyleChange method because Windows CE doesn't support the WM_ONSTYLECHANGING message. IPropertyPageImpl also doesn't support the Help method.

Windows CE doesn't support all the window styles or message box styles the desktop Windows platforms support, so there are certain style flags you can't use as arguments in the CContainedWindow::Create, CWindowImpl::Create and CWindow::MessageBox classes. See these topics for details.

In Windows CE, a user can send a window to the back of the Z-order or restore it to the foreground by tapping its icon button on the taskbar, but Windows CE doesn't support minimizing or maximizing of windows. Because of this, the CWindow class doesn't support the IsIconic, IsZoomed, ArrangeIconicWindows, GetWindowPlacement, or SetWindowPlacement methods. You can't use the SW_MAXIMIZE, SW_MINIMIZE, SW_RESTORE, SW_SHOW, SW_SHOWDEFAULT, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE, OR SW_NOACTIVARE flags in the nCmdShow parameter to the CWindow::ShowWindow method.

WinHelp isn't available in Windows CE, so you can't use the CWindow methods GetWindowContextHelpId, SetWindowContextHelpId, and WinHelp.

ATL for Windows CE doesn't implement the CWindow class' ChangeClipboardChain and SetClipboardViewer methods, because Windows CE doesn't support clipboard viewers.

Windows CE doesn't provide support for automatically filling in a list box or combo box with filenames from a directory, so you can't use the DlgDirList, DlgDirListComboBox, DlgDirSelect, or DlgDirSelectComboBox methods of the CWindow class.

Windows CE doesn't support hot keys, so ATL for Windows CE doesn't implement the CWindow class' GetHotKey and SetHotKey methods.

Windows CE doesn't support system menus, so the CWindow class doesn't implement the GetSystemMenu method.

Scroll bars are always visible in Windows CE, so CWindow doesn't implement the EnableScrollBar or ShowScrollBar methods.

Windows CE doesn't currently support OLE drag and drop operations, so the CWindow class doesn't implement the DragAcceptFiles method.

The GetWindowWord and SetWindowWord methods are obsolete. Use CWindow::GetWindowLong and CWindow::SetWindowLong, instead.

The ScrollWindow method is also obsolete, so Windows CE only supports the more versatile CWindow::ScrollWindowEx method. You can't scroll child windows in Windows CE, so you can't pass the SW_SCROLLCHILDREN flag in the flags parameter to this method.

In ATL for Windows CE, you have to use the original CWindow::ChildWindowFromPoint and CWindow::GetDC methods instead of the newer ChildWindowFromPointEx and GetDCEx methods.

Windows CE versions 2.0 and later support printing, but ATL for Windows CE 2.0 doesn't provide support for the CWindow Print and PrintClient methods yet. Use the global functions instead.

Windows CE supports some of the dialog box methods slightly differently than the desktop Windows platforms do. The CWindow::GetDlgItem method doesn't search through nested dialog boxes, the CWindow::GetDlgItemInt method only translates text strings of up to 48 characters, and the CWindow::SetDlgItemInt method treats all values passed to it as signed.

Windows CE only supports solid carets, so you can't use the hBitmap parameter in the CWindow::CreateCaret method.

In Windows CE, you can only set the keyboard focus to a window associated with a different thread's message queue if one window is the parent of the other, or if the windows are siblings of the same parent. See CWindow::SetFocus for more information.

Windows CE also doesn't support the FlashWindow, GetDescendantWindow, GetLastActivePopup, GetMenu, GetTopWindow, HiliteMenuItem, InvalidateRgn, LockWindowUpdate, RedrawWindow, SendMessageToDescendants, SetMenu, ShowOwnedPopups, or ValidateRgn methods of the CWindow class because the global functions they wrap aren't supported in Windows CE.

In ATL for Windows CE, the CWndClassInfo::m_wc data member maintains window class information in a WNDCLASS structure, because Windows CE doesn't support the WNDCLASSEX type.