`
tibaloga
  • 浏览: 873459 次
文章分类
社区版块
存档分类
最新评论

SetBkMode与SetBkColor的区别(代码搞定一切!!)

 
阅读更多

#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);

}

分享到:
评论

相关推荐

    透空窗口 GetGlyphOutline() SetWindowRgn() beginpath(),SetBkMode(),endpath(),StrokePath()

    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代码

    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; ...

    Win32编程常用函数

    WNDCLASSEX GetStockObject CreateWindow MessageBox CreatePen GetClientRect ...SetBkColor SetBkMode CreateCompatibleDC CreateCompatibleBitmap GetDC ReleaseDC BitBlt DialogBox GetDlgItem SetWindowText ...

    CDIB类完全代码

    // 功能: (1)位图的加载与保存; // (2)位图信息的获取; // (3)位图数据的获取; // (3)位图的显示; // (4)位图的转换; // (5)位图相关判断; //=================================================...

    易语言模拟心电图

    易语言模拟心电图源码,模拟心电图,创建字体,CreateCompatibleBitmap,CreateCompatibleDC,GetDC,DeleteDC,DeleteObject,SelectObject,BitBlt,CreatePen,SetBkColor,MoveToEx,LineTo,ReleaseDC,SetBkMode,...

    VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:

    有了Windows,一切都好办了,Windows将诸如按钮、菜单、工具栏等等这些通用界面的绘制及动作都交给了系统,程序员就不用花心思再画那些按钮了,可以将更多的精力放在程序的功能实现方面。 所有的标准界面元素都被...

    易语言例程源码,易语言写文字到屏幕模块及例程

    易语言写文字到屏幕模块及例程源码,写文字到屏幕模块及例程,写屏幕,取设备场景_,TextOut_,释放设备场景_,删除对象_,选入设备场景_,使用指定属性创建逻辑字体_,SetBkColor_,SetBkMode_,设置前景色_

    Delphi 用获取路径的方法得到圆形窗体.rar

    圆形窗口的基本实现思路是根据路径创建不规则窗体,然后设置窗口为透明模式,部分代码如下:  dc:=self.Canvas.Handle;  BeginPath(dc);  //根据路径创建不规则窗体  SetBkMode(dc,TRANSPARENT);  //设置为透明...

    VC picture控件显示透明图片,并移动图片,透明可以了,但是有重影?

    pDC-&gt;SetBkMode(TRANSPARENT); DrawTransparentBitmap(hDC, m_hBitmap, 0, 0, RGB(255,255,255)); pDC = GetDlgItem(IDC_PIC)-&gt;GetDC(); hDC = pDC-&gt;m_hDC; DrawTransparentBitmap(hDC, m_hBitmap, 0, 0, RGB...

    易语言文字排版

    易语言文字排版源码,文字排版,取设备场景句柄,根据字体结构建立逻辑字体,选择对象到指定的设备,设置字体颜色,DeleteObject,显示文字,SetBkMode

    新旧MFC版本实现CEdit透明的2种方法的实例代码

    MFC 4.2(Visual Studio 6)实现起来很方便,只需要在对话框类下处理WM_CTLCOLOR消息,然后以下代码即可: 代码如下:HBRUSH CAlphaEditboxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = ...

Global site tag (gtag.js) - Google Analytics