// 砂時計カーソルを表示
BeginWaitCursor();
または
AfxGetApp()->BeginWaitCursor();
…処理…
//もし途中にダイアログの表示などがあると矢印に戻るので ex) Dlg.DoModal;
RestoreWaitCursor();
または
AfxGetApp()->RestoreWaitCursor();
…処理…
// 直前のカーソルに戻す
EndWaitCursor();
または
AfxGetApp()->EndWaitCursor();
HCURSOR hCursor, oldCursor;
hCursor = LoadCursor(NULL, IDC_WAIT★);
oldCursor = SetCursor(hCursor); //現在の状態をセーブしながら変更
…処理…
SetCursor(oldCursor); //マウスポインタを元に戻す
●ダイアログ全体を再描画
InvalidateRect(NULL, FALSE);
または
RedrawWindow();
CString WStr;
WStr.LoadString(IDR_MAINFRAME);
m_pMainWnd->SetWindowText(WStr);
if(…){
CWaitCursor WaitC; //この時点で砂時計ポインタになる
… //処理
XXDialog.DoModal(); //何かのダイアログ表示
//ここでポインタは元に戻っている
Waitc.Restore() //もう一度砂時計に
… //処理
} //ここを抜けた時点でポインタは元に戻る
else{
…
}
CPen pen;
CPen *pOldpen;
pen.CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
pOldpen = pDC->SelectObject(&pen); //pDCはCDC*
//描画
pDC->MoveTo(10, 10);
pDC->LineTo(20, 20);など
…
pDC->SelectObject(pOldpen);
pen.DeleteObject();
CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
CPen *pOldpen;
pOldpen = pDC->SelectObject(&pen); //pDCはCDC*
//描画
…
pDC->SelectObject(pOldpen);
CPen *pOldpen;
pOldpen = pDC->SelectStockObject(BLACK_PEN); //pDCはCDC*
//描画
…
pDC->SelectObject(pOldpen);
CFile BMPFile;
BMPFile.Open("なんちゃら.bmp", CFile::modeRead);
UINT BufSize = BMPFile.GetLength();
LPTSTR pReadBuf = new char[BufSize];
//読込み
BMPFile.Read(pReadBuf, BufSize);
BMPFile.Close();
BITMAPFILEHEADER *BMPFileHdr = (BITMAPFILEHEADER *)pReadBuf;
BITMAPINFOHEADER *BMPInfoHdr = (BITMAPINFOHEADER *)(pReadBuf + izeof(BITMAPFILEHEADER));
CRect rcView;
GetDlgItem(IDC_PICTURE)->GetClientRect(&rcView); //ピクチャボックスののクライアント座標取得
HDC hDC = GetDlgItem(IDC_PICTURE)->GetDC()->GetSafeHdc();
SetStretchBltMode(hDC, HALFTONE); //ビットマップ伸縮モード設定
StretchDIBits(hDC,
0, 0, rcView.Width(), rcView.Height(), // 転送先
0, 0, BMPInfoHdr->biWidth, BMPInfoHdr->biHeight, // 転送元
(LPVOID)(pReadBuf + BMPFileHdr->bfOffBits),
(BITMAPINFO *)BMPInfoHdr, DIB_RGB_COLORS, SRCCOPY);
CFont CtlFont;
float FontSize = 14.0; //フォントサイズ(pt)
CString FontName = "MS Pゴシック"; //フォント名
if(CtlFont.CreatePointFont((int)(FontSize * 10.0), FontName)) //サイズはポイントを10倍する
GetDlgItem(IDC_CONTROL)->SetFont(&CtlFont);
//コールバック関数
int CALLBACK EnumFontFamExProc( ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntm, int FontType, LPARAM lParam ) {
CComboBox *pComboBox = (CComboBox *)lParam; //lParamにはコンボボックスのポインタがセットされている
//ここでは日本語TrueTypeフォントだけをコンボボックスに追加
if(FontType == TRUETYPE_FONTTYPE && lpelfe->elfLogFont.lfCharSet
== SHIFTJIS_CHARSET )
pComboBox->AddString( lpelfe->elfLogFont.lfFaceName );
return(1); //フォントの列挙を中止する場合は0を返す
}
…
//コンボボックスを初期化する場所
LOGFONT LogFont;
EnumFontFamiliesEx(hdc, &LogFont, (FONTENUMPROC)EnumFontFamExProc,
(LPARAM)&m_ComboBox, 0)
HWND MCIWndCreate(
HWND hwndParent, //ウィンドウハンドル
HINSTANCE hInstance, //インスタンス
DWORD dwStyle, //表示設定
LPSTR szFile //ファイル名
);
LONG MCIWndPlayFrom(
hwnd, //MCIWndのハンドル
lPos //開始位置
);
HWND hMMWnd = MCIWndCreate(
GetDlgItem(ピクチャーボックスのID)->m_hWnd,
AfxGetInstanceHandle(),
MCIWNDF_NOMENU | MCIWNDF_NOOPEN | MCIWNDF_NOPLAYBAR |
WS_MAXIMIZE | WS_VISIBLE | WS_CHILD,
"Avi形式ファイル名");
if(hMMWnd != 0)
MCIWndPlayFrom(hMMWnd, 0); //再生開始
int CXXXXApp::DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT
nIDPrompt)
{
//退避
LPCTSTR Save = m_pszAppName;
//設定するタイトル
CString WStr;
WStr.LoadString(IDS_WINDOW_TITLE);
m_pszAppName = WStr;
int Ret = CWinApp::DoMessageBox(lpszPrompt, nType, nIDPrompt);
//元に戻す
m_pszAppName = Save;
return Ret;
return CWinApp::DoMessageBox(lpszPrompt, nType,
nIDPrompt);
}