Custom Control

公開:2004-05-20 07:00
更新:2020-02-15 04:36
カテゴリ:psycle wtl,windows,audio,tracker

やっぱりCustom Drawはやめて、Custom Controlを作ることにします。
Volumeクラスの雛形

Volume.h

000001  #pragma once
000002  /* @file
000003   
  @brief Volume UI 
000004     $Date: 2004/05/16 08:42:08 $
000005   
  $Revision: 1.1 $
000006   */
000007  namespace SF {
000008      namespace UI {
000009          class Volume : public CWindowImpl<Volume>
000010          {
000011          public:
000012              DECLARE_WND_CLASS(_T("Volume"))
000013              /// Constructor
000014              Volume(void);
000015              /// Destructor
000016              ~Volume(void);
000017              
000018              /// Create
000019              HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName,
000020              DWORD dwStyle, DWORD dwExStyle, _U_MENUorID MenuOrID, LPVOID lpCreateParam);
000021              
000022              // メッセージマップ
000023              BEGIN_MSG_MAP_EX(Volume)
000024                  MSG_WM_HSCROLL(OnHScroll)
000025                  MSG_WM_TIMER(OnTimer)
000026                  MSG_WM_PAINT(OnPaint)
000027                  MSG_WM_SETFOCUS(OnSetFocus)
000028                  MSG_WM_KILLFOCUS(OnKillFocus);
000029              END_MSG_MAP()
000030 
000031              void OnTimer(UINT wParam, TIMERPROC lParam)
000032              {
000033                  ATLTRACE2(_T("OnHScroll\n"));
000034                  KillTimer(wParam);
000035              }
000036 
000037              void OnSetFocus(HWND hwnd){
000038                  ATLTRACE2(_T("OnHScroll\n"));
000039                  OnPaint(NULL);
000040                  SetMsgHandled(TRUE);
000041              }
000042              
000043              void OnKillFocus(HWND hwnd){
000044                  ATLTRACE2(_T("OnKillFocus\n"));
000045                  OnPaint(NULL);
000046                  SetMsgHandled(TRUE);
000047              }
000048 
000049              void OnHScroll(int nCode, short nPos, HWND hWnd)
000050              {
000051                  ATLTRACE2(_T("OnHScroll\n"));
000052                  OnPaint(NULL);
000053                  SetMsgHandled(TRUE);
000054              }
000055 
000056 
000057              void OnPaint(HDC hdc);
000058 
000059              /// Initialize Volume Control
000060              void Initialize(const HWND hwnd);
000061              static void Release(){
000062                  m_pVolumeSprite.Release();
000063                  m_pTexture.Release();
000064              };
000065          private:
000066              static CComPtr<ID3DXSprite> m_pVolumeSprite;
000067              static CComPtr<IDirect3DTexture9>   m_pTexture;
000068          };
000069      }
000070  }

ちゃんと動くようになったらSpriteをMeshに置き換えようと思います。
重いかな...。