CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

程序能运行可是看不到

楼主kurt8276(扑火蝶)2005-01-18 07:42:03 在 VC/MFC / 基础类 提问

#include<windows.h>  
  LRESULT   CALLBACK   WndProc(HWND,UINT,WPARAM,LPARAM);  
   
  int   WINAPI   WinMain(HINSTANCE   hInstance,HINSTANCE   hPrevInstance,PSTR   szCmdLine,int   iCmdShow   )  
  {  
    static   TCHAR   szAppName[]=TEXT("Bezier");  
    HWND   hwnd;  
    MSG   msg;  
    WNDCLASS   wndclass;  
   
    wndclass.style=CS_HREDRAW|CS_VREDRAW;  
    wndclass.cbClsExtra=0;  
    wndclass.cbWndExtra=0;  
    wndclass.hInstance=hInstance;  
    wndclass.lpfnWndProc=WndProc;  
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);  
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);  
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);  
    wndclass.lpszClassName=szAppName;  
    wndclass.lpszMenuName=NULL;  
   
    if(!RegisterClass(&wndclass))  
    {  
      MessageBox(NULL,TEXT("ERROR"),TEXT(szAppName),MB_ICONERROR);  
      return   0;  
    }  
    hwnd=CreateWindow(szAppName,TEXT("Besizer"),  
    WS_OVERLAPPEDWINDOW,  
    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;  
   
  }  
  /*  
  int   WINAPI   WinMain   (HINSTANCE   hInstance,   HINSTANCE   hPrevInstance,  
                                          PSTR   szCmdLine,   int   iCmdShow)  
  {  
            static   TCHAR   szAppName[]   =   TEXT   ("Bezier")   ;  
            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   (BLACK_BRUSH)   ;  
            wndclass.lpszMenuName     =   NULL   ;  
            wndclass.lpszClassName   =   szAppName   ;  
             
            if   (!RegisterClass   (&wndclass))  
            {  
                      MessageBox   (NULL,   TEXT   ("Program   requires   Windows   NT!"),    
                                              szAppName,   MB_ICONERROR)   ;  
                      return   0   ;  
            }  
             
            hwnd   =   CreateWindow   (szAppName,   TEXT   ("Bezier   Splines"),  
                                                      WS_OVERLAPPEDWINDOW,  
                                                      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   ;  
  }  
   
  */  
  void   DrawBezier(HDC   hdc,POINT   apt[])  
  {  
    PolyBezier(hdc,apt,4);  
    MoveToEx(hdc,apt[0].x,apt[0].y,NULL);  
    LineTo(hdc,apt[1].x,apt[1].y);  
    MoveToEx(hdc,apt[2].x,apt[2].y,NULL);  
    LineTo(hdc,apt[3].x,apt[3].y);  
  }  
   
  LRESULT   CALLBACK   WndProc(HWND   hwnd,UINT   message,WPARAM   wParam,LPARAM   lParam)  
  {  
    static   POINT   apt[4];  
    HDC   hdc;  
    int   cxClient,cyClient;  
    PAINTSTRUCT   ps;  
    switch(message)  
    {  
    case   WM_SIZE:  
    cxClient=LOWORD(lParam);  
    cyClient=HIWORD(lParam);  
    apt[0].x=cxClient/4;  
    apt[0].y=cyClient/2;  
   
    apt[1].x=cxClient/2;  
    apt[1].y=cyClient/4;  
   
    apt[2].x=cxClient/2;  
    apt[2].y=3*cyClient/4;  
   
    apt[3].x=3*cxClient/4;  
    apt[3].y=cyClient/2;  
    return   0;  
    case   WM_LBUTTONDOWN:  
    case   WM_RBUTTONDOWN:  
    case   WM_MOUSEMOVE:  
    if(wParam&MK_LBUTTON||wParam&MK_RBUTTON)  
    {  
      hdc=GetDC(hwnd);  
      SelectObject(hdc,GetStockObject(WHITE_PEN));  
      DrawBezier(hdc,apt);  
      if(wParam&MK_LBUTTON)  
      {  
        apt[1].x=LOWORD(lParam);  
        apt[1].y=HIWORD(lParam);  
      }  
      if(wParam&MK_RBUTTON)  
      {  
        apt[2].x=LOWORD(lParam);  
        apt[2].y=HIWORD(lParam);  
      }  
              SelectObject(hdc,GetStockObject(BLACK_PEN));  
      DrawBezier(hdc,apt);  
      ReleaseDC(hwnd,hdc);  
    }  
    return   0;  
    case   WM_PAINT:  
    InvalidateRect(hwnd,NULL,TRUE);  
    hdc=BeginPaint(hwnd,&ps);  
    DrawBezier(hdc,apt);  
    EndPaint(hwnd,&ps);  
    return   0;  
    case   WM_DESTROY:  
    PostQuitMessage(0);  
    return   0;  
   
       
   
   
    }  
    return   DefWindowProc(hwnd,message,lParam,wParam);  
  }  
   
  问题点数:20、回复次数:7Top

1 楼sungengyu(快乐机器)回复于 2005-01-18 09:10:46 得分 0

调试一下,下面的   CreateWindow   返回值是   0   。  
   
    hwnd=CreateWindow(szAppName,TEXT("Besizer"),  
    WS_OVERLAPPEDWINDOW,  
    CW_USEDEFAULT,CW_USEDEFAULT,  
    CW_USEDEFAULT,CW_USEDEFAULT,  
    NULL,NULL,  
    hInstance,NULL);Top

2 楼sungengyu(快乐机器)回复于 2005-01-18 09:30:14 得分 0

还是用向导重建一个工程吧。节约时间。Top

3 楼chen18s(印度神棍)回复于 2005-01-18 09:42:02 得分 0

能运行?你是说在进程里看得到?  
  那就是style样式中没指定显示...一时忘了...Top

4 楼kurt8276(扑火蝶)回复于 2005-01-18 17:20:06 得分 0

还有在WndProc中有很多的static   varable   为什么??  
  Top

5 楼bobob(静思)回复于 2005-01-18 17:27:30 得分 0

ShowWindow   (hwnd,   iCmdShow)   ;  
  =================》  
  ShowWindow   (hwnd,   SW_SHOW)   ;  
  不信它不出来Top

6 楼bailinggui(人家想当程序员嘛)回复于 2005-01-18 18:32:34 得分 20

你这是照着charls   petzold的书敲的吧??(倍塞尔曲线)  
  好好看看!  
  我调过,没有问题Top

7 楼dawndu(东南飞)回复于 2005-01-18 21:21:31 得分 0

我看这样的问题没有必要在这里问了,你可以设个断点自己调Top

相关问题

  • 在TC里运行C程序,运行结果看不到怎么处理?
  • 程序运行时,如果用户按下Ctrl+Alt+ Del 看不到我运行的程序如何实现??
  • 如何使BCB程序运行时,在任务栏不显示,且按ctrl+alt+del后仍然看不到?
  • win2000下编译java程序看不到运行结果的问题,今天解决加到100分!!!
  • 怎样实现运行一个程序没有界面,任务栏上也看不到呢?
  • 菜鸟问题:为什么我的程序编译之后看不到运行结果?
  • 单文档View中想画线的代码,但是我的程序运行的时候什么也看不到?
  • 新手的问题,为什么下面的程序运行时,只能见到一个窗体,看不到运行结果???
  • 怎样做让自己的程序运行之后,看不到界面,在状态栏那里也看不到,只能在任务管理器里面能够看到它,该怎样 做。谢谢了
  • 用BCB新建了个CPP,写了个C++程序。但运行后看不到DOS窗口输出结果。但在VC下能正常运行。请问这是什么原因。

关键词

  • ws
  • ps
  • wndclass
  • apt
  • usedefault
  • hdc
  • szappname
  • cxclient
  • cyclient
  • hwnd

得分解答快速导航

  • 帖主:kurt8276
  • bailinggui

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo