⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demomwpic.c

📁 基于嵌入式图形库microwindows的简单示例程序10例
💻 C
字号:
 /*********************************************************************Win32 API demos:bmp,gif,jpg picture support in Microwindows****by zhang kaohua 2004,2,23*****************************************************************/#include "windows.h"#include "wintern.h"#include "device.h"//#include "wintools.h"//#include <string.h>//#include <stdio.h>//#include <stdlib.h>//extern MWINMAGHDR img;extern MWIMAGEHDR image_car8;extern MWIMAGEHDR image_penguin;extern MWIMAGEHDR image_microwin;#define APPCLASS	"test"LRESULT CALLBACK WndProc(HWND hwnd, UINT Msg, WPARAM wp, LPARAM lp);//LRESULT CALLBACK WndbtProc(HWND bt, UINT bMsg, WPARAM wp, LPARAM lp);int RegisterAppClass(void){	WNDCLASS	wc;	wc.style = CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW;	wc.lpfnWndProc = (WNDPROC)WndProc;	wc.cbClsExtra = 0;	wc.cbWndExtra = 0;	wc.hInstance = 0;	wc.hIcon = 0; /*LoadIcon(GetHInstance(), MAKEINTRESOURCE( 1));*/	wc.hCursor = 0; /*LoadCursor(NULL, IDC_ARROW);*/	wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);	wc.lpszMenuName = NULL;	wc.lpszClassName =  APPCLASS;	RegisterClass( &wc);	return 1;}HWND CreateAppWindow(void){	HWND	hwnd;	int 	width, height;	RECT 	r;	static int nextid = 0;	GetWindowRect(GetDesktopWindow(), &r);	//width = height = r.right / 2;  width=300;  height=210;	hwnd = CreateWindowEx(WS_EX_LAYERED, APPCLASS,		"Microwindows Win32 API picture demo",		WS_OVERLAPPEDWINDOW | WS_VISIBLE,		CW_USEDEFAULT, CW_USEDEFAULT,		width, height,		NULL, (HMENU)++nextid, NULL, NULL);  return hwnd;}LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp){	PAINTSTRUCT	ps;	HWND		sibwp;	HDC		hdcMem,hdc;  HBITMAP		hbmp, hbmpOrg;	HBRUSH		hbr;	RECT		rc;    //kh  HGDIOBJ oldfont;  HDC mydc;  //HBITMAP hpic;  extern int mwpaintSerial;	switch(msg) {	case WM_ERASEBKGND:		/* don't erase with screen dc, must alpha blend bkgnd*/		return 1;	case WM_PAINT:				mwforceNCpaint = TRUE;		/* repaint lower windows before alpha blending this window*/		++hwnd->unmapcount;	/* tricky don't clip this window*/		SendMessage(rootwp, WM_PAINT, 0, 0);		for(sibwp=hwnd->siblings; sibwp; sibwp=sibwp->siblings)			SendMessage(sibwp, WM_PAINT, 0, 0);		--hwnd->unmapcount;		/* then queue repaint for higher windows*/		for(sibwp=hwnd->parent->children; sibwp != hwnd;							sibwp=sibwp->siblings)			/* don't paint if already painted by above code*/			if(sibwp->paintSerial != mwpaintSerial)				PostMessage(sibwp, WM_PAINT, 0, 0);		/* now paint this window offscreen and blend with screen*/		hdc=BeginPaint(hwnd, &ps);		GetClientRect(hwnd, &rc);		/* redirect painting to offscreen dc*/		hdcMem = CreateCompatibleDC(ps.hdc);		hbmp = CreateCompatibleBitmap(hdcMem, rc.right, rc.bottom);		hbmpOrg = SelectObject(hdcMem, hbmp);		/* paint window to offscreen*/		hbr = (HBRUSH)GetClassLong(hwnd, GCL_HBRBACKGROUND);		FillRect(hdcMem, &rc, hbr);		/*SelectObject(hdcMem, GetStockObject(DEFAULT_GUI_FONT));		SetBkMode(hdcMem, TRANSPARENT);    #define TEXTSTRING	"This demonstrates alpha blending"		TextOut(hdcMem, 20, 20, TEXTSTRING, strlen(TEXTSTRING));    */    //kh    oldfont=SelectObject(hdcMem,CreateFont(16,			0,0,0,0,0,0,0,0,0,0,0,			FF_DONTCARE|DEFAULT_PITCH,			"HZKFONT"));    TextOut(hdcMem,5,10,"Alpha混和演示: ",-1);    SetBkColor(hdcMem,0x00ff00);    SetTextColor (hdcMem,0xff00ff);    TextOut(hdcMem, 60, 120, "我是透明的窗口,发现了吗?", -1);    		/* alpha blend blit offscreen map with physical screen*/		BitBlt(ps.hdc, 0, 0, rc.right, rc.bottom, hdcMem, 0, 0,			MWROP_BLENDCONSTANT | 150);    MwRegisterButtonControl(NULL);  CreateWindowEx(0L, "BUTTON",		"CAR",		WS_CHILD | WS_VISIBLE,		20, 160, 50, 20,		hwnd, (HMENU)1, NULL, NULL);  CreateWindowEx(0L, "BUTTON",		"PENGUIN",		WS_CHILD | WS_VISIBLE,		125, 160, 50, 20,		hwnd, (HMENU)2, NULL, NULL);  //SendMessage(bt, MW_LBUTTONDOWN, 0, 0);  CreateWindowEx(0L, "BUTTON",		"CLEAR",		WS_CHILD | WS_VISIBLE,		230, 160, 50, 20,		hwnd, (HMENU)3, NULL, NULL);      		DeleteObject(SelectObject(hdcMem, hbmpOrg));    DeleteObject(SelectObject(hdc,oldfont));		DeleteDC(hdcMem);		EndPaint(hwnd, &ps);		break;//kh      case WM_COMMAND:     switch(LOWORD(wp))     {       case 1:        mydc=GetDC(hwnd);        DrawDIB(mydc, 0, 0, &image_car8);        ReleaseDC(hwnd,mydc);       break;       case 2:        mydc=GetDC(hwnd);        DrawDIB(mydc, 100, 5, &image_penguin);        ReleaseDC(hwnd,mydc);       break;       case 3:        SendMessage(hwnd, WM_PAINT, 0, 0);        //pic=LoadBitmap(hInstace,"");               break;       default:       break;     }  break;    	default:		return DefWindowProc( hwnd, msg, wp, lp);	}	return( 0);}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,	int nShowCmd){	MSG msg;	/* Force XORMOVE window redraw algorithm, required	 * for this version of alpha blend painting	 */	mwERASEMOVE = FALSE;	RegisterAppClass();	/* set background wallpaper*/	MwSetDesktopWallpaper(&image_microwin);	/* must update root window until alpha blend blitting	 * uses off screen memory for hidden windows, rather than	 * screen memory*/	UpdateWindow(GetDesktopWindow());//	CreateAppWindow();	CreateAppWindow();	/* type ESC to quit...*/	while( GetMessage(&msg, NULL, 0, 0)) {		TranslateMessage(&msg);		DispatchMessage(&msg);	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -