📄 displaywin.cpp
字号:
/* //////////////////////////////////////////////////////////////////////////// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright(c) 2002-2005 Intel Corporation. All Rights Reserved.//////*/#if defined SYSWIN32 || defined SYSWIN64#ifndef SYSWIN32 #define WIN32#endif#ifdef SYSWIN64 #define WIN64#endif#include <windows.h>#include <vfw.h>typedef struct{ HWND hWnd; WNDCLASS wc; HDRAWDIB hDrawDib; BITMAPINFOHEADER biHeader; unsigned char *dibBuf; int width; int height;} DIB_WINDOW;DIB_WINDOW dibWindow;LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);int DisplayPixMap( unsigned char *pixMap, const int width, const int height, const char *jp2FileName ){ HINSTANCE hInstance = GetModuleHandle(NULL); MSG msg; char lpClassName[] = "JPEG2000Viewer"; char lpWindowName[300] = "JPEG2000Viewer - "; strcat(lpWindowName, jp2FileName); dibWindow.wc.style = CS_HREDRAW | CS_VREDRAW; dibWindow.wc.lpfnWndProc = MainWndProc; dibWindow.wc.cbClsExtra = 0; dibWindow.wc.cbWndExtra = 0; dibWindow.wc.hInstance = hInstance; dibWindow.wc.hIcon = ExtractIcon(hInstance, "../../res/J2kit.ico", 0); dibWindow.wc.hCursor = LoadCursor(NULL, IDC_ARROW); dibWindow.wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); dibWindow.wc.lpszMenuName = NULL; dibWindow.wc.lpszClassName = lpClassName; dibWindow.dibBuf = pixMap; dibWindow.width = width; dibWindow.height = height; dibWindow.biHeader.biWidth = dibWindow.width; dibWindow.biHeader.biHeight = dibWindow.height; dibWindow.biHeader.biSize = sizeof(BITMAPINFOHEADER); dibWindow.biHeader.biCompression = BI_RGB; dibWindow.biHeader.biPlanes = 1; dibWindow.biHeader.biBitCount = 24; if(!RegisterClass(&dibWindow.wc)) return 1; dibWindow.hWnd = CreateWindow( lpClassName, lpWindowName, WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU, 0, 0, 100, 100, NULL, NULL, hInstance, NULL); if(!dibWindow.hWnd) return 1; RECT clientRect, windowRect; GetWindowRect(dibWindow.hWnd, &windowRect); GetClientRect(dibWindow.hWnd, &clientRect); MoveWindow(dibWindow.hWnd, windowRect.left, windowRect.top, dibWindow.width + windowRect.right - clientRect.right, dibWindow.height + windowRect.bottom - clientRect.bottom, true); ShowWindow(dibWindow.hWnd, SW_SHOWNORMAL); UpdateWindow(dibWindow.hWnd); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); if(DispatchMessage(&msg)) return 1; } return 0;}LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ HDC hDC; switch(message) { case WM_CREATE: hDC = GetDC(hWnd); if(!hDC) return 1; dibWindow.hDrawDib = DrawDibOpen(); if(!dibWindow.hDrawDib) return 1; DrawDibBegin(dibWindow.hDrawDib, hDC, dibWindow.width, dibWindow.height, &dibWindow.biHeader, dibWindow.width, dibWindow.height, 0); ReleaseDC(hWnd, hDC); break; case WM_PAINT: hDC = GetDC(hWnd); if(!hDC) return 1; DrawDibDraw( dibWindow.hDrawDib, hDC, 0, 0, dibWindow.width, dibWindow.height, &dibWindow.biHeader, dibWindow.dibBuf, 0, 0, dibWindow.width, dibWindow.height, DDF_SAME_DRAW); ReleaseDC(hWnd, hDC); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;}#endif // SYSWIN32 || defined SYSWIN64
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -