您的位置:首页 > 编程语言

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

2016-08-24 17:43 344 查看
// 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.
eb61
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐