예제 #1
0
//Window Procedure
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
	int id;
	static HWND hEdit;

	switch (msg) {
	case WM_CREATE:
		// Create Edit Control
		hEdit = CreateWindow(TEXT("EDIT"), NULL, WS_CHILD | WS_VISIBLE | ES_WANTRETURN | ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | WS_HSCROLL, 0, 0, 0, 0, hWnd, (HMENU)ID_EDIT, hInst, NULL);
		lstrcat(szTitle, TEXT("[無題]"));
		SetWindowText(hWnd, szTitle);
		Edit_LimitText(hEdit, 0);
		break;
	case WM_SIZE:
		// Adjust Window Size
		MoveWindow(hEdit, 0, 0, LOWORD(lp), HIWORD(lp), TRUE);
		break;
	case WM_COMMAND:
		switch (LOWORD(wp)) {
		case IDM_NEW:
			MyNew(hEdit);
			break;
		case IDM_OPEN:
			MyOpen(hEdit);
			break;
		case IDM_END:
			SendMessage(hWnd, WM_CLOSE, 0, 0);
			break;
		case IDM_SAVE:
			MySave(hEdit);
			break;
		case IDM_SAVEAS:
			MySaveAs(hEdit);
			break;
		}
		break;
	case WM_SETFOCUS:
		SetFocus(hEdit);	//set focus to edit control
		break;
	case WM_CLOSE:
		id = MyConfirm(hEdit);
		if (id == IDCANCEL)
			break;
		id = MessageBox(hWnd, TEXT("終了してもよろしいですか"), TEXT("確認"), MB_YESNO | MB_ICONQUESTION);
		if (id == IDYES) {
			DestroyWindow(hEdit);	//destroy edit control
			DestroyWindow(hWnd);
		}
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return (DefWindowProc(hWnd, msg, wp, lp));
	}
	return 0;
}
예제 #2
0
void* operator new[](size_t size, char *szFile, int nLine)
{
	return MyNew(size, szFile, nLine);
}