| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3319 人关注过本帖
标题:如何在MFC的Win32 Console Application生成的窗口中添加按钮
只看楼主 加入收藏
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
如何在MFC的Win32 Console Application生成的窗口中添加按钮
我新建了一个Win32 Console Application工程,注册并新建了一个窗口,也添加了菜单,可以通过点击菜单实现功能,但我想要新建一个按钮,点击按钮实现功能应该怎么做呢,希望各位提供一些思路,散分散分~~~
搜索更多相关主题的帖子: 菜单 工程 如何 新建 
2012-04-17 18:35
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:0 
我晕来,本来是2008的工程,我为此专门写到VC6.0里面,但同样是Win32 Console Application,VC6.0可以创建按钮,但VS2008就是不显示.2008里是叫Win32控制台应用程序来着,应该是同一类型的啊?
求大大解决俩个问题:
1.如何在2008显示
2.如何添加ID绑定

程序代码:
#include <windows.h>
#include <string.h>
#include <stdio.h>

#include "resource.h"//菜单IDR_MENU1包含在这里面

LRESULT CALLBACK WindowsFunc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);

HWND hwndButton;
HWND hWnd;
HINSTANCE hInst;
TCHAR szWinName[]="MyWin";//窗口类名
TCHAR str[255]="";//保存输出的字符串

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    //定义一个windows类
    hInst=hInstance;
    WNDCLASSEX wcl;
    wcl.style=CS_HREDRAW|CS_VREDRAW;
    wcl.style&=~CS_VREDRAW;
    wcl.lpfnWndProc=WindowsFunc;
    wcl.cbClsExtra=0;
    wcl.cbWndExtra=0;
    wcl.hInstance=hInstance;
    wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wcl.hIconSm=LoadIcon(NULL,IDI_INFORMATION);
    wcl.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wcl.hCursor=LoadCursor(NULL,IDC_ARROW);
    wcl.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
    wcl.lpszClassName=szWinName;
    wcl.cbSize=sizeof(WNDCLASSEX);
    
    //注册这个窗体
    if (!RegisterClassEx(&wcl))
        return 0;


    hWnd=CreateWindow(    szWinName,
                        " Processing WM_CHAR Message",
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        HWND_DESKTOP,
                        NULL,
                        hInstance,
                        NULL);

    //显示这个窗体
    ShowWindow(hWnd,SW_SHOWNORMAL);
    UpdateWindow(hWnd);

    MSG msg;//定义消息结构体
    //创建消息循环
    while (GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK WindowsFunc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    HDC hdc;
    switch (message)
    {
        case WM_CHAR://按键消息处理
            hdc=GetDC(hWnd);//获得设备上下文
            strcpy(str,"            ");
            TextOut(hdc,1,1,str,strlen(str));//擦除原有字符
            sprintf(str,"%c",(char)wParam);//把字符转换成字符串
            TextOut(hdc,1,1,str,strlen(str));//输出字符
            ReleaseDC(hWnd,hdc);//释放设备描述表
            break;
        case WM_LBUTTONDOWN:
            hdc=GetDC(hWnd);//获得设备上下文
            strcpy(str,"            ");
            TextOut(hdc,1,1,str,strlen(str));//擦除原有字符
            sprintf(str,"Mouse");//把字符转换成字符串
            TextOut(hdc,1,1,str,strlen(str));//输出字符
            ReleaseDC(hWnd,hdc);//释放设备描述表
            break;
        case WM_CREATE://这里创建一个按钮,这里没有用到ID_BUTTON绑定
            hwndButton=CreateWindow("Button","OK",WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,100,100,100,100,hWnd,NULL,hInst,NULL);
            ShowWindow(hwndButton,SW_SHOWNORMAL);
            break; 
        case WM_COMMAND: //请问如何响应这个按钮?ID_BUTTON这个宏存在定义了,但创建的时候又如何绑定呢?
            /*switch(LOWORD(wParam))
            {
                case ID_BUTTON:
                    MessageBox("hello");
                    break; 
            }*/
            break;
        case WM_DESTROY://终止应用程序
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd,message,wParam,lParam);
    }
    return 0;
}
2012-04-17 19:41
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
很有意思 非用命令行来建立窗口 呵呵
2012-04-17 19:59
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:0 
回复 3楼 zklhp
因为尝试将摄像头视频绘到窗口上,再做其他处理,MFC工程会降低速度,而且影响后期代码编写
2012-04-17 21:39
老藤
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-6-10
收藏
得分:0 
学习
2012-06-10 13:56
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用stophin在2012-4-17 21:39:54的发言:

因为尝试将摄像头视频绘到窗口上,再做其他处理,MFC工程会降低速度,而且影响后期代码编写
不知道你还能不能看到

其实降低不了多少速度 如果实在觉得慢可以尝试纯API编写 有个书 貌似叫windows什么编程 专门讲这个
2012-06-10 15:02
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:0 
回复 6楼 zklhp
好久没来了,谢谢zklhp的回答,我已经用MFC完成了,在起步的时候选来选去,最后还是选了MFC,哈哈
2012-07-26 10:08
快速回复:如何在MFC的Win32 Console Application生成的窗口中添加按钮
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077496 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved