win32窗口编程实例代码,自己敲出来的,仅供新人参考

来源:互联网 发布:淘宝海淘靠谱吗 编辑:程序博客网 时间:2024/06/07 02:09
// mydemo1.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "mydemo1.h"


#define WM_MYMSG WM_USER+10
#define WM_MYMSG_ WM_USER+11
#define WM_MYMSG_A WM_USER+12
#define MAX_LOADSTRING 100

// 全局变量:

HWND hWndb,hWndB,MYButton,hwndX,hWnd_A;
HINSTANCE hInst; // 当前实例
TCHAR szTitle[MAX_LOADSTRING]=_T("测试主窗口"); // 标题栏文本
TCHAR szTitle1[MAX_LOADSTRING]=_T("测试子窗口"); // 标题栏文本
TCHAR szTitle2[MAX_LOADSTRING]=_T("测试B窗口"); // 标题栏文本
TCHAR szWindowClass[MAX_LOADSTRING]=_T("主窗口"); // 主窗口类名
TCHAR szWindowClass1[MAX_LOADSTRING]=_T("子窗口");
TCHAR szWindowClass2[MAX_LOADSTRING]=_T("B窗口");
TCHAR szWindowClass3[MAX_LOADSTRING]=_T("c窗口");
TCHAR MyButton[MAX_LOADSTRING]=_T("按钮");
// 此代码模块中包含的函数的前向声明:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc1(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc2(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc3(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK WndProc4(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK EnumChildWndProc(HWND, LPARAM);
DWORD WINAPI ThreadProc(LPVOID);

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

// TODO: 在此放置代码。
MSG msg;

HACCEL hAccelTable;//加速表句柄

// 初始化全局字符串
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_MYDEMO1, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// 执行应用程序初始化:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
//调入加速表
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MYDEMO1));
// DWORD threadID;
// HANDLE hThread;
// hThread = CreateThread(NULL,0,ThreadProc,NULL,0,&threadID);
// CloseHandle(hThread);
// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))//翻译加速键
{
TranslateMessage(&msg);//将虚拟键消息转换为字符消息,
//字符消息被寄送到调用线程的消息队列里,
//当下一次线程调用函数GetMessage或PeekMessage时被读出
DispatchMessage(&msg);//分发一个消息给窗口程序
}
}

return (int) msg.wParam;
}



//
// 函数: MyRegisterClass()
//
// 目的: 注册窗口类。
//
// 注释:
//
// 仅当希望
// 此代码与添加到 Windows 95 中的“RegisterClassEx”
// 函数之前的 Win32 系统兼容时,才需要此函数及其用法。调用此函数十分重要,
// 这样应用程序就可以获得关联的
// “格式正确的”小图标。
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;//水平或垂直方向的宽度变化是重绘窗口
wcex.lpfnWndProc = WndProc;//指向窗口过程函数的指针
wcex.cbClsExtra = 0;//指定紧跟在窗口类结构后的附加字节数
wcex.cbWndExtra = 0;//指定紧跟在窗口实例的附加字节数。
//如果一个应用程序在资源中用CLASS伪指令注册一个对话框类时,
//则必须把这个成员设成DLGWINDOWEXTRA。
wcex.hInstance = hInstance;//本模块的实例句柄
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYDEMO1));//图标句柄
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);//光标句柄
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景画刷句柄
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_MYDEMO1);//指向菜单的指针
//wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;//指向类名称的指针
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));//和窗口类关联的小图标

WNDCLASSEX wcex1;

wcex1.cbSize = sizeof(WNDCLASSEX);

wcex1.style = CS_HREDRAW | CS_VREDRAW;
wcex1.lpfnWndProc = WndProc1;
wcex1.cbClsExtra = 0;
wcex1.cbWndExtra = 0;
wcex1.hInstance = hInstance;
wcex1.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYDEMO1));
wcex1.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex1.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
/*wcex1.lpszMenuName = MAKEINTRESOURCE(IDC_MYDEMO1);*/
wcex1.lpszMenuName = NULL;
wcex1.lpszClassName = szWindowClass1;
wcex1.hIconSm = LoadIcon(wcex1.hInstance, MAKEINTRESOURCE(IDI_SMALL));

WNDCLASSEX wcex2;

wcex2.cbSize = sizeof(WNDCLASSEX);

wcex2.style = CS_HREDRAW | CS_VREDRAW;
wcex2.lpfnWndProc = WndProc2;
wcex2.cbClsExtra = 0;
wcex2.cbWndExtra = 0;
wcex2.hInstance = hInstance;
wcex2.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYDEMO1));
wcex2.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex2.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex2.lpszMenuName = MAKEINTRESOURCE(IDC_MYDEMO1);
/*wcex2.lpszMenuName = NULL;*/
wcex2.lpszClassName = szWindowClass2;
wcex2.hIconSm = LoadIcon(wcex2.hInstance, MAKEINTRESOURCE(IDI_SMALL));

WNDCLASSEX wcex3;

wcex3.cbSize = sizeof(WNDCLASSEX);

wcex3.style = CS_HREDRAW | CS_VREDRAW;
wcex3.lpfnWndProc = WndProc3;
wcex3.cbClsExtra = 0;
wcex3.cbWndExtra = 0;
wcex3.hInstance = hInstance;
wcex3.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYDEMO1));
wcex3.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex3.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
/*wcex1.lpszMenuName = MAKEINTRESOURCE(IDC_MYDEMO1);*/
wcex3.lpszMenuName = NULL;
wcex3.lpszClassName = MyButton;
wcex3.hIconSm = LoadIcon(wcex2.hInstance, MAKEINTRESOURCE(IDI_SMALL));

WNDCLASSEX wcex4;

wcex4.cbSize = sizeof(WNDCLASSEX);
wcex4.style = CS_HREDRAW | CS_VREDRAW;//水平或垂直方向的宽度变化是重绘窗口
wcex4.lpfnWndProc = WndProc4;//指向窗口过程函数的指针
wcex4.cbClsExtra = 0;//指定紧跟在窗口类结构后的附加字节数
wcex4.cbWndExtra = 0;//指定紧跟在窗口实例的附加字节数。
//如果一个应用程序在资源中用CLASS伪指令注册一个对话框类时,
//则必须把这个成员设成DLGWINDOWEXTRA。
wcex4.hInstance = hInstance;//本模块的实例句柄
wcex4.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYDEMO1));//图标句柄
wcex4.hCursor = LoadCursor(NULL, IDC_ARROW);//光标句柄
wcex4.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//背景画刷句柄
wcex4.lpszMenuName = MAKEINTRESOURCE(IDC_MYDEMO1);//指向菜单的指针,
wcex4.lpszClassName = szWindowClass3;//指向类名称的指针
wcex4.hIconSm = LoadIcon(wcex4.hInstance, MAKEINTRESOURCE(IDI_SMALL));//和窗口类关联的小图标

return( RegisterClassEx(&wcex) && RegisterClassEx(&wcex1)&&
RegisterClassEx(&wcex2)&& RegisterClassEx(&wcex3)&& RegisterClassEx(&wcex4));
}


//
// 函数: InitInstance(HINSTANCE, int)
//
// 目的: 保存实例句柄并创建主窗口
//
// 注释:
//
// 在此函数中,我们在全局变量中保存实例句柄并
// 创建和显示主程序窗口。
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // 将实例句柄存储在全局变量中
HWND hWnd,hWndC;
// hWnd_A = CreateWindowEx(NULL,szWindowClass, szTitle,
////WS_OVERLAPPED,
//WS_POPUPWINDOW,
// CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

hWnd_A = CreateWindowEx(NULL,szWindowClass, szTitle,
//WS_OVERLAPPEDWINDOW,
WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
0, 0,500,500, NULL, NULL, hInstance, NULL);
TCHAR szTitle[15] = {0};
_stprintf(szTitle, _T("0x%08x"), hWnd_A);

SetWindowText(hWnd_A, szTitle);

// hWnd = CreateWindowEx(NULL,szWindowClass, szTitle, WS_POPUP ,
// 0,0,300,300, NULL, NULL, hInstance, NULL);
// hWnd = CreateWindowEx(NULL,szWindowClass, szTitle, WS_POPUPWINDOW|WS_CAPTION|WS_MAXIMIZEBOX,
// 0,0,300,300, NULL, NULL, hInstance, NULL);

hWndB = CreateWindowEx(
//NULL,
WS_EX_TOPMOST,
//WS_EX_LAYERED,
szWindowClass2,
szTitle2,
//WS_OVERLAPPEDWINDOW,
WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
0, 0, 400, 400,
NULL,
//hWnd_A,
//HWND_MESSAGE,
NULL,
hInstance,
NULL);
TCHAR szTitle_a[15] = {0};
_stprintf(szTitle_a, _T("0x%08x"), hWndB);

SetWindowText(hWndB, szTitle_a);
// hWndC = CreateWindowEx(NULL,_T("BUTTON"), _T("play"),
// //WS_CHILDWINDOW|BS_DEFPUSHBUTTON|WS_CLIPSIBLINGS,
// WS_CHILDWINDOW|BS_DEFPUSHBUTTON,
// 100, 100, 100, 100, hWnd, NULL, hInstance, NULL);
if (!hWnd_A||!hWndB)
{
return FALSE;
}


ShowWindow(hWnd_A, nCmdShow);
UpdateWindow(hWnd_A);

ShowWindow(hWndB, nCmdShow);
UpdateWindow(hWndB);

// ShowWindow(hWndC, nCmdShow);
// UpdateWindow(hWndC);

return TRUE;
}

//
// 函数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
// 目的: 处理主窗口的消息。
//
// WM_COMMAND - 处理应用程序菜单
// WM_PAINT - 绘制主窗口
// WM_DESTROY - 发送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
int ret;
UINT uint;
TCHAR str[] = _T("这是一个测试程序!这是一个测试程序!");
PAINTSTRUCT ps;
HDC hdc;
HWND hWnd1,phWnd;
RECT rect;
LONG ExdStyle;
static int i=0;
TCHAR szTitle[15] = {0};
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_ACTIVATE:
OutputDebugString(_T("leo cccccccccc"));
break;
case WM_ACTIVATEAPP:
OutputDebugString(_T("leo aaaaaaaaaa"));
break;
case WM_CHAR:
MessageBox(hWnd,_T("2222222222"),_T("53kf"),MB_OK);
break;
case WM_CREATE:
MYButton = CreateWindowEx(
NULL,
MyButton,//必须为:button
_T("确定"),//按钮上显示的字符
//WS_CHILDWINDOW|WS_CAPTION|WS_CLIPSIBLINGS,
//WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
WS_POPUP|WS_CAPTION|WS_CLIPSIBLINGS,
//WS_CHILDWINDOW|WS_CAPTION|WS_CLIPSIBLINGS|WS_DISABLED,
300, 200, 200, 200, //x,y,宽,高
hWnd,
//NULL,
//(HMENU)IDB_MYBUTTON,//添加按钮ID
NULL,
hInst,
NULL);
if (!MYButton)
{
MessageBox(NULL,_T("无效句柄"),_T("提示"),MB_OK);
return FALSE;
}
ShowWindow(MYButton, SW_SHOW);
UpdateWindow(MYButton);
break;
case WM_MYMSG:
OutputDebugString(_T("hk--wm_mymsg"));
hdc = GetDC (hWnd) ; // 获得 hdc
SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
TextOut(hdc,100,100,str,_tcslen(str)); //输出文字
ReleaseDC (hWnd, hdc) ; // 释放 hdc
break;
case WM_PAINT:
OutputDebugString(_T("hk--wm_paint"));
// TODO: 在此添加任意绘图代码...
hdc = BeginPaint(hWnd, &ps); //获取设备环境句柄
// SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
// TextOut(hdc,100,100,str,_tcslen(str)); //输出文字
EndPaint(hWnd,&ps); //释放资源
break;
case WM_LBUTTONDOWN:
ExdStyle = (int)GetWindowLong(hWnd, GWL_EXSTYLE);
//通过SetWindowLong设置窗口的属性,多增加了一个WS_EX_LAYERED支持透明
SetWindowLong(hWnd, GWL_EXSTYLE, ExdStyle | WS_EX_LAYERED);
//设置窗口的透明色
SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255),
100, LWA_ALPHA);//100代表透明度,0是全透明,255是不透明

OutputDebugString(_T("hk--wm_left"));
hWnd1=CreateWindowEx(NULL,szWindowClass1, szTitle1,
// WS_CHILD,
//WS_CHILD|WS_DLGFRAME ,
WS_CHILDWINDOW|WS_CAPTION|WS_CLIPSIBLINGS,
//WS_POPUP|WS_CAPTION|WS_CLIPSIBLINGS,
0+(300*i),
0,
//600,
300,
//800,
300,
hWnd,
//NULL,
NULL,
//LoadMenu(hInst,MAKEINTRESOURCE(IDC_MYDEMO1)),
hInst, NULL);

_stprintf(szTitle, _T("0x%08x"), hWnd1);

SetWindowText(hWnd1, szTitle);


if (!hWnd1)
{
return FALSE;
}
if (i==0)
{
hwndX=hWnd1;
/*BringWindowToTop(hWnd);*/
/*EnableWindow(hWnd1,FALSE);*/
}
if(i==3)
{
BringWindowToTop(hwndX);
}
ShowWindow(hWnd1,SW_SHOW);
UpdateWindow(hWnd1);
++i;
break;
case WM_RBUTTONDOWN:
// {
// HWND PhWnd=GetDlgItem(hWnd, IDB_MYBUTTON);
// PostMessage(PhWnd,WM_MYMSG_,0,0);
// }
/* TileWindows(hWnd,MDITILE_HORIZONTAL,NULL,NULL,NULL);*/
//排列子窗口
// GetClientRect(hWnd,&rect);//该函数获取窗口客户区的坐标
// CascadeWindows(hWnd,MDITILE_SKIPDISABLED,&rect,NULL,NULL);//以层叠方式排列窗口

//排列子窗口
uint=ArrangeIconicWindows(hWnd_A);
// if (uint)
// {
// MessageBox(hWnd,_T("sucessful"),_T("AIW"),MB_OK);
// }else{
// MessageBox(hWnd,_T("faulse"),_T("AIW"),MB_OK);
// }
////设置附属窗口为不可见状态
//ShowOwnedPopups(hWnd_A,FALSE);
//ShowWindow(hWnd_A,SW_HIDE);
//改变指定窗口接受鼠标键盘输入
// phWnd=GetDlgItem(hWnd, IDB_MYBUTTON);
// EnableWindow(phWnd,TRUE);
//改变z序的代码
/* hWnd1=GetNextWindow(hWnd,GW_HWNDNEXT);*/
// hWnd1=GetTopWindow(hWnd);
// if (hWnd1==NULL)
// {
// MessageBox(hWnd,_T("no chilewindow"),_T("GetTopWindow"),MB_OK);
// }else{
// MessageBox(hWnd1,_T("Topchilewindow"),_T("GetTopWindow"),MB_OK);
// }
//寻找指定的窗口
/* hWnd1=FindWindowEx(hWnd,0,MyButton,NULL);
phWnd=GetDlgItem(hWnd, IDB_MYBUTTON);
if(hWnd1==phWnd&&hWnd1!=NULL)
{
MessageBox(hWnd,_T("find"),_T("FindWindowEx"),MB_OK);
}
else
{
MessageBox(hWnd,_T("not find"),_T("FindWindowEx"),MB_OK);
}*/
/* EnumChildWindows(hWnd,EnumChildWndProc,NULL);*///枚举子窗口
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
LRESULT CALLBACK WndProc1(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
//HWND PhWnd,hWndP,hWndC;
LONG Lstyle;
TCHAR str[] = _T("这是一个测试程序!这是一个测试程序!");
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
//TODO: 在此添加任意绘图代码...
hdc = BeginPaint(hWnd, &ps); //获取设备环境句柄
// SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
// TextOut(hdc,100,100,str,18); //输出文字
EndPaint(hWnd,&ps); //释放资源
break;
case WM_LBUTTONDOWN:
//恢复最小化button窗口
hWndP=GetParent(hWnd);
PhWnd=GetDlgItem(hWndP, IDB_MYBUTTON);
OpenIcon(MYButton);
// hWndB=SetActiveWindow(hWnd);
// hWndC=GetActiveWindow();
// if (hWndC==hWndB)
// {
// MessageBox(hWnd,_T("活动窗口设置成功"),_T("setactivewindow"),MB_OK);
// }else{
// MessageBox(hWnd,_T("活动窗口设置失败"),_T("setactivewindow"),MB_OK);
// }
/*SetWindowPos(hWnd,HWND_TOP,100,100,0,0,SWP_NOSIZE);*/
/* BringWindowToTop(hWnd);*/
// hWndP=GetParent(hWnd);
// PhWnd=GetDlgItem(hWndP, IDB_MYBUTTON);
// PostMessage(PhWnd,WM_MYMSG_A,0,0);
// /*MessageBox(hWnd,_T("kf"),_T("yes"),MB_OK);*/
//Lstyle =GetWindowLong(hWnd,GWL_HWNDPARENT);
// SetWindowLong(hWnd,GWL_STYLE,Lstyle&(~WS_POPUP)|WS_CHILD);
/*SetWindowLong(hWnd, GWL_HWNDPARENT,(LONG)hWndB);*/
/* SetParent(hWnd,hWndB);*/
// //SetParent(hWnd,NULL);
//
// if (!IsChild(hWndB,hWnd))
// //if (!IsChild(NULL,hWnd))
// {
// MessageBox(hWnd,_T("faluse"),_T("53kf"),MB_OK);
// }
// else
// {
// MessageBox(hWnd,_T("sucessful"),_T("53kf"),MB_OK);
// }
break;
case WM_RBUTTONDOWN:
//最小化子窗口
CloseWindow(hWnd);
//给button兄弟窗口发消息
/* hWndP=GetParent(hWnd);*/
// PhWnd=GetDlgItem(hWndP, IDB_MYBUTTON);
/* PostMessage(PhWnd,WM_MYMSG_,0,0);*/
// PhWnd=GetParent(hWnd);
// PostMessage(PhWnd,WM_MYMSG,0,0);
// // TODO: 在此添加任意绘图代码...
// hdc = GetDC (hWnd) ; // 获得 hdc
// SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
// TextOut(hdc,100,100,str,_tcslen(str)); //输出文字
// ReleaseDC (hWnd, hdc) ; // 释放 hdc
break;
case WM_DESTROY:
//PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

LRESULT CALLBACK WndProc2(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent,ret;
WPARAM wparam;
PAINTSTRUCT ps;
HDC hdc;
RECT rect;
POINT point;
LPRECT lpRect=▭
HWND HWnd_X;
TCHAR str[] = _T("这是一个测试B程序!这是一个测试B程序!");
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_ACTIVATE:
OutputDebugString(_T("leo dddddddd"));
break;
case WM_CHAR:
MessageBox(hWnd,_T("bbbbbbbbb"),_T("53kf"),MB_OK);
break;
case WM_QUERYOPEN:
return TRUE;
// case WM_NCCALCSIZE:
// MessageBox(hWnd,_T("窗口被创建或者改变大小"),_T("提示"),MB_OK);
// break;
//case WM_GETMINMAXINFO:
// MINMAXINFO *mminfo;
// mminfo=(PMINMAXINFO)lParam;

// mminfo->ptMinTrackSize.x=200;
// mminfo->ptMinTrackSize.y=200;
// //最大化时的窗口大小
// mminfo->ptMaxSize.x=300;
// mminfo->ptMaxSize.y=300;

// mminfo->ptMaxPosition.x=0;
// mminfo->ptMaxPosition.y=0;

// mminfo->ptMaxTrackSize.x=300;
// mminfo->ptMaxTrackSize.y=300;

// break;
case WM_SHOWWINDOW:
//改变附属窗口的可视状态
ShowOwnedPopups(hWnd,TRUE);
break;
case WM_CREATE:
//窗口动画效果
// AnimateWindow(hWnd,2000,
// //AW_VER_POSITIVE|AW_SLIDE
// AW_HOR_POSITIVE|AW_CENTER
// );
// if(!GetWindowRect(hWnd,lpRect))
// {
// MessageBox(hWnd,_T("失败"),_T("测试"),MB_OK);
// break;
// }
// point.x=lpRect->left;
// point.y=lpRect->right;
// ScreenToClient(hWnd,&point);
// if(!MapWindowPoints(hWnd,NULL,&point,1))
// {
// MessageBox(hWnd,_T("失败"),_T("测试"),MB_OK);
// break;
// }
break;
case WM_SYSCOMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case SC_MINIMIZE:
CloseWindow(hWnd);
break;
case SC_MAXIMIZE:
WINDOWPLACEMENT winplacement;
memset(&winplacement, 0, sizeof(winplacement));
winplacement.length = sizeof(WINDOWPLACEMENT);
winplacement.showCmd = SW_SHOWMAXIMIZED;
SetWindowPlacement(hWnd,&winplacement);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
// TODO: 在此添加任意绘图代码...
hdc = BeginPaint(hWnd, &ps); //获取设备环境句柄
// SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
// TextOut(hdc,100,100,str,18); //输出文字
EndPaint(hWnd,&ps); //释放资源
break;
case WM_LBUTTONDOWN:
//HWnd_X=GetParent(hWnd);
// if(SetActiveWindow(hWnd_A))
// {
// HWND hwnd_1=GetActiveWindow();
// if (hwnd_1==hWnd_A)
// {
// OutputDebugString(_T("leo__ SAME"));
// }
// else{
// OutputDebugString(_T("leo__ NONONO"));
// }
// }
// MessageBox(NULL,_T("设置成功"),_T("提示"),MB_OK);
// }else{
// MessageBox(NULL,_T("设置失败"),_T("提示"),MB_OK);
// }

// if(SetForegroundWindow(hWnd)!=0)
// {
// MessageBox(NULL,_T("设置成功"),_T("提示"),MB_OK);
// }else{
// MessageBox(NULL,_T("设置失败"),_T("提示"),MB_OK);
// }
// wparam=SC_MAXIMIZE;
// PostMessage(hWnd,WM_SYSCOMMAND,wparam,0);
//最大化窗口setwindowplancement函数
WINDOWPLACEMENT winplacement;
memset(&winplacement, 0, sizeof(winplacement));
winplacement.length = sizeof(WINDOWPLACEMENT);
winplacement.showCmd = SW_SHOWMAXIMIZED;
SetWindowPlacement(hWnd,&winplacement);
// if(IsZoomed(hWnd))
// {
// MessageBox(hWnd,_T("Zoomed"),_T("测试"),MB_OK);
// }
/*MessageBox(hWnd,_T("hello"),_T("测试"),MB_OK);*/
break;
case WM_RBUTTONDOWN:
//隐藏窗口
ShowWindow(hWnd_A,SW_HIDE);
// //最小化窗口
// CloseWindow(hWnd);
// if(IsIconic(hWnd))
// {
// MessageBox(hWnd,_T("Iconic"),_T("测试"),MB_OK);
// }
//判断窗口是否可视
if(IsWindowVisible(hWnd_A))
{
MessageBox(hWnd,_T("visible"),_T("测试"),MB_OK);
}else{
MessageBox(hWnd,_T("unvisible"),_T("测试"),MB_OK);
}
//给button窗口发送mymsg消息
// PhWnd=GetParent(hWnd);
// PostMessage(PhWnd,WM_MYMSG,0,0);
// // TODO: 在此添加任意绘图代码...
// hdc = GetDC (hWnd) ; // 获得 hdc
// SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
// TextOut(hdc,100,100,str,_tcslen(str)); //输出文字
// ReleaseDC (hWnd, hdc) ; // 释放 hdc
break;
// case WM_QUERYOPEN:
// MessageBox(hWnd,_T("Iconic"),_T("测试"),MB_OK);
case WM_CLOSE:

ret=MessageBox(hWnd,_T("关闭窗口"),_T("提示"),MB_YESNO);
if (ret==IDYES)
{
DestroyWindow(hWnd);
}
break;
case WM_DESTROY:
//PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}


BOOL CALLBACK EnumChildWndProc(HWND hWndchild, LPARAM lParam)
{

TCHAR szTitleChild[MAX_LOADSTRING];
int num=GetWindowText(hWndchild,szTitleChild,MAX_LOADSTRING);
if (num)
{

MessageBox(hWndchild,szTitleChild,_T("枚举子窗口数量"),MB_OK);

}
else
{
return FALSE;
}
return TRUE;
}

LRESULT CALLBACK WndProc3(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND phWnd,hWnda;
HDWP hdwp;
DWORD threadID;
HANDLE hThread;
RECT rect;
POINT point;
LPRECT lpRect=▭
/*int ExdStyle;*/
switch (message)
{
case WM_MYMSG_A:
// 通过GetWindowLong获得窗口的属性
// ExdStyle = (int)GetWindowLong(hWnd, GWL_EXSTYLE);
// //通过SetWindowLong设置窗口的属性,多增加了一个WS_EX_LAYERED支持透明
// SetWindowLong(hWnd, GWL_EXSTYLE, ExdStyle | WS_EX_LAYERED);
// //设置窗口的透明色
// SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255),
// 100, LWA_ALPHA);//100代表透明度,0是全透明,255是不透明
MessageBox(hWnd,_T("=======hello1111=========="),_T("测试"),MB_OK);
break;
case WM_MYMSG_:
BringWindowToTop(hWnd);
// phWnd=GetParent(hWnd);
// SetParent(hWnd,HWND_MESSAGE);
/*SetLayeredWindowAttributes(hWnd, RGB(13,25,200), 100, LWA_ALPHA);*/
/*MessageBox(hWnd,_T("=======hello2222=========="),_T("测试"),MB_OK);*/
break;
case WM_LBUTTONDOWN:
{

MoveWindow(hWnd,30,50,500,500,FALSE);
// GetWindowRect(hWnd,lpRect);
GetClientRect(hWnd,lpRect);
TCHAR szTitle_a[1024] = {0};
_stprintf(szTitle_a, _T("leo %d,%d,%d,%d"), lpRect->left,lpRect->top,lpRect->bottom,lpRect->right);
OutputDebugString(szTitle_a);
}
/*SetWindowPos(hWnd, HWND_TOPMOST, 100,200,0,0, SWP_NOSIZE);*/
break;
case WM_RBUTTONDOWN:
/*hdwp = BeginDeferWindowPos(1);
hdwp = DeferWindowPos( hdwp, hWnd, NULL, 150, 150,
100, 100,
SWP_NOZORDER |SWP_NOMOVE );
EndDeferWindowPos( hdwp );*/
// hThread = CreateThread(NULL,0,ThreadProc,NULL,0,&threadID);
// CloseHandle(hThread);
//最小化子窗口
CloseWindow(hWnd);
/* MessageBox(hWnd,_T("yes"),_T("Enabled"),MB_OK);*/
break;
case WM_ENABLE:
/*MessageBox(hWnd,_T("yes"),_T("Enabled"),MB_OK); */
break;
case WM_CHAR:
MessageBox(hWnd,_T("111111"),_T("53kf"),MB_OK);
break;
case WM_DESTROY:
//PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
MSG msg;
HWND hWnd = CreateWindowEx(NULL,szWindowClass3, _T("测试c窗口"),
WS_OVERLAPPEDWINDOW,
100, 100, 400, 400, NULL, NULL, hInst, NULL);
int ret=GetLastError();
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
// HWND hWnda=GetForegroundWindow();
// dwCurID = GetCurrentThreadId(); //获取当前线程一个唯一的线程标识符
// dwForeID = GetWindowThreadProcessId( hWnda, NULL ); //找出某个窗口的创建者(线程或进程),返回创建者的标志符。
// AttachThreadInput( dwCurID, dwForeID, TRUE); //重设键盘状态
// ShowWindow( hWnd, SW_SHOWNORMAL );
// SetWindowPos( hWnd, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE );
// SetWindowPos( hWnd, HWND_NOTOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE );
// SetForegroundWindow( hWnd );
// AttachThreadInput( dwCurID, dwForeID, FALSE);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);//将虚拟键消息转换为字符消息,
DispatchMessage(&msg);//分发一个消息给窗口程序
}
return 0;
}

LRESULT CALLBACK WndProc4(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
HWND hWnda,HWnd_X;
HDC hdc;
TCHAR str[] = _T("这是一个测试c程序!这是一个测试c程序!");
PAINTSTRUCT ps;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);

break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_CHAR:
MessageBox(hWnd,_T("333333333"),_T("53kf"),MB_OK);
break;
case WM_CREATE:
break;
case WM_MYMSG:
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps); //获取设备环境句柄
SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
TextOut(hdc,100,100,str,18); //输出文字
EndPaint(hWnd,&ps); //释放资源
//hdc = GetDC (hWnd) ; // 获得 hdc
//SetTextColor(hdc,RGB(13,25,200)); //设置文本颜色
//TextOut(hdc,100,100,str,_tcslen(str)); //输出文字
//ReleaseDC (hWnd, hdc) ; // 释放 hdc
break;
case WM_LBUTTONDOWN:
// HWnd_X=GetParent(MYButton);
// if(SetForegroundWindow(HWnd_X)!=0)
if(SetForegroundWindow(MYButton)!=0)
{

hWnda=GetForegroundWindow();
if(MYButton == hWnda)
{
OutputDebugString(_T("lvbing__ SAME"));
}
TCHAR szDebug[MAX_PATH] = {0};
_stprintf(szDebug, _T("lvbing__ MYButton = 0x%08x, hWnda = 0x%08x"), MYButton, hWnda);
OutputDebugString(szDebug);
//if(hWnda==MYButton)
// {
// TCHAR szTitle[15] = {0};
// _stprintf(szTitle, _T("0x%08x"), hWnda);
//
// //SetWindowText(hWnda, szTitle);
// MessageBox(hWnda,szTitle,_T("前景窗口"),MB_OK);
// }
// }else{
// MessageBox(NULL,_T("不相等"),_T("提示"),MB_OK);
// }
}else
{
MessageBox(NULL,_T("设置失败"),_T("提示"),MB_OK);
}
// {
// //MessageBox(NULL,_T("设置成功"),_T("提示"),MB_OK);
// }else{
// //MessageBox(NULL,_T("设置失败"),_T("提示"),MB_OK);
// }
// if(SetActiveWindow(HWnd_X))
// {
// MessageBox(NULL,_T("设置成功"),_T("提示"),MB_OK);
// }else{
// MessageBox(NULL,_T("设置失败"),_T("提示"),MB_OK);
// }
/* hWnda=GetActiveWindow();*/
/*if (hWnda==hWndb)*/
//HWnd_X=GetParent(MYButton);
//if(hWnda==MYButton)
// /*if(hWnda==HWnd_X)*/
// {
// MessageBox(hWnd,_T("窗口为前景窗口"),_T("提示"),MB_OK);
// }
// else{
// MessageBox(hWnd,_T("窗口为背景窗口"),_T("提示"),MB_OK);
// }
/*MessageBox(NULL,_T("窗口"),_T("提示"),MB_OK);*/
break;
case WM_RBUTTONDOWN:

/*MessageBox(NULL,_T("窗口"),_T("提示"),MB_OK);*/
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
/*OutputDebugString(_T("hk--default"));*/
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
// “关于”框的消息处理程序。
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;

case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
1 0
原创粉丝点击