用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;
}

Win32 SDK基础(3)—— 从零开始创建windows窗口(一)

一、从Windows的程序分类说起。     从高中第一次接触电脑开始(惭愧,高中才会用电脑,大学一年级才知道有QQ这么个东西,家里穷,没办法),在我的概念中电脑应该就是windows这样的。所以,直...
  • lzhui1987
  • lzhui1987
  • 2016年12月03日 21:24
  • 3957

[Win32SDK基本] 窗口详解(超详细)

Win32SDK创建窗口,虽然早已经烂大街了,但是那些资料太散,都不全面,无法满足我编程的需要,因此,有必要整理一下。 这篇文章包括一下几个部分: 1。窗口类详解 2。窗口样式详解 3。窗口显示更新详...
  • zuishikonghuan
  • zuishikonghuan
  • 2015年06月05日 16:20
  • 5608

使用Windows API进行GDI窗口绘图

http://blog.csdn.net/celte/article/details/10243309   使用Windows API进行GDI窗口绘图 标签: GD...
  • kakaxi2222
  • kakaxi2222
  • 2016年08月01日 20:12
  • 2444

SDK创建一个非模态,无资源窗口

使用SDK来创建一个非模态的窗口,不涉及资源,只用注册一个窗口类,创建窗口,显示窗口,然后建立一个消息循环就够了。首先我们使用SDK创建窗口或者是控件都需要用到类,其他的控件都有系统注册好的类,直接拿...
  • DSQSYSPA
  • DSQSYSPA
  • 2017年11月16日 21:38
  • 34

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

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

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

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

Ubuntu SDK 第一节 -- 创建一个简单的QML应用

安装完开发环境后。 运行ubuntu sdk,点击File->New File or Project->Ubuntu->Simple UI,工程名为:FirstQMLApp,如下图所示: 好吧,...
  • wanglemao
  • wanglemao
  • 2014年01月13日 00:15
  • 1416

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

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

不使用API,创建一个最简单的窗口

.386 .model flat, stdcall  ;32 bit memory model option casemap :none  ;case sensitive include wind...
  • zhanghaodage
  • zhanghaodage
  • 2013年11月15日 20:56
  • 215

Win32创建一个简单的窗口

Win32创建一个简单的窗口
  • qq_33154343
  • qq_33154343
  • 2017年11月12日 21:42
  • 30
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用SDK创建一个简单的窗口
举报原因:
原因补充:

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