| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5728 人关注过本帖
标题:关于人机交互的问题。
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 20楼 smallmoon521
谢谢你的建议。

梅尚程荀
马谭杨奚







                                                       
2012-02-14 13:11
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
下面是我创建一个窗口的代码:
程序代码:
#include <windows.h>
#include <math.h>
#define  NUM  100

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int  WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[] =TEXT("拥抱世界");
    HWND      hwnd;
    MSG       msg;
    WNDCLASS  wndclass;

    wndclass.style = CS_HREDRAW || CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;

    if(!RegisterClass(&wndclass))
    {
        MessageBox(NULL, TEXT("This program requires windows NT!"), szAppName, MB_ICONERROR);
        return 0;   
    }

    hwnd = CreateWindow(szAppName, TEXT("风光无限好"),  // CreateWindow下波浪线,是整个程序中唯一一处。
                        WS_OVERLAPPENDWINDOW,           /*但是编译出现错误提示是           error C2065: “WS_OVERLAPPENDWINDOW”: 未声明的标识符*/
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,
                        NULL, NULL, hInstance, NULL);

    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC        hdc;
    int     i;
    PAINTSTRUCT ps;
    POINT   apt[NUM];
    RECT rect;

    switch(message)
    {
    case  WM_CREATE:
        PlaySound(TEXT("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC);
        return 0;
    case  WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
        GetClientRect(hwnd, &rect);
        DrawText(hdc, TEXT("Hello, Windows program design!"), -1, &rect,
                 DT_SINGLELINE | DT_CENTER | DT_VCENTER);
        EndPaint(hwnd, &ps);
        return 0;
    case  WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}
我应该没写错别英文文字吧。

梅尚程荀
马谭杨奚







                                                       
2012-02-14 15:18
smallmoon521
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:517
专家分:1373
注 册:2008-4-21
收藏
得分:0 
WS_OVERLAPPENDWINDOW
WS_OVERLAPPEDWINDOW


为游戏狂~~!!    大家努力编哈!
2012-02-14 16:37
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:11 
我以前一直以为别人提的杨大哥是指老杨,看来是个误会……
2012-02-14 16:38
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
多了个N。

梅尚程荀
马谭杨奚







                                                       
2012-02-14 16:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用pangding在2012-2-14 16:38:47的发言:

我以前一直以为别人提的杨大哥是指老杨,看来是个误会……
杨大哥是B版。

梅尚程荀
马谭杨奚







                                                       
2012-02-14 16:46
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
多态不过是 switch/case 的一种简单变形,有那么强大吗?
c++ 如果要实现完全封装,还得按照 c 的方式来

我就是真命天子,顺我者生,逆我者死!
2012-02-14 16:55
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 23楼 smallmoon521
谢谢你。
下面是个写正弦函数的程序,我贴出WndProc()函数,能帮我解释下吗。
程序代码:
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)     
{ 
    static int  cxClient, cyClient ;   //  是定义X Y坐标吗?
    HDC         hdc;      
    int         i ;       
    PAINTSTRUCT ps ;                    //  这个结构体指针有什么用?
    POINT       apt [NUM] ;             //  是放点的数组吧。     
    switch (message)      
    {      
       case   WM_SIZE:      
           cxClient = LOWORD (lParam) ; // 这两句什么意思     
           cyClient = HIWORD (lParam) ;       
            return 0 ;                      
       case   WM_PAINT:      
            hdc = BeginPaint (hwnd, &ps) ;                       
            MoveToEx (hdc, 0,cyClient / 2, NULL) ;    // 移到下一个点?为什么要除2
            LineTo   (hdc, cxClient, cyClient / 2) ;   // 为什么只有y除以2?                   
            for (i = 0 ; i < NUM ; i++)       
         {       
             apt[i].x = i * cxClient / NUM ;
             apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;  // 循环确定点的坐标放到数组中?
      
         }                     
            Polyline (hdc, apt, NUM) ;       // 这个函数怎么实现的?
            return 0 ;                     
        case   WM_DESTROY:       
            PostQuitMessage (0) ;      
            return 0 ;       
    }       
    return DefWindowProc (hwnd, message, wParam, lParam) ;       
}
如果要画一个点,一条线段,一个矩形,一个圆该怎么改?

梅尚程荀
马谭杨奚







                                                       
2012-02-14 16:55
闲出屁
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:420
专家分:612
注 册:2012-1-24
收藏
得分:0 
以下是引用有容就大在2012-2-14 16:55:55的发言:

谢谢你。
下面是个写正弦函数的程序,我贴出WndProc()函数,能帮我解释下吗。LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)      
{  
    static int  cxClient, cyClient ;   //  是定义X Y坐标吗?
    HDC         hdc;      
    int         i ;        
    PAINTSTRUCT ps ;                    //  这个结构体指针有什么用?
    POINT       apt [NUM] ;             //  是放点的数组吧。      
    switch (message)      
    {      
       case   WM_SIZE:      
           cxClient = LOWORD (lParam) ; // 这两句什么意思      
           cyClient = HIWORD (lParam) ;        
            return 0 ;                       
       case   WM_PAINT:      
            hdc = BeginPaint (hwnd, &ps) ;                        
            MoveToEx (hdc, 0,cyClient / 2, NULL) ;    // 移到下一个点?为什么要除2
            LineTo   (hdc, cxClient, cyClient / 2) ;   // 为什么只有y除以2?                    
            for (i = 0 ; i < NUM ; i++)        
         {        
             apt.x = i * cxClient / NUM ;
             apt.y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;  // 循环确定点的坐标放到数组中?
      
         }                     
            Polyline (hdc, apt, NUM) ;       // 这个函数怎么实现的?
            return 0 ;                     
        case   WM_DESTROY:        
            PostQuitMessage (0) ;      
            return 0 ;        
    }        
    return DefWindowProc (hwnd, message, wParam, lParam) ;        
}如果要画一个点,一条线段,一个矩形,一个圆该怎么改?
http://bbs.bccn.net/viewthread.php?tid=358988
3楼

乔布斯是神 宫崎骏也是神~~ 才知道 原来士兵突击的主题曲是久石让的 久石让的音乐 真传神
2012-02-14 16:58
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:11 
以下是引用有容就大在2012-2-14 10:55:25的发言:
 C语言不是面向过程的吗.能用C实现封装,继承,多态?


首先,面向对象 是一个贬义词
c 能够实现 封装,继承,多态,只是要比 c++ 多写几行代码

1、c 语言能够实现彻底的封装,完全隐藏 数据 和 函数,
   c++ 如果想实达到这个目的,还得模仿 c
2、继承 就是个结构体嵌套,只是换了个名字而已
3、多态 就是 switch/case 的简写

有人非要认会 面向对象 怎么怎么样的,只能说 面向过程 还没理解

[ 本帖最后由 BlueGuy 于 2012-2-14 17:13 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2012-02-14 17:07
快速回复:关于人机交互的问题。
数据加载中...
 
   



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

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