mirror of https://github.com/axmolengine/axmol.git
99 lines
2.6 KiB
C++
99 lines
2.6 KiB
C++
|
|
#include <string>
|
|
|
|
#include "stdafx.h"
|
|
#include "cocos2d.h"
|
|
#include "PlayerEditBoxServiceWin.h"
|
|
|
|
PLAYER_NS_BEGIN
|
|
|
|
PlayerEditBoxServiceWin::PlayerEditBoxServiceWin(HWND hwnd)
|
|
: _hfont(NULL)
|
|
{
|
|
_hwnd = hwnd;
|
|
HINSTANCE instance = (HINSTANCE)GetWindowLong(_hwnd, GWL_HINSTANCE);
|
|
DWORD style = WS_CHILD | ES_LEFT | ES_AUTOHSCROLL;
|
|
_hwndSingle = CreateWindowEx(WS_EX_CLIENTEDGE, L"Edit", L"", style, 0, 0, 0, 0, _hwnd, NULL, instance, NULL);
|
|
style = WS_CHILD | ES_MULTILINE | ES_LEFT | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL;
|
|
_hwndMulti = CreateWindowEx(WS_EX_CLIENTEDGE, L"Edit", L"", style, 0, 0, 0, 0, _hwnd, NULL, instance, NULL);
|
|
}
|
|
|
|
PlayerEditBoxServiceWin::~PlayerEditBoxServiceWin()
|
|
{
|
|
removeFont();
|
|
DestroyWindow(_hwndSingle);
|
|
DestroyWindow(_hwndMulti);
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::showSingleLineEditBox(const cocos2d::Rect &rect)
|
|
{
|
|
MoveWindow(_hwndSingle, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height, TRUE);
|
|
ShowWindow(_hwndSingle, SW_SHOW);
|
|
SetFocus(_hwndSingle);
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::showMultiLineEditBox(const cocos2d::Rect &rect)
|
|
{
|
|
MoveWindow(_hwndMulti, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height, TRUE);
|
|
ShowWindow(_hwndMulti, SW_SHOW);
|
|
SetFocus(_hwndMulti);
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::hide()
|
|
{
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::setText(const std::string &text)
|
|
{
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::setFont(const std::string &name, int size)
|
|
{
|
|
removeFont();
|
|
|
|
std::u16string u16name;
|
|
cocos2d::StringUtils::UTF8ToUTF16(name, u16name);
|
|
|
|
HDC hdc = GetDC(_hwnd);
|
|
size = -MulDiv(size, GetDeviceCaps(hdc, LOGPIXELSY), 72);
|
|
ReleaseDC(_hwnd, hdc);
|
|
|
|
_hfont = CreateFont(size, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
|
|
0, OUT_DEFAULT_PRECIS, FW_NORMAL, DEFAULT_QUALITY, DEFAULT_PITCH,
|
|
(LPCTSTR)u16name.c_str());
|
|
if (!_hfont)
|
|
{
|
|
DWORD err = GetLastError();
|
|
CCLOG("PlayerEditBoxServiceWin::setFont() - create HFONT for font \"%s\" failed, error code = 0x%08x",
|
|
name.c_str(), err);
|
|
}
|
|
else
|
|
{
|
|
SendMessage(_hwndSingle, WM_SETFONT, (WPARAM)_hfont, NULL);
|
|
SendMessage(_hwndMulti, WM_SETFONT, (WPARAM)_hfont, NULL);
|
|
}
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::setFontColor(const cocos2d::Color3B &color)
|
|
{
|
|
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::removeFont()
|
|
{
|
|
if (_hfont)
|
|
{
|
|
SendMessage(_hwndSingle, WM_SETFONT, NULL, NULL);
|
|
SendMessage(_hwndMulti, WM_SETFONT, NULL, NULL);
|
|
DeleteObject(_hfont);
|
|
}
|
|
_hfont = NULL;
|
|
}
|
|
|
|
void PlayerEditBoxServiceWin::setFormator(int /*formator*/ )
|
|
{
|
|
|
|
}
|
|
|
|
PLAYER_NS_END
|