VC中控制台程序创建窗口的方法是什么
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"VC中控制台程序创建窗口的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"VC中控制台程序创建窗口的方法是什么"吧!在VC控制台
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
湖南潮流软件开发价格参考价格
超聚变服务器价格没有优势
南通南大街软件开发培训
网络安全维护是做什么
电脑上网提示找不到服务器
借记卡逾期未还款报数据库
网络安全的辩论赛的论点
软件开发人员有发展前途吗
广州代理服务器
steam服务器老登录不上
投币器软件开发
宁波软件开发公司 邹经理
软件开发部门制度建设
如何推进网络安全等级保护
修改数据库字段精度语句
如何删除数据库整表的数据
颛桥高速服务器有没有充电桩
帝国备份王软件恢复数据库
关于网络安全保密的法律
连接地平线5服务器错误咋办
b站哪个网络安全课好
欧盟rapex数据库
openwrt搭建服务器
北京制图软件开发公司
孝义天气预报软件开发
lol重庆服务器
公安部网络安全保卫局十一处
网络安全突发事件应急响应
学完hcie能网络安全吗
加强网络安全认证