|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: commctrl.cpp
//
//--------------------------------------------------------------------------
#include <windows.h>
#include "unicode.h"
#include "crtem.h"
HTREEITEM WINAPI TreeView_InsertItem9x( HWND hwndTV, LPTVINSERTSTRUCTW lpis ) { TVINSERTSTRUCTA tvItem; HTREEITEM hTreeItem; int cb;
memcpy(&tvItem, lpis, sizeof(LPTVINSERTSTRUCTA));
cb = WideCharToMultiByte( 0, 0, lpis->item.pszText, -1, NULL, 0, NULL, NULL); if (NULL == (tvItem.item.pszText = (LPSTR) malloc(cb))) { return NULL; // this is the unsuccessful return code for this call
}
WideCharToMultiByte( 0, 0, lpis->item.pszText, -1, tvItem.item.pszText, cb, NULL, NULL);
hTreeItem = (HTREEITEM) SendMessage(hwndTV, TVM_INSERTITEMA, 0, (LPARAM) &tvItem);
free(tvItem.item.pszText); return hTreeItem; }
HTREEITEM WINAPI TreeView_InsertItemU( HWND hwndTV, LPTVINSERTSTRUCTW lpis ) { if (FIsWinNT()) { return((HTREEITEM) SendMessage(hwndTV, TVM_INSERTITEMW, 0, (LPARAM) lpis)); } else { return (TreeView_InsertItem9x(hwndTV, lpis)); } }
int WINAPI ListView_InsertItem9x( HWND hwnd, const LPLVITEMW pitem ) { LVITEMA lvItem; int iRet; int cb;
memcpy(&lvItem, pitem, sizeof(LVITEMA));
cb = WideCharToMultiByte( 0, 0, pitem->pszText, -1, NULL, 0, NULL, NULL); if (NULL == (lvItem.pszText = (LPSTR) malloc(cb))) { return -1; // this is the unsuccessful return code for this call
}
WideCharToMultiByte( 0, 0, pitem->pszText, -1, lvItem.pszText, cb, NULL, NULL);
iRet = (int)SendMessage(hwnd, LVM_INSERTITEMA, 0, (LPARAM) &lvItem);
free(lvItem.pszText); return iRet; }
int WINAPI ListView_InsertItemU( HWND hwnd, const LPLVITEMW pitem ) { if (FIsWinNT()) { return ((int)SendMessage(hwnd, LVM_INSERTITEMW, 0, (LPARAM) pitem)); } else { return (ListView_InsertItem9x(hwnd, pitem)); } }
void WINAPI ListView_SetItemTextU( HWND hwnd, int i, int iSubItem, LPCWSTR pszText ) { LVITEMA lvItemA; LVITEMW lvItemW; int cb;
if ((ULONG_PTR) pszText == (ULONG_PTR) LPSTR_TEXTCALLBACK) { memset(&lvItemA, 0, sizeof(lvItemA)); lvItemA.iSubItem = iSubItem; lvItemA.pszText = (LPSTR) LPSTR_TEXTCALLBACK; SendMessage(hwnd, LVM_SETITEMTEXTA, i, (LPARAM) &lvItemA); return; }
if (FIsWinNT()) { memset(&lvItemW, 0, sizeof(lvItemW)); lvItemW.iSubItem = iSubItem; lvItemW.pszText = (LPWSTR) pszText; SendMessage(hwnd, LVM_SETITEMTEXTW, i, (LPARAM) &lvItemW); return; }
memset(&lvItemA, 0, sizeof(lvItemA)); lvItemA.iSubItem = iSubItem; cb = WideCharToMultiByte( 0, 0, pszText, -1, NULL, 0, NULL, NULL); if (NULL == (lvItemA.pszText = (LPSTR) malloc(cb))) { return; }
WideCharToMultiByte( 0, 0, pszText, -1, lvItemA.pszText, cb, NULL, NULL); SendMessage(hwnd, LVM_SETITEMTEXTA, i, (LPARAM) &lvItemA); free(lvItemA.pszText); }
int WINAPI ListView_InsertColumn9x( HWND hwnd, int i, const LPLVCOLUMNW plvC) { LVCOLUMNA lvCA; int iRet; int cb;
memcpy(&lvCA, plvC, sizeof(LVCOLUMNA));
cb = WideCharToMultiByte( 0, 0, plvC->pszText, -1, NULL, 0, NULL, NULL);
if (NULL == (lvCA.pszText = (LPSTR) malloc(cb))) { return -1; // failure code for this call
}
WideCharToMultiByte( 0, 0, plvC->pszText, -1, lvCA.pszText, cb, NULL, NULL); iRet = (int)SendMessage(hwnd, LVM_INSERTCOLUMNA, i, (LPARAM) &lvCA); free(lvCA.pszText); return iRet; }
int WINAPI ListView_InsertColumnU( HWND hwnd, int i, const LPLVCOLUMNW plvC) { if (FIsWinNT()) { return ((int)SendMessage(hwnd, LVM_INSERTCOLUMNW, i, (LPARAM) plvC)); } else { return (ListView_InsertColumn9x(hwnd, i, plvC)); } }
BOOL WINAPI ListView_GetItem9x( HWND hwnd, LPLVITEMW pitem ) { LVITEMA lvItemA; BOOL fRet;
memcpy(&lvItemA, pitem, sizeof(lvItemA)); if (NULL == (lvItemA.pszText = (LPSTR) malloc(lvItemA.cchTextMax))) { return FALSE; } fRet = (BOOL)SendMessage(hwnd, LVM_GETITEMA, 0, (LPARAM) &lvItemA);
if (fRet) { pitem->state = lvItemA.state; pitem->iImage = lvItemA.iImage; pitem->lParam = lvItemA.lParam; pitem->iIndent = lvItemA.iIndent;
if (pitem->mask & LVIF_TEXT) { MultiByteToWideChar( CP_ACP, 0, lvItemA.pszText, -1, pitem->pszText, pitem->cchTextMax); } }
free(lvItemA.pszText); return fRet; }
BOOL WINAPI ListView_GetItemU( HWND hwnd, LPLVITEMW pitem ) { if (FIsWinNT()) { return ((BOOL)SendMessage(hwnd, LVM_GETITEMW, 0, (LPARAM) pitem)); } else { return (ListView_GetItem9x(hwnd, pitem)); } }
#ifdef _M_IX86
HFONT WINAPI CreateFontIndirect9x(CONST LOGFONTW *lplf) { LOGFONTA lfa; memcpy(&lfa, lplf, sizeof(LOGFONTA));
WideCharToMultiByte( 0, 0, lplf->lfFaceName, -1, lfa.lfFaceName, LF_FACESIZE, NULL, NULL);
return (CreateFontIndirectA(&lfa)); }
HFONT WINAPI CreateFontIndirectU(CONST LOGFONTW *lplf) { if (FIsWinNT()) { return (CreateFontIndirectW(lplf)); } else { return (CreateFontIndirect9x(lplf)); } }
#endif
|