#include<windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow){
static TCHAR szAppName[]= TEXT("MyPen");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName = szAppName;
if(!RegisterClass(&wndclass)){
MessageBox(NULL, TEXT("Register failure..."),
szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hwnd, iCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL, 0, 0)){
DispatchMessage(&msg);
TranslateMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam){
static int cxClient, cyClient, i;
HDC hdc;
PAINTSTRUCT ps;
HPEN hPen;
LOGPEN logPen;
switch(message){
case WM_SIZE:
cxClient = LOWORD(lParam);
cyClient = HIWORD(lParam);
i = 0;
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd,&ps);
SetBkColor(hdc, RGB(0, 255, 255));
// 注释运行和不注释它运行
// SetBkMode(hdc, TRANSPARENT); //若为OPAQUE标志则与上面一样
switch(i){
case 0:
hPen = CreatePen(PS_SOLID, 2, RGB(10, 10, 10));
break;
case 1:
hPen = CreatePen(PS_DASH, 1, RGB(20, 20, 20));
break;
case 2:
hPen = CreatePen(PS_DOT, 1, RGB(255, 30, 30));
break;
case 3:
hPen = CreatePen(PS_DASHDOT, 1, RGB(40, 40, 40));
break;
case 4:
hPen = CreatePen(PS_DASHDOTDOT, 1, RGB(50, 50, 50));
break;
case 5:
logPen.lopnStyle = PS_SOLID;
logPen.lopnColor = RGB(0, 60, 60);
/*
* 此处是非常有意思的,下面有说明
*/
logPen.lopnWidth.x = 5;
hPen = CreatePenIndirect(&logPen);
break;
default:
hPen =(HPEN) GetStockObject(BLACK_PEN);
break;
}
SelectObject(hdc, hPen);
MoveToEx(hdc, 0,(i + 1)* cyClient / 10,NULL);
LineTo(hdc, cxClient,(i + 1)* cyClient / 10);
TextOut(hdc, i* cxClient / 7, 4 * cyClient / 5,"windows", lstrlen("windows"));
if(i++<= 5)
InvalidateRect(hwnd,NULL,FALSE);
EndPaint(hwnd, &ps);
// 删除GDI对象, 释放内存!!
DeleteObject(hPen);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
分享到:
相关推荐
3.讲解Win32 API函数:beginpath(),SetBkMode(),endpath(),StrokePath() SetWindowRgn() 有人用“GetGlyphOutline()”去实现,而这里用简单的方法就做到了。 使用“beginpath”可以打开画布的“path bracket”, ...
易语言高亮显示模块代码源码,高亮显示模块代码,初始化,消息处理子程序,内容被改变,刷新,启用编辑框高亮,添加高亮文本,应用编辑框高亮,消息处理子程序2,GetDC,SetBkMode,SelectObject,SetTextColor,TextOut,...
易语言高亮显示源代码源码,高亮显示源代码,初始化,消息处理子程序,刷新,GetDC,SetBkMode,SelectObject,SetTextColor,TextOut,DeleteObject,ReleaseDC,CreateFont,SetWindowLong,CallWindowProc,GetDeviceCaps,MulDiv...
stdafx.h的代码// This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a ...
易语言内存图片写字源码,内存图片写字,CreateCompatibleDC,CreateDIBSection,GetDIBits,SetDIBitsToDevice,SelectObject,DeleteDC,DeleteObject,GetDC,TextOut,CreateFont,SetTextColor,SetBkColor,SetBkMode
SetBkMode (hdc, TRANSPARENT) ; TextOut (hdc, xChar, yChar / 2, szTop, (sizeof szTop) - 1) ; TextOut (hdc, xChar, yChar / 2, szUnd, (sizeof szUnd) - 1) ; EndPaint (hwnd, &ps); return 0; ...
WNDCLASSEX GetStockObject CreateWindow MessageBox CreatePen GetClientRect ...SetBkColor SetBkMode CreateCompatibleDC CreateCompatibleBitmap GetDC ReleaseDC BitBlt DialogBox GetDlgItem SetWindowText ...
// 功能: (1)位图的加载与保存; // (2)位图信息的获取; // (3)位图数据的获取; // (3)位图的显示; // (4)位图的转换; // (5)位图相关判断; //=================================================...
易语言模拟心电图源码,模拟心电图,创建字体,CreateCompatibleBitmap,CreateCompatibleDC,GetDC,DeleteDC,DeleteObject,SelectObject,BitBlt,CreatePen,SetBkColor,MoveToEx,LineTo,ReleaseDC,SetBkMode,...
有了Windows,一切都好办了,Windows将诸如按钮、菜单、工具栏等等这些通用界面的绘制及动作都交给了系统,程序员就不用花心思再画那些按钮了,可以将更多的精力放在程序的功能实现方面。 所有的标准界面元素都被...
易语言写文字到屏幕模块及例程源码,写文字到屏幕模块及例程,写屏幕,取设备场景_,TextOut_,释放设备场景_,删除对象_,选入设备场景_,使用指定属性创建逻辑字体_,SetBkColor_,SetBkMode_,设置前景色_
圆形窗口的基本实现思路是根据路径创建不规则窗体,然后设置窗口为透明模式,部分代码如下: dc:=self.Canvas.Handle; BeginPath(dc); //根据路径创建不规则窗体 SetBkMode(dc,TRANSPARENT); //设置为透明...
pDC->SetBkMode(TRANSPARENT); DrawTransparentBitmap(hDC, m_hBitmap, 0, 0, RGB(255,255,255)); pDC = GetDlgItem(IDC_PIC)->GetDC(); hDC = pDC->m_hDC; DrawTransparentBitmap(hDC, m_hBitmap, 0, 0, RGB...
易语言文字排版源码,文字排版,取设备场景句柄,根据字体结构建立逻辑字体,选择对象到指定的设备,设置字体颜色,DeleteObject,显示文字,SetBkMode
MFC 4.2(Visual Studio 6)实现起来很方便,只需要在对话框类下处理WM_CTLCOLOR消息,然后以下代码即可: 代码如下:HBRUSH CAlphaEditboxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = ...