在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.cbclxt企业发展规划书范文ra = 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 //去标题栏twindowlong(hwnd, gwl_style, getwindowlong(hwnd, gwl_style) & ~ws_caption); //去边框twindowlong(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(&a以前以后 歌词mp;msg);} return 0;} // 自定义消息处理函数的实现lresult callback windowproc(_in_ hwnd hwnd,_in_ uint umsg,_in_ wparam wparam,_in_ lparam lparam){switch (umsg){ ca wm_destroy: {postquitmessage(0);return 0; } ca 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) {ca wm_clo:messagebox(null,"wm_clo", "", null);break;default:break;}return defwindowproc(hwnd, msg, wparam, lparam);}int main(){// 窗口属性初始化hinstance数列的极限 hins = getmodulehandle(0);wndclasx wc;wc.cbsize = sizeof(wc);// 定义结构大小wc.style = cs_hredraw | cs_vredraw;// 如果改变了客户区域的宽度或高度,则重新绘制整个窗口 wc.cbclxtra = 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 (!registerclasx(&wc)) {cout << "registerclasx 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中控制台程序创建窗口的实例方法的文章就介绍到这了,更多相关vc中控制台程序如何创建窗口内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 00:52:11,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1dbf0f64a07296db45ba3646f855d930.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:VC中控制台程序创建窗口的实例方法.doc
本文 PDF 下载地址:VC中控制台程序创建窗口的实例方法.pdf
留言与评论(共有 0 条评论) |