菜鸟问题:用什么方法创建一个新窗口最简便?

lspbeyond
博客专家认证
2003-06-27 03:52:43
本人通过向导创建了一个基于对话框的工程,我想在对话框上单击一按钮时,打开一个新窗口,该窗口用于播放一段视频。

请问:用什么方法创建这个窗口最简便?
...全文
159 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lspbeyond 2003-06-27
  • 打赏
  • 举报
回复
自己up
lspbeyond 2003-06-27
  • 打赏
  • 举报
回复
: tangmasi(汤玛斯)的方法我试过,且是可行的,
只是我觉得就是创建一个窗口,却要绕这么一个弯,好象不是很方便,故想知道大家有没有更方便的方法,
lspbeyond 2003-06-27
  • 打赏
  • 举报
回复
其效果如这张图片所示:
http://www.2chm.com/99auto/UploadFile/20036271650597522.jpg

还有类似的程序:
http://www.2chm.com/99auto/viewfile.asp?ID=226
tangmasi 2003-06-27
  • 打赏
  • 举报
回复
我也赞同使用弹出的Dialog来播放,因为对话框天生就是要被弹出来的啊 :) 。

当然如果你还是想使用框架加上视图的话(好处是能有菜单工具栏),还不如创建SDI的工程来得简单。你想要的对话框可以在框架显示之前调用啊!
zyoujie 2003-06-27
  • 打赏
  • 举报
回复
up
lspbeyond 2003-06-27
  • 打赏
  • 举报
回复
有一个参考程序是用api的方式,但非常复杂,其中的窗口显示程序如下:

void DisplayWinMain (void *dummy)
{
int errFlag = 0;
DWORD dwStyle;

vdWindow.wc.style = CS_BYTEALIGNWINDOW;
vdWindow.wc.lpfnWndProc = MainWndProc;
vdWindow.wc.cbClsExtra = 0;
vdWindow.wc.cbWndExtra = 0;
vdWindow.wc.hInstance = 0;
vdWindow.wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
vdWindow.wc.hCursor = LoadCursor (NULL, IDC_ARROW);
vdWindow.wc.hbrBackground =(HBRUSH)::GetStockObject(WHITE_BRUSH);
vdWindow.wc.lpszMenuName = NULL;
vdWindow.zoom = 1;
strcpy (vdWindow.lpszAppName, "H.263 Display");
vdWindow.wc.lpszClassName = vdWindow.lpszAppName;

RegisterClass(&vdWindow.wc);


dwStyle = WS_DLGFRAME | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;

vdWindow.hWnd =
CreateWindow (vdWindow.lpszAppName,
vdWindow.lpszAppName,
dwStyle,
CW_USEDEFAULT,
CW_USEDEFAULT,
vdWindow.width + 6,
vdWindow.height + 25,
NULL,
NULL,
0,
NULL
);

if (vdWindow.hWnd == NULL)
ExitThread (errFlag = 1);

ShowWindow(vdWindow.hWnd, SW_SHOWNOACTIVATE);
UpdateWindow(vdWindow.hWnd);

/* Message loop for display window's thread */
while (GetMessage (&(vdWindow.msg), NULL, 0, 0)) {
TranslateMessage (&(vdWindow.msg));
DispatchMessage (&(vdWindow.msg));
}

ExitThread (0);
}
lspbeyond 2003-06-27
  • 打赏
  • 举报
回复
to stoneyrh:
对话框能实现超级解码播放窗口的效果吗?我自认为单文档视图窗口比较合适。
另外,我以前做的一个YUV播放器是基于单文档视图窗口的,所以用后者移植也比较方便。
lspbeyond 2003-06-27
  • 打赏
  • 举报
回复
我想了一个办法,大家看看是否可行:
我在app的InitInstance()中加入了以下代码:
//加入播放窗口,文档视图框架
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CPlayFrame),// main SDI frame window
RUNTIME_CLASS(CPlayView));
AddDocTemplate(pDocTemplate);

然后我想在按钮点击时,调用ShowWindow(SW_SHOW)来显示窗口,却不知道如何获得窗口的指针??
stoneyrh 2003-06-27
  • 打赏
  • 举报
回复
首选在资源里加一个dialog
然后到class wizard里加入一个类
然后呢,就是用这个类的Create
这个是我遇到最简单的了
lspbeyond 2003-06-27
  • 打赏
  • 举报
回复
误导了,那段视频不是通过播放器或activx控件来播放的。
因为我是学图象处理的,所以那段视频是经过解码后,用DIB位图的形式一帧帧刷出来的。
我现在碰到的问题是,如何创建一个新窗口,就如超级解码中的播放窗口。
马志1993 2003-06-27
  • 打赏
  • 举报
回复
shell也可以
FAICHEN 2003-06-27
  • 打赏
  • 举报
回复
winexec(..)
直接用播放器来播放
醉马不肖 2003-06-27
  • 打赏
  • 举报
回复
Dialog +MS MediaPlay AcivateX

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧