在控制台项目中实现窗体的程序

本文介绍如何在控制台项目中实现窗体程序。仅需替换WinMain()为main(),并使用CreateWindowEx()确保窗口始终位于顶层。文中提供了一个简单的C++示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在控制台项目中实现窗体的程序
这样可能吗?不会吧?其实这个非常简单,简单地出乎你我的意料。以前我在优快云看到过很多种解决控制台窗口和windows窗口共存的解决方案,但是没有记住,这回自己一实验就成功了,不用太多改动,真是太好了。其实我们不用创建多线程,只需将WinMain()函数替换成main()函数即可。详细情况请看我的文章为自己创作一个好的DirectX程序风格,这里我说明一下:

Code:
  1. /*---------------------------------------------------------------------------
  2. 蒋轶民制作E-mail:jiangcaiyang123@163.com
  3. 文件名:MainFrame.cpp
  4. 作用:在控制台项目中实现窗体的程序
  5. ----------------------------------------------------------------------------*/
  6. #include<iostream>
  7. #include<windows.h>
  8. usingnamespacestd;
  9. //定义的宏
  10. #defineJCLASSNAME"优化的程序"
  11. #defineJCAPTION"程序演示"
  12. #defineWINDOW_WIDTH320
  13. #defineWINDOW_HEIGHT320
  14. HRESULTCALLBACKMyAppProc(HWNDhWnd,UINTmsg,WPARAMwParam,LPARAMlParam)
  15. {
  16. switch(msg)
  17. {
  18. caseWM_DESTROY:
  19. PostQuitMessage(0);
  20. return0;
  21. }
  22. return(HRESULT)DefWindowProc(hWnd,msg,wParam,lParam);
  23. };
  24. intmain(intargc,char**argv)
  25. {
  26. cout<<"将要显示我的窗体程序喽!/n";
  27. system("pause");
  28. HINSTANCEhInst=NULL;
  29. //设置WindowClass结构并且注册它
  30. WNDCLASSEXjWndCls={sizeof(jWndCls),CS_CLASSDC,MyAppProc,0,0,hInst,
  31. NULL,NULL,0,NULL,JCLASSNAME,NULL};
  32. RegisterClassEx(&jWndCls);
  33. //设置窗口并且显示窗口
  34. HWNDhWnd=CreateWindowEx(WS_EX_TOPMOST,JCLASSNAME,JCAPTION,WS_CAPTION|WS_SYSMENU,20,20,
  35. WINDOW_WIDTH,WINDOW_HEIGHT,NULL,NULL,hInst,NULL);
  36. if(hWnd==NULL)
  37. returnFALSE;
  38. ShowWindow(hWnd,SW_SHOWNORMAL);
  39. UpdateWindow(hWnd);
  40. //进入消息循环
  41. MSGmsg;
  42. ZeroMemory(&msg,sizeof(msg));
  43. while(msg.message!=WM_QUIT)
  44. {
  45. if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
  46. {
  47. TranslateMessage(&msg);
  48. DispatchMessage(&msg);
  49. }
  50. else
  51. {
  52. //什么也不做
  53. }
  54. }
  55. //解除窗口注册
  56. UnregisterClass(JCLASSNAME,jWndCls.hInstance);
  57. return0;
  58. }

除了将WinMain()函数替换成Main()函数之外,我在第38行处也进行了修改:为了使窗口能够在最顶端,我们必须将CreateWindow()函数替换成CreateWindowEx()函数。这个函数的第一个标识符就是设定Ex状态下的窗体风格选项的。通过使用WS_EX_TOPMOST这个标识符,我们可以将窗口显示在最顶端。
为自己的目标又迈进了一步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值