鱼C论坛

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

静态类控件,创建后看不见

[复制链接]
发表于 2013-12-9 17:30:04 | 显示全部楼层 |阅读模式
1鱼币
想创建一个静态控件,创静后看不见,窗口分析已经创建成功了,而且我只想创建一个,结果好像循环创建了很多个

请问是为什么啊


  1. #include<windows.h>








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



  4. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
  5. PSTR szCmdline,int iCmdShow)
  6. {



  7. static TCHAR szAppName[]=TEXT("Static");
  8. HWND hwnd;
  9. MSG msg;
  10. WNDCLASS wndclass;

  11. hInst=hInstance;

  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. if(!::RegisterClass(&wndclass))
  23. {
  24. ::MessageBox(NULL,TEXT("Program requires Windows NT!"),
  25. szAppName,MB_ICONERROR);
  26. return 0;
  27. }



  28. hwnd=::CreateWindow(szAppName,
  29. TEXT("Static"),
  30. WS_OVERLAPPEDWINDOW|WS_VISIBLE,
  31. CW_USEDEFAULT,CW_USEDEFAULT,
  32. CW_USEDEFAULT,CW_USEDEFAULT,
  33. NULL,NULL,hInstance,NULL
  34. );

  35. //::ShowWindow(hwnd,iCmdShow);
  36. ::UpdateWindow(hwnd);


  37. while(::GetMessage(&msg,NULL,0,0))

  38. {
  39. ::TranslateMessage(&msg);
  40. ::DispatchMessage(&msg);

  41. //msg.wParam=0;

  42. }

  43. return msg.wParam;




  44. }



  45. LRESULT CALLBACK WndProc(HWND hwnd ,UINT message,WPARAM wParam,LPARAM lParam)
  46. {

  47. static HWND hwndSmaller;
  48. static int cxClient,cyClient,cxChar,cyChar;






  49. switch(message)
  50. {
  51. case WM_CREATE:
  52. {
  53. cxChar=LOWORD(::GetDialogBaseUnits());
  54. cyChar=HIWORD(::GetDialogBaseUnits());



  55. hwndSmaller=::CreateWindow(TEXT("static"),TEXT("静态控件"),
  56. WS_CHILD|WS_VISIBLE|SS_BLACKRECT,
  57. 0,0,100,100,
  58. hwnd,(HMENU)1,hInst,NULL);




  59. return 0;
  60. }















  61. case WM_DESTROY:
  62. {
  63. ::PostQuitMessage(0);
  64. return 0;
  65. }

  66. }

  67. return ::DefWindowProc(hwnd,message,wParam,lParam);
  68. }

复制代码

最佳答案

查看完整内容

static TCHAR szAppName[]=TEXT("Static"); 注册窗口类的时候,类名添这个干啥。。。换个, Static 这个是标签什么的类名。。。 换成 MyWindow 什么的都可以,别是系统已经注册过的。 再说了,Static 根本不是容器控件嘛。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-12-9 17:30:05 | 显示全部楼层
static TCHAR szAppName[]=TEXT("Static");
注册窗口类的时候,类名添这个干啥。。。换个,
Static 这个是标签什么的类名。。。
换成 MyWindow 什么的都可以,别是系统已经注册过的。
再说了,Static 根本不是容器控件嘛。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-12-9 19:09:12 | 显示全部楼层

Ok, Look Here!

本帖最后由 浮砂 于 2013-12-9 19:11 编辑

这是你的代码,我帮你小小的更改了两处。
还有就是  创建标签时去掉这个属性  SS_BLACKRECT
不去掉的话,标签的字显示不出来
  1. #include<windows.h>

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

  4. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
  5. PSTR szCmdline,int iCmdShow)
  6. {
  7. static TCHAR szAppName[]=TEXT("MyWindow");  /*一个是这里,类名的问题*/
  8. HWND hwnd;
  9. MSG msg;
  10. WNDCLASS wndclass;

  11. hInst=hInstance;

  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. if(!::RegisterClass(&wndclass))
  23. {
  24. ::MessageBox(NULL,TEXT("Program requires Windows NT!"),
  25. szAppName,MB_ICONERROR);
  26. return 0;
  27. }

  28. hwnd=::CreateWindow(szAppName,
  29. TEXT("Static"),
  30. WS_OVERLAPPEDWINDOW|WS_VISIBLE,
  31. CW_USEDEFAULT,CW_USEDEFAULT,
  32. CW_USEDEFAULT,CW_USEDEFAULT,
  33. NULL,NULL,hInstance,NULL
  34. );

  35. //::ShowWindow(hwnd,iCmdShow);
  36. ::UpdateWindow(hwnd);
  37. while(::GetMessage(&msg,NULL,0,0))

  38. {
  39. ::TranslateMessage(&msg);
  40. ::DispatchMessage(&msg);

  41. //msg.wParam=0;

  42. }
  43. return msg.wParam;
  44. }



  45. LRESULT CALLBACK WndProc(HWND hwnd ,UINT message,WPARAM wParam,LPARAM lParam)
  46. {
  47. static HWND hwndSmaller;
  48. static int cxClient,cyClient,cxChar,cyChar;
  49. switch(message)
  50. {
  51. case WM_CREATE:
  52. {
  53. cxChar=LOWORD(::GetDialogBaseUnits());
  54. cyChar=HIWORD(::GetDialogBaseUnits());

  55. hwndSmaller=::CreateWindow(TEXT("Static"),TEXT("静态控件"),
  56. WS_CHILD|WS_VISIBLE,  /*还有就是这里,SS_BLACKRECT,不去掉这个属性,标签上面的字显示不出来。*/
  57. 0,0,100,100,
  58. hwnd,(HMENU)1,hInst,NULL);
  59. return 0;
  60. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-9 23:07:49 | 显示全部楼层

谢谢啊.............
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-9 23:13:18 | 显示全部楼层
浮砂 发表于 2013-12-9 19:09
这是你的代码,我帮你小小的更改了两处。
还有就是  创建标签时去掉这个属性  SS_BLACKRECT
不去掉的话, ...

还有想问下,标签上面的字怎么居中对齐啊,SS_CENTER只可以水平居中,垂直怎么居中啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-12-10 08:16:09 | 显示全部楼层
付笑 发表于 2013-12-9 23:13
还有想问下,标签上面的字怎么居中对齐啊,SS_CENTER只可以水平居中,垂直怎么居中啊

有个方法哈, 就是把标签的大小调节的和文字的高度差不多。。。
我一般就是这么用的,,
不过垂直居中嘛,,,
CreateWindow的时候 加上这个属性   SS_CENTERIMAGE
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-10 08:32:53 | 显示全部楼层
浮砂 发表于 2013-12-10 08:16
有个方法哈, 就是把标签的大小调节的和文字的高度差不多。。。
我一般就是这么用的,,
不过垂直居中嘛 ...

高手啊,谢谢啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-10 08:37:40 | 显示全部楼层
浮砂 发表于 2013-12-10 08:16
有个方法哈, 就是把标签的大小调节的和文字的高度差不多。。。
我一般就是这么用的,,
不过垂直居中嘛 ...

再问个问题啊,WM_CTLCOLORSTATIC  这个消息前面三个字母是什么意思啊 "CTL",后面的能明白了,前面这三个看不懂什么意思
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-12-10 08:53:15 | 显示全部楼层
付笑 发表于 2013-12-10 08:37
再问个问题啊,WM_CTLCOLORSTATIC  这个消息前面三个字母是什么意思啊 "CTL",后面的能明白了,前面这三个 ...

CTL是英文ConTroL的缩写,有"控制的"意思。
这个消息可能就是  控制Static 颜色  把
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-10 17:01:43 | 显示全部楼层
浮砂 发表于 2013-12-10 08:53
CTL是英文ConTroL的缩写,有"控制的"意思。
这个消息可能就是  控制Static 颜色  把

谢谢了,我知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 04:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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