用win32 怎样创建一个可拖动的窗口
发布网友
发布时间:2022-04-29 03:34
我来回答
共2个回答
热心网友
时间:2023-10-09 09:55
这个程序过程中,主要是查阅MSDN文档, 这个文档很实用。
方法如下:
#include<stdio.h>
#include<windows.h>
//窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hDc;
char str[64]="阿浪网易博客 http://blog.163.com/wenxianliang08@126/";
switch(message)
{
case WM_PAINT:
hDc=BeginPaint(hwnd,&ps);
TextOut(hDc,100, 100, str, strlen(str));
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, //当前运行实例的句柄
HINSTANCE hPrevInstance, //先前实例的句柄,基于Win32开发,默认为NULL
LPSTR lpCmdLine, //命令行
int nCmdShow //窗口显示模式
)
{
char szClassName[64]="阿浪博客(窗口类)"; // 初始化窗口类的名称
WNDCLASS wndclass; //定义窗口类结构体 变量
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground= (HBRUSH)GetStockObject(DKGRAY_BRUSH); //灰色画刷
wndclass.hCursor=LoadCursor(NULL, IDC_ARROW) ; //加载标准光标
wndclass.hIcon=LoadIcon(NULL, IDI_APPLICATION) ; //加载标准图标
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc ;
wndclass.lpszClassName=szClassName;
wndclass.lpszMenuName=NULL; // 菜单设置为NULL
wndclass.style=CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wndclass)) // 注册所初始化的窗口类
{
MessageBox(NULL,"窗口类注册失败!","消息提示",MB_OK);
return 1;
}
HWND hwnd;
char WindowName[64]="温先良(窗口名)"; // 窗口名
hwnd=CreateWindow(
szClassName,
WindowName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
500,400,
NULL,
NULL,
hInstance,
NULL
); // 创建所注册的窗口类
if(!hwnd)
{
MessageBox(NULL, "窗口创建失败", "消息提示", MB_OK);
return 1;
}
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg, hwnd, 0, 0)) // 从消息队列里获取消息
{
TranslateMessage(&msg); // 消息转换
DispatchMessage(&msg); // 消息发送到窗口过程函数
}
return 0;
}
热心网友
时间:2023-10-09 09:55
首先肯定一点,是2010不需要.NET4但可能需要3.5的SP1我机器都是装过的,不是很清楚具体的,你安装个3.5的SP1试试
热心网友
时间:2023-10-09 09:55
这个程序过程中,主要是查阅MSDN文档, 这个文档很实用。
方法如下:
#include<stdio.h>
#include<windows.h>
//窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hDc;
char str[64]="阿浪网易博客 http://blog.163.com/wenxianliang08@126/";
switch(message)
{
case WM_PAINT:
hDc=BeginPaint(hwnd,&ps);
TextOut(hDc,100, 100, str, strlen(str));
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, //当前运行实例的句柄
HINSTANCE hPrevInstance, //先前实例的句柄,基于Win32开发,默认为NULL
LPSTR lpCmdLine, //命令行
int nCmdShow //窗口显示模式
)
{
char szClassName[64]="阿浪博客(窗口类)"; // 初始化窗口类的名称
WNDCLASS wndclass; //定义窗口类结构体 变量
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground= (HBRUSH)GetStockObject(DKGRAY_BRUSH); //灰色画刷
wndclass.hCursor=LoadCursor(NULL, IDC_ARROW) ; //加载标准光标
wndclass.hIcon=LoadIcon(NULL, IDI_APPLICATION) ; //加载标准图标
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc ;
wndclass.lpszClassName=szClassName;
wndclass.lpszMenuName=NULL; // 菜单设置为NULL
wndclass.style=CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wndclass)) // 注册所初始化的窗口类
{
MessageBox(NULL,"窗口类注册失败!","消息提示",MB_OK);
return 1;
}
HWND hwnd;
char WindowName[64]="温先良(窗口名)"; // 窗口名
hwnd=CreateWindow(
szClassName,
WindowName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
500,400,
NULL,
NULL,
hInstance,
NULL
); // 创建所注册的窗口类
if(!hwnd)
{
MessageBox(NULL, "窗口创建失败", "消息提示", MB_OK);
return 1;
}
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg, hwnd, 0, 0)) // 从消息队列里获取消息
{
TranslateMessage(&msg); // 消息转换
DispatchMessage(&msg); // 消息发送到窗口过程函数
}
return 0;
}
热心网友
时间:2023-10-09 09:55
首先肯定一点,是2010不需要.NET4但可能需要3.5的SP1我机器都是装过的,不是很清楚具体的,你安装个3.5的SP1试试