コントロール(2)

ボタン以外のコントロールです。

MyControl クラス

MyControl.h は次のようにします。

#pragma once

/*
	コントロール
*/

#include	<windowsx.h>
#include	<commctrl.h>


class MyControl : public MyCreateStruct{
public:
	// コンストラクタ
	MyControl(){
		style = WS_CHILD | WS_VISIBLE;
		hwndParent = hWnd;
		Location(0, 0);
		Size(100, 100);
	}
	
	// 生成前のメソッド
	void ID(int id){
		hMenu = (HMENU)id;
	}
	// 生成後のメソッド
	HWND SetID(int id){
		hwnd = GetDlgItem(hWnd, id);
		return hwnd;
	}

	// キャプション
	void GetText(LPTSTR txt){
		GetWindowText(hwnd, txt, GetWindowTextLength(hwnd) + 1);
	}

	// キャプション
	void SetText(LPCTSTR txt){
		SetWindowText(hwnd, txt);
	}

	void Move(int x, int y, int cx, int cy){
		MoveWindow(hwnd, x, y, cx, cy, TRUE);
	}
};



//===============================================
//	部品A
//===============================================

// ボタン------------------------------
class MyButton : public MyControl{
public:
	MyButton(){
		lpszClass = L"BUTTON";
		style = style | BS_DEFPUSHBUTTON;
	}
};



// チェックボタン--------------------
class MyCheckBox : public MyControl{
public:
	MyCheckBox(){
		lpszClass = L"BUTTON";
		style = style | BS_AUTOCHECKBOX;
	}
};

// ラジオボタン--------------------
class MyRadioBox : public MyControl{
public:
	MyRadioBox(){
		lpszClass = L"BUTTON";
		style = style | BS_AUTORADIOBUTTON;
	}
};

// グループボックス--------------------
class MyGroupBox : public MyControl{
public:
	MyGroupBox(){
		lpszClass = L"BUTTON";
		style = style | BS_GROUPBOX;
	}
};


// ラベル------------------------------
class MyLabel : public MyControl{
public:
	MyLabel(){
		lpszClass = L"STATIC";
		style = style | SS_NOTIFY | SS_LEFT;
	}
};


// スタティック・ピクチャー------------------
class MyStaticPicture : public MyControl{
public:
	MyStaticPicture(){
		lpszClass = L"STATIC";
		style = style | SS_SUNKEN | SS_NOTIFY;
	}
};



// エディット------------------------------------
class MyEdit : public MyControl{
public:
	MyEdit(){
		lpszClass = L"EDIT";
		style = style | WS_BORDER | ES_AUTOHSCROLL;
	}
};

// エディットボックス
class MyEditBox : public MyControl{
public:
	MyEditBox(){
		lpszClass = L"EDIT";
		style = style | WS_BORDER | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL;
	}
};

// コンボボックス--------------------------------
class MyComboBox : public MyControl{
public:
	MyComboBox(){
		lpszClass = L"COMBOBOX";
		style = style | WS_VSCROLL | CBS_DROPDOWNLIST;
	}
	// アイテム追加
	void addItem(LPCTSTR txt){
		ComboBox_AddString(hwnd, (LPCSTR)txt);
	}
	// 焦点
	void SetCurSel(int no){
		ComboBox_SetCurSel(hwnd, no);
	}
};



// リストボックス
class MyListBox:public MyControl{
public:
	MyListBox(){
		lpszClass = L"LISTBOX";
		style = style | WS_BORDER | WS_VSCROLL | LBS_NOTIFY;
	}
	void addItem(LPCTSTR txt){
		ListBox_AddString(hwnd, txt);
	}

	void SetCurSel(int no){
		ListBox_SetCurSel(hwnd, no);
	}
};



// 横スクロールバー------------------------------
class MyHScrollBar:public MyControl{
public:
	MyHScrollBar(){
		lpszClass = L"SCROLLBAR";
		style = style | SBS_HORZ;
	}
};

// 縦スクロールバー
class MyVScrollBar:public MyControl{
public:
	MyVScrollBar(){
		lpszClass = L"SCROLLBAR";
		style = style | SBS_VERT;
	}
};


//===============================================
//	部品B
//===============================================


// タブコントロール
class MyTabControl:public MyControl{
public:
	TCITEM tcItem;
	int no;
	MyTabControl(){
		lpszClass = WC_TABCONTROL;
		style = style | WS_CLIPSIBLINGS;
		no = 0;
	}
	void addItem(LPTSTR);
};

void MyTabControl::addItem(LPTSTR txt){
	tcItem.mask = TCIF_TEXT;
	tcItem.pszText = txt;
    SendMessage(hwnd, TCM_INSERTITEM, (WPARAM)no++, (LPARAM)&tcItem);
}


// ツリービュー
class MyTreeView:public MyControl{
public:
	TVINSERTSTRUCT tvi;
	HTREEITEM hTreeItem;
	MyTreeView(){
		lpszClass = WC_TREEVIEW;
		style = style | WS_BORDER | TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
	}
	void addItem(LPTSTR);
};


/*
void MyTreeView::addItem(LPTSTR txt){
		tvi.hParent = TVI_ROOT;
		tvi.hInsertAfter = TVI_SORT;
		tvi.item.mask = TVIF_TEXT;
		tvi.item.pszText = txt;
		hTreeItem = TreeView_InsertItem(hwnd , &tvi);

		tvi.hParent = hTreeItem;
		for ( ; iCount < 3 ; iCount++) {
			tvi.item.pszText = strItem[iCount];
			TreeView_InsertItem(hTree , &tvi);
		}

}
*/


// リストビュー
class MyListView:public MyControl{
public:
	LVCOLUMN col;
	LVITEM item;
	int iColumn;
	int iCount;
	MyListView(){
		lpszClass = WC_LISTVIEW;
		style = style | WS_BORDER | LVS_REPORT;
		iColumn = 0;
		iCount = 0;
	}
	void addColumn(LPTSTR);
	void addItem(LPTSTR);
};


/*
MyListView::MyListView():MyControl(WC_LISTVIEW, WS_BORDER | LVS_REPORT){
//	item = {0};
	iColumn = 0;
	iCount = 0;
}
*/

void MyListView::addColumn(LPTSTR txt){
	col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	col.fmt = LVCFMT_LEFT;
	col.cx = 100;
	col.pszText = txt;
	ListView_InsertColumn(hwnd, iColumn++, &col);
}

void MyListView::addItem(LPTSTR txt){
	item.mask = LVIF_TEXT;
	item.pszText = txt;
	item.iItem = iCount++;
	ListView_InsertItem(hwnd, &item);
}



// リッチエディット
class MyRichEdit:public MyControl{
public:
	MyRichEdit(){
		lpszClass = L"SYSTABCONTROL32";
		style = style | WS_BORDER | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL;
	}
};

// トラックバー
class MyTrackBar:public MyControl{
public:
	MyTrackBar(){
		lpszClass = L"MSCTLS_TRACKBAR32";
		style = style | TBS_AUTOTICKS;
	}
};

// プログレスバー
class MyProgressBar:public MyControl{
public:
	MyProgressBar(){
		lpszClass = L"MSCTLS_PROGRESS32";
		style = style | WS_BORDER;
	}
};

// アップダウンコントロール
class MyUpDownCtrl:public MyControl{
public:
	MyUpDownCtrl(){
		lpszClass = L"MSCTLS_UPDOWN32";
		style = style | UDS_ALIGNRIGHT;
	}
};

// ヘッダー
class MyHeader:public MyControl{
public:
	MyHeader(){
		lpszClass = L"SYSHEADER32";
		style = style | HDS_BUTTONS;
	}
};

// ホットキー
class MyHotKey:public MyControl{
public:
	MyHotKey(){
		lpszClass = L"MSCTLS_HOTKEY32";
		style = style | WS_BORDER;
	}
};

// アニメーション
class MyAnimation:public MyControl{
public:
	MyAnimation(){
		lpszClass = L"SYSANIMATE32";
		style = style | WS_BORDER;
	}
};

// Dtp
class MyDtp:public MyControl{
public:
	MyDtp(){
		lpszClass = L"SysDateTimePick32";
		style = style | DTS_RIGHTALIGN;
	}
};

// カレンダー
class MyMc:public MyControl{
public:
	MyMc(){
		lpszClass = MONTHCAL_CLASS;
		style = style | MCS_NOTODAY;
	}
};

// 
class MyIpa:public MyControl{
public:
	MyIpa(){
		lpszClass = L"SYSIPADDRESS32";
		style = style | WS_BORDER;
	}
};

// コンボボックス
class MyComboBoxEx:public MyControl{
public:
	MyComboBoxEx(){
		lpszClass = WC_COMBOBOXEX;
		style = style | CBS_DROPDOWN | CBS_SORT | WS_VSCROLL;
	}
};

基本的には別名です。 説明は、別の所でします。


[前] [目次]