Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

剖筋去骨,只具有最基本的Win32架构的程序。还原Win32 sdk下程序

来源: gencheng 分享至:

改写自候捷的generic.c

//---------------------------------------------------------------------
// 文件     : generic.c
// 作者     : 杨根成
// 编译连接   : 请参考 generic.mak
//---------------------------------------------------------------------

#include <windows.h>   // 每一个Windows程序都需要载入此头文件
#include "resource.h"  // 内含各个 resource IDs

HINSTANCE _hInst;      // Instance handle
HWND      _hWnd;

char _szAppName[] = "Generic";   
char _szTitle[]   = "Base Win32 SDK Application"; 

//---------------------------------------------------------------------
// About - 对话框函数
//---------------------------------------------------------------------
LRESULT CALLBACK About(HWND hDlg,     UINT message,
                       WPARAM wParam, LPARAM lParam)
{
  UNREFERENCED_PARAMETER(lParam);     

  switch (message) {
    case WM_INITDIALOG:
         return (TRUE);     

    case WM_COMMAND:
         if (LOWORD(wParam) == IDOK
             || LOWORD(wParam) == IDCANCEL) {
             EndDialog(hDlg, TRUE);
             return (TRUE); 
         }
         break;
  }
  return (FALSE);
}


//---------------------------------------------------------------------
// WndProc - 窗口函数
//---------------------------------------------------------------------
LRESULT CALLBACK WndProc(HWND hWnd,     UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;

  switch (message) {
    case WM_COMMAND:

         wmId    = LOWORD(wParam);
         wmEvent = HIWORD(wParam);

         switch (wmId) {
           case IDM_ABOUT:
                DialogBox(_hInst,
                          "AboutBox",    
                          hWnd,          
                          (DLGPROC)About 
                         );
                break;

           case IDM_EXIT:                
                DestroyWindow (hWnd);
                break;

           default:
                return (DefWindowProc(hWnd, message, wParam, lParam));
         }
         break;
    case WM_LBUTTONDOWN:
   MessageBox(hWnd, "鼠标左键单击!", "消息", MB_ICONINFORMATION);
         break;
    case WM_RBUTTONDOWN:
   MessageBox(hWnd, "鼠标右键单击!", "消息", MB_ICONINFORMATION);
         break;

    case WM_DESTROY: 
         PostQuitMessage(0);
         break;   
    default:
         return (DefWindowProc(hWnd, message, wParam, lParam));
  }
  return (0);
}


//---------------------------------------------------------------------
// WinMain - 程序进入点
//---------------------------------------------------------------------
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                     LPSTR lpCmdLine,     int nCmdShow)
{
MSG msg;
WNDCLASS  wc;

  UNREFERENCED_PARAMETER(lpCmdLine);      // 避免编译时的警告 

  wc.style         = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc   = (WNDPROC)WndProc;    
  wc.cbClsExtra    = 0;
  wc.cbWndExtra    = 0;
  wc.hInstance     = hInstance;
  wc.hIcon         = LoadIcon(hInstance, "jjhouricon");
  wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = GetStockObject(WHITE_BRUSH);  // 窗口后台颜色
  wc.lpszMenuName  = "GenericMenu";                // .RC 所定义的窗体
  wc.lpszClassName = _szAppName;
 
  RegisterClass(&wc); 

  _hInst = hInstance; // 存储为全局变量,方便使用
  _hWnd = CreateWindow(                 //CreateWindow()
                       _szAppName,
                       _szTitle,
                       WS_OVERLAPPEDWINDOW,
                       CW_USEDEFAULT,
                       CW_USEDEFAULT,
                       CW_USEDEFAULT,
                       CW_USEDEFAULT,
                       NULL,
                       NULL,
                       hInstance,
                       NULL
                      );

  if (!_hWnd)
     return (FALSE);
 
  ShowWindow(_hWnd, nCmdShow);
  UpdateWindow(_hWnd); 

  /*--以下是主消息循环--*/
  while (GetMessage(&msg, NULL, 0, 0)) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
  }

  return (msg.wParam);
}

//------------------------ end of file ------------------------------

     个人感觉,我修改的这个源程序,比候捷的哪个更简洁,基本是用Win32 SDK 堆砌构建而成。

 

 


 


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史