文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

VC中控制台程序创建窗口的方法是什么

2023-06-21 23:03

关注

本篇内容主要讲解“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;//【关键】采用自定义消息处理函数,也可以用默认的DefWindowProcRender_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 <iostream>#include <Windows.h>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中控制台程序创建窗口的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯