Windows编程基础 第八章 位图 坐标系映射模式 文字和字体 对话框

来源:互联网 发布:开淘宝网店收费吗 编辑:程序博客网 时间:2024/04/27 22:32

本文是截图:Windows编程基础 第八章   位图  坐标系映射模式   文字和字体  对话框

原文pdf文件下载地址是:http://yunpan.cn/cdeWFvDiwZeMy  访问密码 a9de










//程序用来演示位图的加载和使用#include "stdafx.h"#include "resource.h"#include "windows11.h"HINSTANCE g_hInst = NULL;int g_type=-1;void DrawBmp( HDC hDC ){//加载位图资源HBITMAP hBmp = LoadBitmap( g_hInst, MAKEINTRESOURCE(IDB_BITMAP1) );//获取位图的相关信息BITMAP bmpInfo = { 0 };GetObject( hBmp, sizeof(bmpInfo), &bmpInfo );//创建放置位图的DCHDC hBmpDC = CreateCompatibleDC( hDC );//将位图放入hBmpDCHBITMAP hOldBmp = (HBITMAP)SelectObject( hBmpDC, hBmp );//绘制位图BitBlt( hDC, 100, 100, bmpInfo.bmWidth, bmpInfo.bmHeight, hBmpDC, 0, 0, SRCCOPY );//取出位图SelectObject( hBmpDC, hOldBmp );//删除DCDeleteDC( hBmpDC );//删除位图DeleteObject( hBmp );}void DrawBmpStretch( HDC hDC ){//加载位图资源HBITMAP hBmp = LoadBitmap( g_hInst, MAKEINTRESOURCE(IDB_BITMAP1) );//获取位图的相关信息BITMAP bmpInfo = { 0 };GetObject( hBmp, sizeof(bmpInfo), &bmpInfo );//创建放置位图的DCHDC hBmpDC = CreateCompatibleDC( hDC );//将位图放入hBmpDCHBITMAP hOldBmp = (HBITMAP)SelectObject( hBmpDC, hBmp );//拉伸绘制StretchBlt( hDC, 200, 100, 300, 300, hBmpDC, 0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, SRCCOPY );//取出位图SelectObject( hBmpDC, hOldBmp );//删除DCDeleteDC( hBmpDC );//删除位图DeleteObject( hBmp );}void OnPaint( HWND hWnd, UINT nMsg,WPARAM wParam, LPARAM lParam ){PAINTSTRUCT ps = { 0 };HDC hDC = BeginPaint( hWnd, &ps );if (g_type==0){DrawBmp(hDC);} elseif(g_type==1){DrawBmpStretch(hDC);}EndPaint( hWnd, &ps );}VOID OnCommand( HWND   hWnd, UINT   nMsg,WPARAM wParam,LPARAM lParam ){int nCmd=LOWORD(wParam);switch(nCmd){case ID_32771:g_type=0;InvalidateRect(hWnd,NULL,TRUE);break;case ID_32772:g_type=1;InvalidateRect(hWnd,NULL,TRUE);break;case IDM_EXIT:PostQuitMessage(0);break;}}LRESULT CALLBACK WndProc( HWND   hWnd, UINT   nMsg,WPARAM wParam,LPARAM lParam ){switch( nMsg ){case WM_PAINT:OnPaint( hWnd, nMsg, wParam, lParam );break;case WM_DESTROY:PostQuitMessage( 0 );return 0;case  WM_COMMAND:OnCommand(hWnd,nMsg,wParam,lParam);break;}return DefWindowProc( hWnd, nMsg,wParam, lParam );}BOOL RegisterWnd( TCHAR * pszClassName ){WNDCLASSEX wce = { 0 };wce.cbSize        = sizeof( wce );wce.cbClsExtra    = 0;wce.cbWndExtra    = 0;wce.hbrBackground = HBRUSH(COLOR_WINDOW);wce.hCursor       = NULL;wce.hIcon         = NULL;wce.hIconSm       = NULL;wce.hInstance     = g_hInst;wce.lpfnWndProc   = WndProc;wce.lpszClassName = pszClassName;wce.lpszMenuName  = NULL;wce.style         = CS_HREDRAW|CS_VREDRAW;ATOM nAtom = RegisterClassEx( &wce );if( 0 ==  nAtom ){return FALSE;}return TRUE;}HWND CreateWnd( TCHAR * pszClassName ){HMENU hMenu = LoadMenu( g_hInst, MAKEINTRESOURCE(IDC_WINDOWS11) );HWND hWnd = CreateWindowEx( 0,pszClassName, L"MyWnd", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, hMenu, g_hInst,NULL );return hWnd;}void DisplayWnd( HWND hWnd ){ShowWindow( hWnd, SW_SHOW );UpdateWindow( hWnd );}void Message( ){MSG msg = { 0 };while( GetMessage( &msg, NULL, 0, 0 ) ){TranslateMessage( &msg );DispatchMessage( &msg );}}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR     lpCmdLine,int       nCmdShow){g_hInst = hInstance;RegisterWnd(L"MYWND" );HWND hWnd = CreateWnd(L"MYWND" );DisplayWnd( hWnd );Message( );return 0;}

//本程序用来演示坐标映射和字体#include "windows12.h"#include "stdafx.h"#include "resource.h"#include "stdio.h"#include "windows.h"HINSTANCE g_hInst=NULL;VOID OnCommand(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){int nCmd=LOWORD(wParam);//取得菜单项IDswitch(nCmd){case IDM_EXIT:PostQuitMessage(0);break;}}/*//这个Onpaint()函数用来演示坐标的映射VOID OnPaint(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){PAINTSTRUCT ps={0};HDC hDC=BeginPaint(hWnd,&ps);Rectangle(hDC,100,100,200,200);int OldMapMethod =SetMapMode(hDC,MM_LOMETRIC);Rectangle(hDC,300,-300,200,-200);SetMapMode(hDC,MM_HIMETRIC);Rectangle(hDC,100,-300,200,-200);SetMapMode(hDC,OldMapMethod);Rectangle(hDC,100,300,200,200);SetViewportExtEx(hDC,6,6,NULL);SetWindowExtEx(hDC,2,2,NULL);Rectangle(hDC,300,300,400,400);EndPaint(hWnd,&ps);}*///这个OnPaint()函数用来演示字体的使用VOID OnPaint(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){PAINTSTRUCT ps={0};HDC hDC=BeginPaint(hWnd,&ps);//设置文字颜色COLORREF nColor=SetTextColor(hDC,RGB(255,0,0));//设置背景颜色SetBkColor(hDC,RGB(0,255,255));//创建字体HFONT hFont=CreateFont(300,30,100,0,FW_BLACK,TRUE,TRUE,TRUE,DEFAULT_CHARSET,0,0,0,0,TEXT("宋体"));//把字加入到DC中HFONT hOldFont=(HFONT)SelectObject(hDC,hFont);//输出文字TCHAR szText1[100]=TEXT("hello  text,long long  long  long ");TextOut(hDC,100,100,szText1,_tcslen(szText1));//设置背景模式SetBkMode(hDC,TRANSPARENT);RECT rect={0};rect.left=500;rect.top=520;rect.right=700;rect.bottom=700;Rectangle(hDC,rect.left,rect.top,rect.right,rect.bottom);DrawText(hDC,szText1,_tcslen(szText1),&rect,DT_CENTER|DT_WORDBREAK);TCHAR  szText[100]=TEXT("E你xtTex好!");INT nText[10]={30,0,10,100,50,60,70,80,80,80};ExtTextOut(hDC,500,500,ETO_OPAQUE,NULL,szText,_tcslen(szText),NULL);SetTextColor(hDC,nColor);SelectObject(hDC,hOldFont);DeleteObject(hFont);EndPaint(hWnd,&ps);}LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){switch(uMsg){case WM_DESTROY:PostQuitMessage(0);break;case WM_COMMAND://用来处理菜单消息OnCommand(hWnd,uMsg,wParam,lParam);break;case WM_PAINT:OnPaint(hWnd,uMsg,wParam,lParam);break;}return DefWindowProc(hWnd,uMsg,wParam,lParam);}BOOL   RegisterWnd(TCHAR * pszClassName){WNDCLASSEX  wce={0};wce.cbClsExtra=0;wce.cbSize=sizeof(wce);wce.cbWndExtra=0;wce.hbrBackground=HBRUSH(COLOR_WINDOW+1);//GetStockBrush(WHITE_BRUSH);wce.hCursor=NULL;wce.hIcon=NULL;wce.hIconSm=NULL;wce.hInstance=g_hInst;wce.lpfnWndProc=WndProc;wce.lpszClassName=pszClassName;wce.lpszMenuName=NULL;wce.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;ATOM   result=RegisterClassEx(&wce);if (result==0){MessageBox(NULL,TEXT("窗口类注册失败!"),TEXT("窗口类注册失败!"),MB_OK);return FALSE;}return TRUE;}VOID  DisplayWindow(HWND hWnd)    {ShowWindow(hWnd,SW_SHOW);UpdateWindow(hWnd);}VOID Message(HWND hWnd){HACCEL hAccel=LoadAccelerators(g_hInst,MAKEINTRESOURCE(IDC_WINDOWS12));MSG  msg={0};while(GetMessage(&msg,NULL,0,0)){TranslateAccelerator(hWnd,hAccel,&msg);TranslateMessage(&msg);DispatchMessage(&msg);}}HWND  CreateMyWindow(TCHAR *  pszClassName){//加载字符串资源TCHAR szText[100]=TEXT("");LoadString(g_hInst,IDS_STRINGMain,szText,100);//加载菜单资源HMENU hMenu=LoadMenu(g_hInst,MAKEINTRESOURCE(IDC_WINDOWS12));HWND hWndNew=CreateWindowEx(0,pszClassName,szText,WS_OVERLAPPEDWINDOW|WS_THICKFRAME,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,hMenu,g_hInst,NULL);return hWndNew;}INT WINAPI  WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd ){RegisterWnd(TEXT("MyWnd"));HWND hWnd=CreateMyWindow(TEXT("MyWnd"));DisplayWindow(hWnd);Message(hWnd);return TRUE;}


//本程序用来演示一个有模式对话框的创建和关闭#include "windows12.h"#include "stdafx.h"#include "resource.h"#include "stdio.h"#include "windows.h"HINSTANCE g_hInst=NULL;BOOL CALLBACK  DialogProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){switch(uMsg){case WM_SYSCOMMAND:switch(wParam){case  SC_CLOSE:EndDialog(hWnd,1);break;}}return 0;}VOID setting(HWND hWnd){int result=DialogBox(g_hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,DialogProc);if (result==1){MessageBox(NULL,TEXT("应用设置"),TEXT("设置"),MB_OK);}else{MessageBox(NULL,TEXT("取消设置"),TEXT("设置"),MB_OK);}}VOID OnCommand(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){int nCmd=LOWORD(wParam);//取得菜单项IDswitch(nCmd){case IDM_EXIT:PostQuitMessage(0);break;case ID_DIALOGBOX:setting(hWnd);break;}}LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){switch(uMsg){case WM_DESTROY:PostQuitMessage(0);break;case WM_COMMAND://用来处理菜单消息OnCommand(hWnd,uMsg,wParam,lParam);break;}return DefWindowProc(hWnd,uMsg,wParam,lParam);}BOOL   RegisterWnd(TCHAR * pszClassName){WNDCLASSEX  wce={0};wce.cbClsExtra=0;wce.cbSize=sizeof(wce);wce.cbWndExtra=0;wce.hbrBackground=HBRUSH(COLOR_WINDOW+1);//GetStockBrush(WHITE_BRUSH);wce.hCursor=NULL;wce.hIcon=NULL;wce.hIconSm=NULL;wce.hInstance=g_hInst;wce.lpfnWndProc=WndProc;wce.lpszClassName=pszClassName;wce.lpszMenuName=NULL;wce.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;ATOM   result=RegisterClassEx(&wce);if (result==0){MessageBox(NULL,TEXT("窗口类注册失败!"),TEXT("窗口类注册失败!"),MB_OK);return FALSE;}return TRUE;}VOID  DisplayWindow(HWND hWnd)    {ShowWindow(hWnd,SW_SHOW);UpdateWindow(hWnd);}VOID Message(HWND hWnd){HACCEL hAccel=LoadAccelerators(g_hInst,MAKEINTRESOURCE(IDC_WINDOWS12));MSG  msg={0};while(GetMessage(&msg,NULL,0,0)){TranslateAccelerator(hWnd,hAccel,&msg);TranslateMessage(&msg);DispatchMessage(&msg);}}HWND  CreateMyWindow(TCHAR *  pszClassName){//加载字符串资源TCHAR szText[100]=TEXT("");LoadString(g_hInst,IDS_STRINGMain,szText,100);//加载菜单资源HMENU hMenu=LoadMenu(g_hInst,MAKEINTRESOURCE(IDC_WINDOWS12));HWND hWndNew=CreateWindowEx(0,pszClassName,szText,WS_OVERLAPPEDWINDOW|WS_THICKFRAME,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,hMenu,g_hInst,NULL);return hWndNew;}INT WINAPI  WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd ){RegisterWnd(TEXT("MyWnd"));HWND hWnd=CreateMyWindow(TEXT("MyWnd"));DisplayWindow(hWnd);Message(hWnd);return TRUE;}


0 0
原创粉丝点击