2025-11-28 00:35:46 +09:00

99 lines
2.2 KiB
C++

//////////////////////////////////////////////////////////////////////////
// Control.cpp: Base control class.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////
#include "wincontrol.h"
//-----------------------------------------------------------------------------
// Name: Create
// Desc: Create a new instance of the control.
//
// create: Creation parameters.
//-----------------------------------------------------------------------------
HRESULT Control::Create(const CREATESTRUCT& create)
{
if (m_hwnd != NULL)
{
// The control was already created.
return E_FAIL;
}
if (create.hwndParent == NULL)
{
return E_INVALIDARG;
}
HINSTANCE hinst = create.hInstance;
if (hinst == NULL)
{
hinst = GetInstance();
}
if (hinst == NULL)
{
return E_INVALIDARG;
}
HWND hwnd = CreateWindowEx(
create.dwExStyle, create.lpszClass, create.lpszName,
create.style | WS_CHILD | WS_VISIBLE,
create.x, create.y, create.cx, create.cy, create.hwndParent, create.hMenu,
hinst, create.lpCreateParams);
if (hwnd== 0)
{
return __HRESULT_FROM_WIN32(GetLastError());
}
SetWindow(hwnd);
return S_OK;
};
CreateStruct::CreateStruct()
{
ZeroMemory(this, sizeof(*this));
}
void CreateStruct::SetBoundingRect(const Rect& rc)
{
x = rc.left;
y = rc.top;
cx = rc.right - x;
cy = rc.bottom - y;
}
HINSTANCE GetInstance()
{
return (HINSTANCE)GetModuleHandle(NULL);
}
// SetBitmapImg - Set a bitmap image on a window
HBITMAP SetBitmapImg(HINSTANCE hinst, WORD nImgId, HWND hwnd)
{
HBITMAP hBitmap = LoadBitmap(hinst, MAKEINTRESOURCE(nImgId));
if (hBitmap)
{
SendMessage(hwnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);
// BM_SETIMAGE returns the handle to the _previous_ bitmap.
return hBitmap;
}
return 0;
}