回 帖 发 新 帖 刷新版面

主题:如何用WIN32API创建标签

如何用WIN32API创建一个标签,
高手指点.

回复列表 (共4个回复)

沙发

CreateWindow(
                "Static",     // predefined class
                "caption",    // window title
                SS_CENTER,
                0, 0, 50, 12, // size
                hwnd,         // parent window
                (HMENU) ID_CHILD, // control ID
                (HINSTANCE)  GetWindowLong(hwnd, GWL_HINSTANCE),
                NULL);       // pointer not needed

板凳

没用呀!
详细点好吗?

3 楼

#include <windows.h>


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

TCHAR    szAppName[]=TEXT("Label");

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)
{    
    HWND        hwnd;
    MSG            msg;
    WNDCLASS    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.lpszMenuName    =NULL;
    wndclass.lpszClassName    =szAppName;

    if (!RegisterClass(&wndclass))
    {
        MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);
        return 0;
    }
     
    hwnd=CreateWindow(szAppName,                 
                    szAppName,
                    WS_OVERLAPPEDWINDOW,       
                    CW_USEDEFAULT,CW_USEDEFAULT,             
                    CW_USEDEFAULT,CW_USEDEFAULT,            
                    NULL,                      
                    NULL,                     
                    hInstance,                 
                    NULL);                   
     
    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)
{     
    switch (message)
    {
    case WM_CREATE:
        CreateWindow("Static",               
                    "caption",
                    SS_CENTER | WS_CHILD | WS_VISIBLE,       
                    10,10,50,20,            
                    hwnd,                      
                    NULL,                     
                    (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),                 
                    NULL);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd,message,wParam,lParam);
}
}

4 楼

当为标签设置ID时:

#define ID_LABEL 101   //label ID

CreateWindow("Static",               
                    "caption",
                    SS_CENTER | WS_CHILD | WS_VISIBLE,       
                    10,10,50,20,            
                    hwnd,                      
                    (HMENU)ID_LABEL,                     
                    (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),                 
                    NULL);

我来回复

您尚未登录,请登录后再回复。点此登录或注册