18.フォントの種類、色、大きさを指定するダイアログ、ダイアログクラスを作成する。 |
19.メンバ変数を割り当てる |
///////////////////////////////////////////////////////////////////////////// // CDlgSetFont ダイアログ class CDlgSetFont : public CDialog { // コンストラクション public: BOOL m_bColor; // ここを追加 BOOL m_bFont; // ここを追加 BOOL m_bSize; // ここを追加 CDlgSetFont(CWnd* pParent = NULL); // 標準のコンストラクタ |
CDlgSetFont::CDlgSetFont(CWnd* pParent /*=NULL*/) : CDialog(CDlgSetFont::IDD, pParent) { m_bColor = false; m_bFont = false; m_bSize = false; //{{AFX_DATA_INIT(CDlgSetFont) m_strColor = _T(""); m_strFont = _T(""); m_nFontSize = 4; //}}AFX_DATA_INIT } |
19.ダイアログの動作を決める |
void CDlgSetFont::OnFontCheckCol() { CEdit* pEdt = (CEdit*)GetDlgItem(IDC_FONT_EDT_COL); if(!m_bColor){ pEdt->SetReadOnly(false); m_bColor = true; } else{ m_bColor = false; pEdt->SetReadOnly(true); } } void CDlgSetFont::OnFontCheckFont() { if(!m_bFont) m_bFont = true; else m_bFont = false; } void CDlgSetFont::OnFontCheckSize() { if(!m_bSize) m_bSize = true; else m_bSize = false; } |
void CDlgSetFont::OnSetFont() { if(!m_bFont){return;} CFontDialog cDlg(NULL, CF_SCREENFONTS|CF_INITTOLOGFONTSTRUCT,NULL,NULL);//FONTダイアログ if (cDlg.DoModal() != IDOK){return ;} m_strFont = cDlg.GetFaceName(); UpdateData(false); } void CDlgSetFont::OnSetColor() { if(!m_bColor){return;} m_strColor = GetColorString(); UpdateData(false); } |
// インクルードファイル ←インクルードしておく #include "DlgSetFont.h" //フォントの設定ダイアログ void CMyHtmlView::OnInsFont() { CDlgSetFont cDlg; if(cDlg.DoModal()!=IDOK){return ;} } |
//フォント サイズ スピンコントロール void CDlgSetFont::OnFontSpinSize(NMHDR* pNMHDR, LRESULT* pResult) { NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; // Flag if(!m_bSize){return;} // Up if(pNMUpDown->iDelta != 1){ if(m_nFontSize != 7){ m_nFontSize++; UpdateData(false); } else AfxMessageBox("フォントサイズは1〜7で指定してください"); } // Down else{ if(m_nFontSize != 1){ m_nFontSize--; UpdateData(false); } else AfxMessageBox("フォントサイズは1〜7で指定してください"); } *pResult = 0; } |
if(pNMUpDown->iDelta != 1){ if(m_nFontSize != 7){ m_nFontSize++; UpdateData(false); } else AfxMessageBox("フォントサイズは1〜7で指定してください"); }
else{ if(m_nFontSize != 1){ m_nFontSize--; UpdateData(false); } else AfxMessageBox(IDS_ERROR_FONT); }
20.タグ生成コードを作成する |
//フォントの設定ダイアログ void CMyHtmlView::OnInsFont() { CString strSel; //選択されている文字列 CDlgSetFont cDlg; if(cDlg.DoModal()!=IDOK){return ;} /* 現在選択されている文字列を取得 */ CEdit& cEdt = GetEditCtrl(); cEdt.Copy(); strSel = GetClipBoard(); cDlg.MakeTag(strSel); //タグの生成 PasteString(cDlg.strTag); //作成したタグ付文字列をペースト SetFocus(); //フォーカスを設定する } |
///////////////////////////////////////////////////////////////////////////// // CDlgSetFont ダイアログ class CDlgSetFont : public CDialog { // コンストラクション public: BOOL m_bColor; BOOL m_bFont; BOOL m_bSize; void MakeTag(CString str); // ここを追加 CString strTag; // ここを追加 CDlgSetFont(CWnd* pParent = NULL); // 標準のコンストラクタ |
// CDlgSetFont::MakeTag(CString) タグの生成 void CDlgSetFont::MakeTag(CString strIns) { CString strTagA,strTagB,cTemp; strTagA = "<FONT"; if(m_bSize){ cTemp.Format("%d",m_nFontSize); strTagA += " SIZE="; strTagA += cTemp; } if(m_bColor){ strTagA += " COLOR=\""; strTagA += m_strColor; strTagA += "\""; } if(m_bFont){ strTagA += " FACE=\""; strTagA += m_strFont; strTagA +="\""; } strTagA += ">"; strTagB = "</FONT>"; strTag = strTagA + strIns + strTagB; } |