如题:大家好。一个单文档的程序,我想点击某一个菜单项后,生成并显示一个类似用win32 application完成的"hello world"那样的窗口,请各位说说看,我应该注意哪些问题,可行不可行?!是不是还得注册窗口类、显示窗口、等等sdk那一套?而且,我想让这个窗口就是一个显示的容器(无工具栏、无菜单、无状态栏),client rect中能显示图像就行,当然,这个窗口必须以我的主窗口为父窗口。而且,我想知道这样生成的窗口是相当于"模式对话框"还是"非模式对话框",就是说在显示这个窗口的时候,我可否操作我的主界面?

解决方案 »

  1.   

    WIN32中提供了一套CONSOLE操作函数,可以为一个程序申请一个CONSOLE
    AllocConsole()
    然后用ReadConsole/WriteConsole等来控制这个console
      

  2.   

    可是一个"hello world"程序并不是一个console程序啊。....
      

  3.   

    你说的是那个"hello world"阿?
      

  4.   

    就是用vc建的:file/new,然后选择win32 application,下一步,选择"a typical "Hello world" ....
      

  5.   

    1、你所说的那个"Hello World!"窗口是一个最经典的windows窗口,几乎任何windows下运行的程序都可以创建这样的窗口,用CreateWindow函数。
    2、窗口的风格时可以在创建时确定的,你能看到的各种类型的窗口都可以,包括所谓“模式对话框"还是"非模式对话框"。
      

  6.   

    我就是想创建一个最一般的那种窗口,没有菜单,也没有工具栏,只有最大化、最小化那样的窗口,可以在里面显示数据,这个窗口不是主窗口,而是在我的主程序中点击某一个菜单项后生成这样的一个窗口,我不知道怎么写。调用CreateWindow()好像得先注册,我看在mfc中Create()也行,可是Create()中也得使用窗口类名,这方面不太熟悉,一般我看的最多的是把这样一个窗口作为主窗口处理的,从注册到显示,还有窗口过程那种sdk的方法,我不知道在我的成员函数中如何实现我的功能。
      

  7.   


    AllocConsole就挺好的,实现你的功能就可以了 ^_^
      

  8.   

    不是吧,console是一个控件台程序吧,我要的不是那样的啊,我要的就是像hello world那样的窗口,只是必须在一个成员函数中实现,形如:
    void CMyFrame::aHelloWorld()
    {
    ....//这里头应该怎么写呢?
    }
      

  9.   

    那你就注册一个类嘛,
    然后CreateWindow (szChildClass, NULL,  WS_VISIBLE|WS_CHILD |WS_CAPTION| WS_SYSMENU|WS_THICKFRAME| WS_MINIMIZEBOX| WS_MAXIMIZEBOX,......
    这样就可以了
    windows程序设计里面有这种例子啊,
      

  10.   

    我这样写的,但没有显示。
    void CMainFrame::OnSnatchScreen() 
    {
    WNDCLASSEX wcex;
    HINSTANCE hInstance=AfxGetInstanceHandle();
    wcex.cbSize = sizeof(WNDCLASSEX);  wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = NULL;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = NULL;
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = "Sdcer's Class";
    wcex.hIconSm = NULL;
    RegisterClassEx(&wcex);
    HWND hWnd=CreateWindow("Sdcer's Class","Snatch",WS_VISIBLE|WS_CHILD , 
    CW_USEDEFAULT,0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
    ::ShowWindow(hWnd,SW_SHOW|SW_SHOWNORMAL);
    }可是这样做为什么没有显示窗口呢?
      

  11.   

    点file/new时新建一个窗口不就结了.
      

  12.   

    不行,新建一个窗口不能满足我的要求啊。而且我早就把file/new给删除了,...没救了吗?
      

  13.   

    这段代码好像问题很多,你至少要有个窗口函数来赋值给lpfnWndProc
      

  14.   

    注册窗口类的时候,需要提供窗口过程处理函数
    wcex.lpfnWndProc = WndProc;
    LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
    {
    case WM_DESTROY:
    DestroyWindow(hwnd);
    break;
    ....
    return DefWindowProc(hwnd,message,wParam,lParam);
    }
      

  15.   

    看来你对 SDK 也不熟,为什么不用无模式对话框呢
      

  16.   

    去看windows 程序设计,有例子