鱼C论坛

 找回密码
 立即注册
查看: 3352|回复: 2

VC++菜鸟问题

[复制链接]
发表于 2013-3-7 12:23:55 | 显示全部楼层 |阅读模式
1鱼币
  1. #include <windows.h>
  2. #include <stdio.h>

  3. LRESULT CALLBACK WinSunProc( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam );

  4. int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow )
  5. {
  6. //设计一个窗口类
  7. WNDCLASS wndcls ;
  8. wndcls.cbClsExtra = 0 ;
  9. wndcls.cbWndExtra = 0 ;
  10. wndcls.hbrBackground = ( HBRUSH )GetStockObject( BLACK_BRUSH );
  11. wndcls.hCursor = LoadIcon( NULL , IDI_ERROR );
  12. wndcls.hInstance = hInstance ;
  13. wndcls.lpfnWndProc = WinSunProc ;
  14. wndcls.lpszClassName = "sunxin2006";
  15. wndcls.lpszMenuName = NULL ;
  16. wndcls.style = CS_HREDRAW | CS_VREDRAW ;
  17. RegisterClass( &wndcls );

  18. //创建窗口,定义一个变量用来保存成功创建窗口后的返回的句柄
  19. HWND hwnd ;
  20. hwnd = CreateWindow( "sunxin2006" , "http://www.sunxin.org" ,
  21. WS_OVERLAPPEDWINDOW , 0 , 0 , 600 , 400 , NULL , NULL , hInstance , NULL );

  22. //显示以及刷新窗口
  23. ShowWindow( hwnd , SW_SHOWNORMAL );
  24. UpdateWindow( hwnd ) ;

  25. //定义消息结构体,开始消息循环
  26. MSG msg;
  27. while( GetMessage( &msg , NULL , 0 , 0 ) )
  28. {
  29. TranslateMessage( &msg ) ;
  30. DispatchMessage( &msg ) ;
  31. }
  32. return msg.wParam ;

  33. }

  34. //编写窗口过程函数
  35. LRESULT CALLBACK WinSunProc( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam )
  36. {
  37. switch( uMsg )
  38. {
  39. case WM_CHAR:
  40. char szChar[20] ;
  41. sprintf( szChar , "char code is %d" , wParam );
  42. MessageBox( hwnd , szChar , "char" , 0 );
  43. break ;

  44. case WM_LBUTTONDOWN:
  45. MessageBox( hwnd , "mouse clicked" , "message" , 0 );
  46. HDC hdc ;
  47. hdc = GetDc( hwnd );
  48. TextOut( hdc , 0 , 50 , "程序员之家" , strlen("程序员之家") );
  49. break ;

  50. case WM_PAINT:
  51. HDC hDC ;
  52. PAINTSTRUCT ps ;
  53. hDC = BeginPaint( hwnd , &ps );
  54. TextOut( hDC , 0 , 0 , "http://www.sunxin.org" , strlen("http://www.sunxin.org" ) ) ;
  55. EndPaint( hwnd , &ps );
  56. break ;

  57. case WM_CLOSE:
  58. if( IDYES == MessageBox( hwnd , "是否真的结束?" , "message" , MB_YESNO ))
  59. DestroyWindow( hwnd );
  60. break ;

  61. case WM_DESTROY:
  62. PostQuitMessage( 0 ) ;
  63. break ;

  64. default:
  65. return DefWindowProc( hwnd , uMsg , wParam , lParam );

  66. }

  67. return 0 ;
  68. }
复制代码

第一次看VC++ 我是按照孙鑫那本书的第一个例程敲的为什么在VC++ 2005编译通不过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-7 12:23:56 | 显示全部楼层
有两处错误:
第一处:GetDc  应该写成  GetDC。
第二处:WNDCLASS结构的hIcon没有赋值。

修改后代码:在vs2008下用win32程序,单字符编译通过并可运行


  1. #include <windows.h>
  2. #include <stdio.h>

  3. LRESULT CALLBACK WinSunProc( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam );

  4. int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow )
  5. {
  6.         //设计一个窗口类
  7.         WNDCLASS wndcls ;
  8.         wndcls.cbClsExtra = 0 ;
  9.         wndcls.cbWndExtra = 0 ;
  10.         wndcls.hbrBackground = ( HBRUSH )GetStockObject( BLACK_BRUSH );
  11.         //错误 2
  12.         wndcls.hIcon = LoadIcon(NULL,IDI_ERROR);
  13.         wndcls.hCursor = LoadIcon( NULL , IDI_ERROR );
  14.         wndcls.hInstance = hInstance ;
  15.         wndcls.lpfnWndProc = WinSunProc ;
  16.         wndcls.lpszClassName = "sunxin2006";
  17.         wndcls.lpszMenuName = NULL ;
  18.         wndcls.style = CS_HREDRAW | CS_VREDRAW ;
  19.         RegisterClass( &wndcls );

  20.         //创建窗口,定义一个变量用来保存成功创建窗口后的返回的句柄
  21.         HWND hwnd ;
  22.         hwnd = CreateWindow( "sunxin2006" , "http://www.sunxin.org" ,
  23.                 WS_OVERLAPPEDWINDOW , 0 , 0 , 600 , 400 , NULL , NULL , hInstance , NULL );

  24.         //显示以及刷新窗口
  25.         ShowWindow( hwnd , SW_SHOWNORMAL );
  26.         UpdateWindow( hwnd ) ;

  27.         //定义消息结构体,开始消息循环
  28.         MSG msg;
  29.         while( GetMessage( &msg , NULL , 0 , 0 ) )
  30.         {
  31.                 TranslateMessage( &msg ) ;
  32.                 DispatchMessage( &msg ) ;
  33.         }
  34.         return msg.wParam ;

  35. }

  36. //编写窗口过程函数
  37. LRESULT CALLBACK WinSunProc( HWND hwnd , UINT uMsg , WPARAM wParam , LPARAM lParam )
  38. {
  39.         switch( uMsg )
  40.         {
  41.         case WM_CHAR:
  42.                 char szChar[20] ;
  43.                 sprintf( szChar , "char code is %d" , wParam );
  44.                 MessageBox( hwnd , szChar , "char" , 0 );
  45.                 break ;

  46.         case WM_LBUTTONDOWN:
  47.                 MessageBox( hwnd , "mouse clicked" , "message" , 0 );
  48.                 HDC hdc ;
  49.                 //错误 1
  50.                 hdc = GetDC( hwnd );
  51.                 TextOut( hdc , 0 , 50 , "程序员之家" , strlen("程序员之家") );
  52.                 break ;

  53.         case WM_PAINT:
  54.                 HDC hDC ;
  55.                 PAINTSTRUCT ps ;
  56.                 hDC = BeginPaint( hwnd , &ps );
  57.                 TextOut( hDC , 0 , 0 , "http://www.sunxin.org" , strlen("http://www.sunxin.org" ) ) ;
  58.                 EndPaint( hwnd , &ps );
  59.                 break ;

  60.         case WM_CLOSE:
  61.                 if( IDYES == MessageBox( hwnd , "是否真的结束?" , "message" , MB_YESNO ))
  62.                         DestroyWindow( hwnd );
  63.                 break ;

  64.         case WM_DESTROY:
  65.                 PostQuitMessage( 0 ) ;
  66.                 break ;

  67.         default:
  68.                 return DefWindowProc( hwnd , uMsg , wParam , lParam );

  69.         }

  70.         return 0 ;
  71. }
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-7 12:39:12 | 显示全部楼层
至今在用VC6……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 01:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表