VC中控制台程序创建窗口的方法是什么
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,本篇内容主要讲解"VC中控制台程序创建窗口的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"VC中控制台程序创建窗口的方法是什么"吧!在VC控制台
千家信息网最后更新 2024年11月19日VC中控制台程序创建窗口的方法是什么
本篇内容主要讲解"VC中控制台程序创建窗口的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"VC中控制台程序创建窗口的方法是什么"吧!
在VC控制台程序中调用D3DVideoRender时,需要创建新的窗口控件显示图像
#include "windows.h"#include "TCHAR.h" //声明自定义消息处理函数LRESULT CALLBACK WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); int _tmain(int argc, _TCHAR* argv[]){ HINSTANCE hInstance; hInstance = GetModuleHandle(NULL); //获取一个应用程序或动态链接库的模块句柄 WNDCLASS Render_WND; Render_WND.cbClsExtra = 0; Render_WND.cbWndExtra = 0; Render_WND.hCursor = LoadCursor(hInstance, IDC_ARROW); //鼠标风格 Render_WND.hIcon = LoadIcon(hInstance, IDI_APPLICATION); //图标风格 Render_WND.lpszMenuName = NULL; //菜单名 Render_WND.style = CS_HREDRAW | CS_VREDRAW; //窗口的风格 Render_WND.hbrBackground = (HBRUSH)COLOR_WINDOW; //背景色 Render_WND.lpfnWndProc = WindowProc; //【关键】采用自定义消息处理函数,也可以用默认的DefWindowProc Render_WND.lpszClassName = _T("RenderWindow"); //【关键】该窗口类的名称 Render_WND.hInstance = hInstance; //【关键】表示创建该窗口的程序的运行实体代号 RegisterClass(&Render_WND); HWND hwnd = CreateWindow( _T("RenderWindow"), //【关键】上面注册的类名lpszClassName,要完全一致 L"Zombie", //窗口标题文字 WS_OVERLAPPEDWINDOW, //窗口外观样式 0, //窗口相对于父级的X坐标 0, //窗口相对于父级的Y坐标 320, //窗口的宽度 240, //窗口的高度 NULL, //没有父窗口,为NULL NULL, //没有菜单,为NULL hInstance, //当前应用程序的实例句柄 NULL); //没有附加数据,为NULL //去标题栏 SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_CAPTION); //去边框 SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) & ~(WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME)); // 显示窗口 ShowWindow(hwnd, SW_SHOW); // 更新窗口 UpdateWindow(hwnd); // 消息循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0;} // 自定义消息处理函数的实现LRESULT CALLBACK WindowProc( _In_ HWND hwnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam ){ switch (uMsg) { case WM_DESTROY: { PostQuitMessage(0); return 0; } case WM_KEYDOWN: { if (wParam == VK_ESCAPE)//按Esc键退出 { PostQuitMessage(0); return 0; } } } return DefWindowProc(hwnd, uMsg, wParam, lParam);}
实例扩展:
#include#include using namespace std;LRESULT CALLBACK __WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (msg) { case WM_CLOSE: MessageBox(NULL,"WM_CLOSE", "", NULL); break; default: break; } return DefWindowProc(hWnd, msg, wParam, lParam);}int main(){ // 窗口属性初始化 HINSTANCE hIns = GetModuleHandle(0); WNDCLASSEX wc; wc.cbSize = sizeof(wc); // 定义结构大小 wc.style = CS_HREDRAW | CS_VREDRAW; // 如果改变了客户区域的宽度或高度,则重新绘制整个窗口 wc.cbClsExtra = 0; // 窗口结构的附加字节数 wc.cbWndExtra = 0; // 窗口实例的附加字节数 wc.hInstance = hIns; // 本模块的实例句柄 wc.hIcon = NULL; // 图标的句柄 wc.hIconSm = NULL; // 和窗口类关联的小图标的句柄 wc.hbrBackground = (HBRUSH)COLOR_WINDOW; // 背景画刷的句柄 wc.hCursor = NULL; // 光标的句柄 wc.lpfnWndProc = __WndProc; // 窗口处理函数的指针 wc.lpszMenuName = NULL; // 指向菜单的指针 wc.lpszClassName = "LYSM_class"; // 指向类名称的指针 // 为窗口注册一个窗口类 if (!RegisterClassEx(&wc)) { cout << "RegisterClassEx error : " << GetLastError() << endl; } // 创建窗口 HWND hWnd = CreateWindowEx( WS_EX_TOPMOST, // 窗口扩展样式:顶级窗口 "LYSM_class", // 窗口类名 "LYSM_title", // 窗口标题 WS_OVERLAPPEDWINDOW, // 窗口样式:重叠窗口 0, // 窗口初始x坐标 0, // 窗口初始y坐标 800, // 窗口宽度 600, // 窗口高度 0, // 父窗口句柄 0, // 菜单句柄 hIns, // 与窗口关联的模块实例的句柄 0 // 用来传递给窗口WM_CREATE消息 ); if (hWnd == 0) { cout << "CreateWindowEx error : " << GetLastError() << endl; } UpdateWindow(hWnd); ShowWindow(hWnd, SW_SHOW); // 消息循环(没有会导致窗口卡死) MSG msg = { 0 }; while (msg.message != WM_QUIT) { // 从消息队列中删除一条消息 if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { DispatchMessage(&msg); } } cout << "finished." << endl; getchar();end: getchar(); return 0;}
到此,相信大家对"VC中控制台程序创建窗口的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
句柄
消息
程序
实例
控制台
方法
控制
关键
函数
坐标
菜单
处理
图标
宽度
指针
标题
样式
模块
类名
风格
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电信 dns服务器
仙桃哪里有软件开发团队
虚拟管理服务器
网络安全技术分析 论文)
软件开发sql
当前服务器ip
网络安全电子板报内容
oppo网络安全挑战赛奖项
网络安全讲座英语通知
数据库转存工具
电脑服务器怎么降温
简历数据库 还有编号
sql怎么看服务器是否内存不足
数据库设计说明书模板
武大网络安全和密码学
统计学试题已知下列数据库
旧电脑改装无线打印服务器
密集网络技术
重庆派维特软件开发
小型企业计算机网络安全
久米网络技术有限公司
灾难性的网络安全
c 数据库编程ppt
网络安全怎么管控
中威服务器更换硬盘添加raid
sql怎么看服务器是否内存不足
美萍餐饮管理连不上服务器
网络安全手抄报汇总
ftp服务器防火墙如何关闭
如何设置虚拟服务器教程视频