鱼C论坛

 找回密码
 立即注册
查看: 3845|回复: 9

编写一个应用程序,在客户区利用DrawText()函数显示三行文本

[复制链接]
发表于 2013-5-5 13:51:28 | 显示全部楼层 |阅读模式
40鱼币
本帖最后由 大西洋1912 于 2013-5-5 17:41 编辑

如题,求大神帮忙(完整的思路和源代码)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-5 13:51:29 | 显示全部楼层
  1. #include <windows.h>
  2. #include <stdio.h>

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

  4. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
  5.                     PSTR szCmdLine, int iCmdShow)
  6. {
  7.         static TCHAR szAppName[] = TEXT ("HelloWin") ;
  8.         HWND         hwnd ;
  9.         MSG          msg ;
  10.         WNDCLASS     wndclass ;
  11.        
  12.         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
  13.         wndclass.lpfnWndProc   = WndProc ;
  14.         wndclass.cbClsExtra    = 0 ;
  15.         wndclass.cbWndExtra    = 0 ;
  16.         wndclass.hInstance     = hInstance ;
  17.         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
  18.         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
  19.         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
  20.         wndclass.lpszMenuName  = NULL ;
  21.         wndclass.lpszClassName = szAppName ;
  22.        
  23.         if (!RegisterClass (&wndclass))
  24.         {
  25.                 MessageBox (NULL, TEXT ("This program requires Windows NT!"),
  26.                         szAppName, MB_ICONERROR) ;
  27.                 return 0 ;
  28.         }
  29.        
  30.         hwnd = CreateWindow (szAppName,                  // window class name
  31.                 TEXT ("The Hello Program"), // window caption
  32.                 WS_OVERLAPPEDWINDOW,        // window style
  33.                 CW_USEDEFAULT,              // initial x position
  34.                 CW_USEDEFAULT,              // initial y position
  35.                 CW_USEDEFAULT,              // initial x size
  36.                 CW_USEDEFAULT,              // initial y size
  37.                 NULL,                       // parent window handle
  38.                 NULL,                       // window menu handle
  39.                 hInstance,                  // program instance handle
  40.                 NULL) ;                     // creation parameters
  41.        
  42.         ShowWindow (hwnd, iCmdShow) ;
  43.         UpdateWindow (hwnd) ;

  44.         while (GetMessage (&msg, NULL, 0, 0))
  45.         {
  46.                 TranslateMessage (&msg) ;
  47.                 DispatchMessage (&msg) ;
  48.         }
  49.         return msg.wParam ;
  50. }

  51. LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  52. {
  53.         HDC         hdc ;
  54.         PAINTSTRUCT ps ;
  55.         RECT        rect ;
  56.        
  57.         switch (message)
  58.         {
  59.         case WM_CREATE:
  60.                 PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;

  61.                
  62.                 return 0 ;
  63.                
  64.         case WM_PAINT:
  65.                 hdc = BeginPaint (hwnd, &ps) ;
  66.                
  67.                 GetClientRect (hwnd, &rect) ;
  68.                
  69.                 DrawText (hdc, TEXT ("First line\nSecond line\nThird line\n"), -1, &rect,
  70.                         DT_CENTER) ;
  71.                
  72.                 EndPaint (hwnd, &ps) ;
  73.                 return 0 ;
  74.                
  75.         case WM_DESTROY:
  76.                 PostQuitMessage (0) ;
  77.                 return 0 ;
  78.         }
  79.         return DefWindowProc (hwnd, message, wParam, lParam) ;
  80. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-5 16:50:21 | 显示全部楼层
这样?
3.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-5 17:06:41 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-5 17:09:19 | 显示全部楼层
大西洋1912 发表于 2013-5-5 17:06
对的,源代码呢

你建一个单文档的工程,在view类的onPaint里面直接drawText就可以了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-5 17:28:29 | 显示全部楼层
小新110 发表于 2013-5-5 17:09
你建一个单文档的工程,在view类的onPaint里面直接drawText就可以了啊

有点高深,是C++么,我还没有学过C++,所以求源代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-5 18:25:46 | 显示全部楼层
虽然代码长,但是基本都是MSDN里抄的,随便改改。这种东西不需要思路。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-5-5 19:25:32 | 显示全部楼层
仰望天上的光 发表于 2013-5-5 18:25
虽然代码长,但是基本都是MSDN里抄的,随便改改。这种东西不需要思路。

在连接的时候有点小麻烦,不过解决了
unresolved external symbol __imp__PlaySoundA@12 的解决办法
添加Winmm.lib和 头文件中包含 Mmsystem.h
选择"project"->"setting"->"link"->"Object/library   modules"然后添加"Winmm.lib"就可以了。
另一个常见的编译错误是。编译时选择的是控制台程序。修改时设置
选择"project"->"setting"->"link"->"Project Options" 找到 “nologo /subsystem:” 把consol 改成windows 就能编译窗口程序了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-5 20:56:07 | 显示全部楼层
大西洋1912 发表于 2013-5-5 19:25
在连接的时候有点小麻烦,不过解决了
unresolved external symbol __imp__PlaySoundA@12 的解决办法
添 ...

选择"project"->"setting"->"link"->"Project Options" 找到 “nologo /subsystem:” 把consol 改成windows 就能编译窗口程序了

这里直接把/subsystem:xxx删了
就会根据文件有main还是WinMain自动决定程序的类型了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-5-6 19:27:59 | 显示全部楼层
学习学习!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-29 11:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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