用SDK创建一个简单的窗口

原创 2006年06月02日 14:28:00

//=====================================================================================================
//TITLE:
//  用SDK创建一个简单的窗口
//AUTHOR:
//  norains
//DATE:
//  Friday 7-April-2006
//=====================================================================================================
  在EVC编译环境下,不使用MFC框架创建一个极其简单的窗口----甚至连关闭按钮都没有,只有最简单的消息循环.
  此代码分为两个文件,分别是:HelloWindow.h和HelloWindow.cpp;代码根据《WindowCE程序设计》一书的第一个代码例子进行精简。
  
  
/*-----------------HelloWindow.h----------------------*/
//----------------------------------------------------------------------
// Function prototypes

// Returns number of elements
int InitApp (HINSTANCE);
HWND InitInstance (HINSTANCE, LPWSTR, int);
int TermInstance (HINSTANCE, int);

// Window procedures
LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM);

// Message handlers
LRESULT DoDestroyMain (HWND, UINT, WPARAM, LPARAM);

 


/*---------------HelloWindow.cpp----------------------*/
#include "stdafx.h"
#include "HelloWindow.h"
//----------------------------------------------------------------------
// Global data
//
const TCHAR szAppName[] = TEXT ("HelloCE");
HINSTANCE hInst;                     // Program instance handle

int WINAPI WinMain( HINSTANCE hInstance,
     HINSTANCE hPrevInstance,
     LPTSTR    lpCmdLine,
     int       nCmdShow)
{
  // TODO: Place code here.
 
  MSG msg;
    int rc = 0;
    HWND hwndMain;

    // init application
    rc = InitApp (hInstance);
    if (rc) return rc;

    // Initialize this instance.
    hwndMain = InitInstance (hInstance, lpCmdLine, nCmdShow);
    if (hwndMain == 0)
        return 0x10;

    // Application message loop
    while (GetMessage (&msg, NULL, 0, 0)) {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    // Instance cleanup
    return TermInstance (hInstance, msg.wParam);

 return 0;
}

//----------------------------------------------------------------------
// InitApp - Application initialization
//
int InitApp (HINSTANCE hInstance) {
    WNDCLASS wc;

    // Register application main window class.
    wc.style = 0;                             // Window style
    wc.lpfnWndProc = MainWndProc;             // Callback function
    wc.cbClsExtra = 0;                        // Extra class data
    wc.cbWndExtra = 0;                        // Extra window data
    wc.hInstance = hInstance;                 // Owner handle
    wc.hIcon = NULL,                          // Application icon
    wc.hCursor = NULL;                        // Default cursor
    wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    wc.lpszMenuName =  NULL;                  // Menu name
    wc.lpszClassName = szAppName;             // Window class name

    if (RegisterClass (&wc) == 0) return 1;

    return 0;
}

//----------------------------------------------------------------------
// InitInstance - Instance initialization
//
HWND InitInstance (HINSTANCE hInstance, LPWSTR lpCmdLine,
                   int nCmdShow) {
    HWND hWnd;

    // Save program instance handle in global variable.
    hInst = hInstance;

    // Create main window.
    hWnd = CreateWindow (szAppName,           // Window class
                         TEXT("Hello"),       // Window title
                         WS_VISIBLE,          // Style flags
                         CW_USEDEFAULT,       // x position
                         CW_USEDEFAULT,       // y position
                         CW_USEDEFAULT,      // Initial width
                         CW_USEDEFAULT,      // Initial height
                         NULL,                // Parent
                         NULL,                // Menu, must be null
                         hInstance,           // Application instance
                         NULL);               // Pointer to create parameters
                        
     /*----------------------------------------------------------------------------------------------------
     //------If you want the window not to display in the taskbar,you should use the following code.------//
      hWnd=CreateWindowEx(WS_EX_TOOLWINDOW|WS_EX_NOACTIVATE, // Window type
                     szAppName,      // Window class
                     TEXT("Hello"),    // Window title
                     WS_POPUP,       // Style flags
                     CW_USEDEFAULT,    // x position
                     CW_USEDEFAULT,    // y position
                     CW_USEDEFAULT,    // Initial width
                     CW_USEDEFAULT,    // Initial height
                     NULL,        // Parent
                     NULL,        // Menu, must be null
                     hInstance,      // Application instance
                     NULL         // Pointer to create parameters
                     );
    
     -----------------------------------------------------------------------------------------------------*/

    // Return fail code if window not created.
    if (!IsWindow (hWnd)) return 0;

    // Standard show and update calls
    ShowWindow (hWnd, nCmdShow);
    UpdateWindow (hWnd);
    return hWnd;
}

//----------------------------------------------------------------------
// TermInstance - Program cleanup
//
int TermInstance (HINSTANCE hInstance, int nDefRC) {

    return nDefRC;
}

//----------------------------------------------------------------------
// MainWndProc - Callback function for application window
//
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam,
                              LPARAM lParam)
{
   
    // Search message list to see if we need to handle this
    // message.  If in list, call procedure.
  switch(wMsg)
  {
 case WM_DESTROY:
  return DoDestroyMain(hWnd,wMsg,wParam,lParam);
 default:
  return DefWindowProc (hWnd, wMsg, wParam, lParam);
  }
}

//----------------------------------------------------------------------
// DoDestroyMain - Process WM_DESTROY message for window.
//
LRESULT DoDestroyMain (HWND hWnd, UINT wMsg, WPARAM wParam,
                       LPARAM lParam) {
    PostQuitMessage (0);
    return 0;
}

相关文章推荐

win32sdk学习-创建一个对话框窗口

这几天在学习win32sdk编程,学习试用win32api来开发window程序。 win32应用程序入口和标准控制台程序入口不同,不是main而是WinMain了,这个函数默认会传递一些参数给应用...
  • sujudz
  • sujudz
  • 2012年10月04日 12:55
  • 9628

win32sdk学习-简单的创建一个自己的工具栏

window程序中常使用的一个组件,就是工具栏了,基本上工具栏都是和菜单的选择是对应的。 在win32 api中有一个专门创建工具栏的函数(尽管msdn上说不建议使用) CreateToolbar...
  • sujudz
  • sujudz
  • 2012年10月10日 08:40
  • 4275

Win32 SDK基础(7)—— 怎样创建一个窗口的子窗口

什么是子窗口?当我们在点击Windows窗口的某个按钮时,比如点击窗口的关闭按钮,往往会弹出一个窗口来提示相关信息,类似这种弹出窗口就是主窗口的子窗口。我们创建子窗口时,也是使用CreateWindo...

MFC下创建一个简单的窗口

初学MFC的同学都想知道一个基本的MFC程序是如何添加一个新的窗口的,但是网络上要找到一个合适的资源很难。比如就简单的一个,新建一个对话框并且调用它。我在网络上找半天都没找到像样的资源。这里就给大家贴...

SDK学习笔记2-一个Win32窗口程序实现过程

Win32程序实现的步骤: WinMain函数的定义 创建一个窗口 1. 设计一个窗口类 2. 注册窗口类 3. 创建窗口 4. 显示及刷新窗口进行消息循环 完成回调函数 //WinMain...
  • nvcgkk
  • nvcgkk
  • 2016年12月03日 21:33
  • 318

Windows SDK 01 简单的Dialog窗口

相关函数 WinMain函数 #include // 引用windows编程所需的头文件 int WINAPI WinMain( HINSTANCE hInstance, ...

delphi的一个简单的窗口显示

  • 2009年04月03日 17:47
  • 176KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用SDK创建一个简单的窗口
举报原因:
原因补充:

(最多只允许输入30个字)