吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5122|回复: 4
收起左侧

[其他转载] win程序设计笔记2

[复制链接]
zapline 发表于 2009-2-7 15:01
:( 为了不被鄙视而学习
:( 为了将来工作而学习

书中的例程
HELLOWIN.C
/*------------------------------------------------------------------------
           HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
                      (c) Charles Petzold, 1998
 -----------------------------------------------------------------------*/

#include <windows.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
        static TCHAR szAppName[] = TEXT ("HelloWin") ;
        HWND        hwnd ;
        MSG        msg ;
        WNDCLAS        wndclass ;

         wndclass.style                  = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc  = WndProc ;
        wndclass.cbClsExtra          = 0 ;
        wndclass.cbWndExtra          = 0 ;
        wndclass.hInstance          = hInstance ;
        wndclass.hIcon                  = LoadIcon (NULL, IDI_APPLICATION) ;
          wndclass.hCursor          = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground        = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
          wndclass.lpszMenuNam        = NULL ;
        wndclass.lpszClassName        = szAppName ;

        if (!RegisterClass (&wndclass))
     {
                MessageBox (        NULL, TEXT ("This program requires Windows NT!"), 
                                          szAppName, MB_ICONERROR) ;
                return 0 ;
     }
        hwnd = CreateWindow( szAppName,        // window class name
                        TEXT ("The Hello Program"),        // window caption
                        WS_OVERLAPPEDWINDOW,        // window style
                        CW_USEDEFAULT,        // initial x position
                        CW_USEDEFAULT,        // initial y position
                        CW_USEDEFAULT,        // initial x size
                        CW_USEDEFAULT,        // initial y size
                        NULL,                        // parent window handle
                    NULL,                // window menu handle
                    hInstance,            // program instance handle
                    NULL) ;             // creation parameters
     
        ShowWindow (hwnd, iCmdShow) ;
        UpdateWindow (hwnd) ;
     
        while (GetMessage (&msg, NULL, 0, 0))
     {
                TranslateMessage (&msg) ;
                  DispatchMessage (&msg) ;
     }
        return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        HDC                        hdc ;
        PAINTSTRUCT ps ;
        RECT                rect ;
     
        switch (message)
     {
        case WM_CREATE:
        PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
                return 0 ;

        case         WM_PAINT:
                hdc = BeginPaint (hwnd, &ps) ;
          
                GetClientRect (hwnd, &rect) ;
          
                DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
                          EndPaint (hwnd, &ps) ;
                        return 0 ;
          
        case        WM_DESTROY:
                PostQuitMessage (0) ;
                return 0 ;
     }
   return DefWindowProc (hwnd, message, wParam, lParam) ;
}
其中三处地方要注意
1,WNDCLAS        wndclass ;
少了个S
2,wndclass.lpszMenuNam        = NULL ;
少了个e
3,PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
不删除此句则应该添加 WINMM.LIB

字首  类别
CS 视窗类别样式
CW 建立视窗
DT 绘制文字
IDI 图示ID
IDC 游标ID
MB 讯息方块
SND 声音
WM 视窗讯息
WS 视窗样式

结构  含义
MSG 讯息结构
WNDCLASS 视窗类别结构
PAINTSTRUCT 绘图结构
RECT 矩形结构

识别字  含义
HINSTANCE 执行实体(程式自身)代号
HWND 视窗代号
HDC 装置内容代号

字首  资料型态
c char或WCHAR或TCHAR
by BYTE (无正负号字元)
n short
i int
x, y int分别用作x座标和y座标
cx, cy int分别用作x长度和y长度;C代表「计数器」
b或f BOOL (int);f代表「旗标」
w WORD (无正负号短整数)
l LONG (长整数)
dw DWORD (无正负号长整数)
fn function(函式)
s string(字串)
sz 以位元组值0结尾的字串
h 代号
p 指标


WNDCLASSA结构
ASCII版:
typedef struct tagWNDCLASSA
{
        UINT             style ;
        WNDPROC             lpfnWndProc ;
        int              cbClsExtra ;
        int                 cbWndExtra ;
        HINSTANCE          hInstance ;
        HICON               hIcon ;
        HCURSOR          hCursor ;
        HBRUSH              hbrBackground ;
        LPCSTR           lpszMenuName ;
        LPCSTR           lpszClassName ;
}
WNDCLASSA, * PWNDCLASSA, NEAR * NPWNDCLASSA, FAR * LPWNDCLASSA ;

Unicode版:
typedef struct tagWNDCLASSW
{
             UINT                      style ;
             WNDPROC             lpfnWndProc ;
             int                 cbClsExtra ;
             int                 cbWndExtra ;
             HINSTANCE           hInstance ;
             HICON               hIcon ;
             HCURSOR             hCursor ;
             HBRUSH              hbrBackground ;
             LPCWSTR             lpszMenuName ;
             LPCWSTR             lpszClassName ;
}
WNDCLASSW, * PWNDCLASSW, NEAR * NPWNDCLASSW, FAR * LPWNDCLASSW ;


创建一个窗口
hwnd = CreateWindow (szAppName,         // window class name
        TEXT (        "The Hello Program"),         // window caption
                WS_OVERLAPPEDWINDOW,            // window style
              CW_USEDEFAULT,                    // initial x position
               CW_USEDEFAULT,                    // initial y position
                CW_USEDEFAULT,                     // initial x size
                  CW_USEDEFAULT,                    // initial y size
                NULL,                            // parent window handle
                 NULL,                            // window menu handle
            hInstance,                         // program instance handle
            NULL) ;                          // creation parameters
显示窗口
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

消息循环
while        (GetMessage (&msg, NULL, 0, 0))
{
        TranslateMessage (&msg) ;
        DispatchMessage (&msg) ;
}
MSG结构:
typedef struct tagMSG
{
        HWND        hwnd ;
        UINT        message ;
        WPARAM         wParam ;
        LPARAM         lParam ;
        DWORD          time ;
        POINT          pt ;
}
MSG, * PMSG ;


POINT结构:
typedef struct tagPOINT
{
        LONG  x ;
        LONG  y ;
}
POINT, * PPOINT;

[ 本帖最后由 zapline 于 2009-2-7 15:06 编辑 ]

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Peace 发表于 2009-2-7 15:39
真勤快;以后工作不用愁啦;呵呵;鼓励!
iawen 发表于 2009-2-7 15:44
确实勤快,不过笔记不要记得太泛了!

笔记应该记一些疑难点与容易出错的地方,不要泛泛而谈的好,呵呵;P
boss1940 发表于 2009-2-9 04:48
wqejnyt 发表于 2009-2-9 08:32
看了之后。那是相当的晕。。。小Z太强了!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表