现在的位置: 首页 > 综合 > 正文

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

2013年01月01日 ⁄ 综合 ⁄ 共 2131字 ⁄ 字号 评论关闭

在控制台项目中实现窗体的程序
 这样可能吗?不会吧?其实这个非常简单,简单地出乎你我的意料。以前我在CSDN看到过很多种解决控制台窗口和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. using namespace std;   
  9.   
  10. // 定义的宏       
  11. #define JCLASSNAME  "优化的程序"       
  12. #define JCAPTION  "程序演示"       
  13. #define WINDOW_WIDTH 320       
  14. #define WINDOW_HEIGHT 320       
  15.   
  16. HRESULT CALLBACK MyAppProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )       
  17. {       
  18.  switch ( msg )       
  19.  {       
  20.  case WM_DESTROY:       
  21.   PostQuitMessage( 0 );       
  22.   return 0;       
  23.  }       
  24.  return (HRESULT)DefWindowProc( hWnd, msg, wParam, lParam );       
  25. };       
  26.   
  27. int  main( int argc, char** argv )       
  28. {       
  29.  cout<<"将要显示我的窗体程序喽!/n";   
  30.  system("pause");   
  31.  HINSTANCE hInst = NULL;   
  32.  // 设置Window Class结构并且注册它   
  33.  WNDCLASSEX jWndCls = { sizeof( jWndCls ), CS_CLASSDC, MyAppProc, 0, 0, hInst,        
  34.   NULL, NULL, 0, NULL, JCLASSNAME, NULL };       
  35.  RegisterClassEx( &jWndCls );       
  36.   
  37.  // 设置窗口并且显示窗口       
  38.  HWND hWnd = CreateWindowEx( WS_EX_TOPMOST, JCLASSNAME, JCAPTION, WS_CAPTION | WS_SYSMENU, 20, 20,       
  39.   WINDOW_WIDTH, WINDOW_HEIGHT, NULL, NULL, hInst, NULL );       
  40.  if ( hWnd == NULL )       
  41.   return FALSE;       
  42.  ShowWindow( hWnd, SW_SHOWNORMAL );       
  43.  UpdateWindow( hWnd );       
  44.   
  45.  // 进入消息循环       
  46.  MSG msg;       
  47.  ZeroMemory( &msg, sizeof( msg ) );       
  48.  while( msg.message != WM_QUIT )       
  49.  {       
  50.   if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )       
  51.   {       
  52.    TranslateMessage( &msg );       
  53.    DispatchMessage( &msg );       
  54.   }       
  55.   else      
  56.   {       
  57.    // 什么也不做       
  58.   }       
  59.  }       
  60.   
  61.  // 解除窗口注册       
  62.  UnregisterClass( JCLASSNAME, jWndCls.hInstance );       
  63.  return 0;       
  64. }      

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

抱歉!评论已关闭.