V C6.0++ 创建窗口
2012-12-20 23:35
176 查看
#include "stdafx.h"
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance, //应用程序的实例句柄,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine, //命令行
int nCmdShow) //显示方式
{
MSG msg;
HWND hWnd;
char szTitle[]="系统信息"; // The title bar text
char szWindowClass[]="popMsg"; // The title bar text
WNDCLASSEX wcex={0};
wcex.cbSize = sizeof(WNDCLASSEX); //WNDCLASSEX结构体大小
wcex.style = CS_HREDRAW | CS_VREDRAW; //位置改变时重绘
wcex.lpfnWndProc = (WNDPROC)WndProc; //消息处理函数
wcex.hInstance = 0; //当前实例句柄
wcex.hbrBackground = (HBRUSH)COLOR_WINDOWFRAME; //背景色
wcex.lpszClassName = szWindowClass; //参窗口类名
wcex.hIcon =0; //图标
wcex.hCursor =LoadCursor(NULL, IDC_ARROW); //光标
wcex.lpszMenuName =0; //菜单名称
wcex.hIconSm =0; //最小化图标
RegisterClassEx(&wcex); //注册窗口类
hWnd = CreateWindow(szWindowClass, szTitle, WS_SYSMENU|WS_VISIBLE, //创建窗口
CW_USEDEFAULT,CW_USEDEFAULT, 400, 300, NULL, NULL, 0, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0)) // 消息循环:
{
TranslateMessage(&msg); //转化虚拟按键到字符消息
DispatchMessage(&msg); //分派消息调用回调函数
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT rect;
switch (message)
{
case WM_PAINT: //重绘消息
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rect);
MoveToEx(hdc,10,10,0);
SelectObject( hdc,::CreatePen(PS_SOLID,1,RGB(0xFF,0,0)));
LineTo(hdc,100,200);
// DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_CREATE:
RegisterHotKey(hWnd ,1, 0 ,0x41 );
break;
case WM_HOTKEY:
MessageBox(0,0,0,0);
break;
case WM_TIMER:
break;
case WM_DESTROY: //窗口销毁消息
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
VC6.0 编译通过。
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance, //应用程序的实例句柄,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine, //命令行
int nCmdShow) //显示方式
{
MSG msg;
HWND hWnd;
char szTitle[]="系统信息"; // The title bar text
char szWindowClass[]="popMsg"; // The title bar text
WNDCLASSEX wcex={0};
wcex.cbSize = sizeof(WNDCLASSEX); //WNDCLASSEX结构体大小
wcex.style = CS_HREDRAW | CS_VREDRAW; //位置改变时重绘
wcex.lpfnWndProc = (WNDPROC)WndProc; //消息处理函数
wcex.hInstance = 0; //当前实例句柄
wcex.hbrBackground = (HBRUSH)COLOR_WINDOWFRAME; //背景色
wcex.lpszClassName = szWindowClass; //参窗口类名
wcex.hIcon =0; //图标
wcex.hCursor =LoadCursor(NULL, IDC_ARROW); //光标
wcex.lpszMenuName =0; //菜单名称
wcex.hIconSm =0; //最小化图标
RegisterClassEx(&wcex); //注册窗口类
hWnd = CreateWindow(szWindowClass, szTitle, WS_SYSMENU|WS_VISIBLE, //创建窗口
CW_USEDEFAULT,CW_USEDEFAULT, 400, 300, NULL, NULL, 0, NULL);
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0)) // 消息循环:
{
TranslateMessage(&msg); //转化虚拟按键到字符消息
DispatchMessage(&msg); //分派消息调用回调函数
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT rect;
switch (message)
{
case WM_PAINT: //重绘消息
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rect);
MoveToEx(hdc,10,10,0);
SelectObject( hdc,::CreatePen(PS_SOLID,1,RGB(0xFF,0,0)));
LineTo(hdc,100,200);
// DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_CREATE:
RegisterHotKey(hWnd ,1, 0 ,0x41 );
break;
case WM_HOTKEY:
MessageBox(0,0,0,0);
break;
case WM_TIMER:
break;
case WM_DESTROY: //窗口销毁消息
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
VC6.0 编译通过。
相关文章推荐
- Qt基础——让使用Designer创建的UI也能自动适应窗口大小
- [Modern OpenGL系列(二)]创建OpenGL窗口
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
- 安装SQL Server出现在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke的错误解决办法
- 不使用API,创建一个最简单的窗口
- 使用jQuery创建模态窗口登陆效果
- Qt学习之三:创建主窗口
- Android 一个窗口是怎么创建出来的?
- Qt5:为窗口 创建工具栏 toobar
- VC 窗口创建以及窗口之间传递数据、传递消息(模态、非模态)
- 关于 MFC 创建的窗口style
- C#中出现了一个问题,就是程序主窗体已经打开,在调用子窗体时候出现了创建窗口句柄时出错。
- 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
- MFC程序对win32的封装总结(窗口类的注册,窗口的创建,窗口的窗口过程指定)
- C#winform判断窗口是否打开?没有则创建打开
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- java开发系统内核:实现窗口创建API,由DOS进入windows
- 使用Win32 API创建不规则形状&带透明色的窗口