ファイル名:draw.dlg
draw DIALOG 6, 13, 160, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "draw line"
FONT 12, "System"
BEGIN
END
ファイル名:draw.rc
#include
#include "draw.dlg"
ファイル名:draw.c
#define STRICT
#include
#include
#define XDISP 320
#define YDISP 240
#ifdef __cplusplus
extern "C"
#endif
BOOL FAR PASCAL DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){
PAINTSTRUCT ps;
static HDC hMemDC;
static HBITMAP hDDBitmap, hOldBitmap;
HDC hdc;
switch(msg){
case WM_TIMER:
LineTo(hMemDC, rand()%XDISP, rand()%YDISP);
InvalidateRect(hDlg, NULL, TRUE);
break;
case WM_COMMAND:
switch((WORD)wParam) {
case IDCANCEL: /* システムメニューの「クローズ」 */
SelectObject(hMemDC, hOldBitmap);
DeleteDC(hMemDC);
DeleteObject(hDDBitmap);
KillTimer(hDlg, 1);
EndDialog( hDlg, wParam );
break;
}
break;
case WM_PAINT:
hdc = BeginPaint(hDlg, &ps);
BitBlt(hdc, 0, 0, XDISP, YDISP, hMemDC, 0, 0, SRCCOPY);
EndPaint(hDlg, &ps);
break;
case WM_INITDIALOG:
SetTimer(hDlg, 1, 1000, NULL);
hdc=GetDC(hDlg);
hMemDC = CreateCompatibleDC(hdc); /* メモリDCを作成 */
hDDBitmap = CreateCompatibleBitmap(hdc, XDISP, YDISP); /* DDBを作成 */
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hDDBitmap);/*メモリDCにDDBを選択させる*/
ReleaseDC(hDlg, hdc);
BitBlt(hMemDC, 0, 0, XDISP, YDISP, NULL, 0, 0, WHITENESS);
return TRUE;/* SetFocusしたらfalse */
default:
return FALSE;
}
return TRUE;
}
int PASCAL WinMain(HINSTANCE hinst, HINSTANCE hprev, LPSTR cmdline, int cmdshow){
DLGPROC lpProc = (DLGPROC)MakeProcInstance((FARPROC)DlgProc, hinst);
DialogBox(hinst, "draw", NULL, lpProc);
FreeProcInstance((FARPROC)lpProc);
return 0;
}
ファイル名:draw.def
NAME DRAW
DESCRIPTION 'DRAWLINE'
EXETYPE WINDOWS
STUB 'WINSTUB.EXE'
CODE PRELOAD MOVEABLE
DATA MOVEABLE PRELOAD MULTIPLE
HEAPSIZE 4096
STACKSIZE 8192
EXPORTS
DLGPROC @1
戻る