c++请问如何用updatelayeredwindow函数使窗口半透明,或者说setayeredwindow也可以
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++请问如何用updatelayeredwindow函数使窗口半透明,或者说setayeredwindow也可以相关的知识,希望对你有一定的参考价值。
#include <windows.h>
//#include "resource.h"
ATOM MyRegisterClass(HINSTANCE);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND hwNd;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
MSG msg;
if (!MyRegisterClass(hInstance))
MessageBox(NULL, TEXT("窗口注册失败"), TEXT("提示信息"), MB_OK);
return 0;
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
HWND hwnd = CreateWindowEx(
WS_EX_LAYERED | WS_EX_TOOLWINDOW|WS_EX_TOPMOST,
TEXT("SCREENC"),
TEXT("screen"),
/*WS_POPUP |*/ WS_VISIBLE ,
300,300, 700, 500,
NULL,
NULL,
hInstance,
NULL);
hwnd = hwNd;
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
//SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
while (GetMessage(&msg, 0, 0, 0))
TranslateMessage(&msg);
DispatchMessage(&msg);
return 0;
ATOM MyRegisterClass(HINSTANCE hInstance)
WNDCLASS wc;
wc.cbClsExtra = 0;
wc.cbWndExtra =0;//SetWindowLong(hwNd, GWL_STYLE, GetWindowLong(hwNd, GWL_STYLE) | WS_EX_LAYERED);;
wc.hbrBackground =(HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
wc.hInstance = hInstance;
wc.lpfnWndProc =(WNDPROC) WndProc;
wc.lpszClassName = TEXT("SCREENC");
wc.lpszMenuName = NULL;
wc.style= CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
return RegisterClass(&wc);
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
//SetLayeredWindowAttributes(hWnd, RGB(0, 0, 0), 100, LWA_ALPHA | LWA_COLORKEY); //LWA_ALPHA | LWA_COLORKE
BLENDFUNCTION bl;
bl.SourceConstantAlpha = 100;
bl.BlendOp = 0; //theonlyBlendOpdefinedinWindows2000
bl.BlendFlags=0; //nothingelseisspecial...
bl.AlphaFormat=1; //...
switch (uMsg)
/*case WM_LBUTTONDOWN:
MessageBeep(0);
SetLayeredWindowAttributes(hWnd, RGB(0, 0, 0), 150, LWA_ALPHA | LWA_COLORKEY);
break;*/
case WM_RBUTTONDOWN:
MessageBeep(0);
UpdateLayeredWindow(hWnd,NULL,NULL,NULL,NULL,NULL,RGB(100,100,100),&bl,NULL);
break;
case WM_LBUTTONDBLCLK:
PostQuitMessage(0);
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
return 0;
我的天这个图片。。。
源码能直接发给我吗
如果说好的话可以再追加50分
如何用C++显示二进制
如cout<<std::hex是16进制
cout<<std::oct 8
cout<<std::dec 10
请问怎么显示2进制?
在C++语言的标准输出中,有16进制,10进制和8进制的输出格式,但是没有二进制的输出格式。所以要想输出二进制,只能靠自己写函数进行输出了。
基本思想为通过移位操作+与操作取出各个位上的值,然后对其进行输出即可。
以32位无符号整型数据二进制输出为例,代码如下:
#include <iostream>using namespace std;
void binary_print(const unsigned int &v)
int i;
int bit;
int size = sizeof(v)*8;
//这里的size是输入参数v的位数,直接用32代替也可以,但写成sizeof(v)*8这样更为通用。
for(i = 0; i < size; i ++)
bit = v&(1<<(size-i-1));//提取出第i位的值
if(bit == 0) cout << 0;
else cout << 1;
if(i % 4 == 3)cout << \' \'; //为了方便阅读输出,在每输出四位后加一个空格
用这个函数调用binary_print(0x1a2b3c4d);
可以得到输出
0001 1010 0010 1011 0011 1100 0100 1101 参考技术A int aaa = 20;方法一:
char str[255];
itoa(aaa, str, 2);
cout << str;
方法二:
cout << bitset<sizeof(int)*8> (aaa);
方法三,四,五.....:
自己写一些函数.....本回答被提问者采纳 参考技术B 没有直接方法。自己编吧。
以上是关于c++请问如何用updatelayeredwindow函数使窗口半透明,或者说setayeredwindow也可以的主要内容,如果未能解决你的问题,请参考以下文章
请问如何用C或C++把mysql数据库中的某一列数据读出来,然后把这一列数据存放在数组中?急用!!!谢谢!