| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4517 人关注过本帖
标题:关于windows api 窗口的建立
只看楼主 加入收藏
as1069
Rank: 2
来 自:河北
等 级:论坛游民
威 望:1
帖 子:46
专家分:31
注 册:2014-6-10
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:5 
关于windows api 窗口的建立
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[]="windows";                                     //建造一个通用的类
    HWND        hwnd;
    MSG            msg;
    WNDCLASS    wndclass;
    wndclass.style=CS_HREDRAW|CS_VREDRAW;
    wndclass.lpfnWndProc=WndProc;//小写的lp    过程
    wndclass.cbClsExtra=0;//小写的ls
    wndclass.cbWndExtra=0;
    wndclass.hInstance=hIstance;//大写的I hInstance
    wndclass.hIcon=LoadIcon (NULL,IDI_APPLICATION);//加载图标资源  大写的I
    wndclass.hCursor=LoadCursor (NULL,IDC_ARROW);
    wndclass.hbrBackground=(HBTUSH) GetStockObject (WHITE_BRUSH);
    wndclass.lpszMenuNam=NULL;
    wndclass.lpszClassName=szAppName;
    if(!RegisterClass(&wndclass))                                      //判断一个类是否合法
    {
        MessageBox (NULL,TEXT("This program requires windows xp!"),
            szAppName,MB_ICONERROR);
        return 0;
    }
    hwnd=CreateWindow(szAppName,                                       //创建一个类明确它
        TEXT("The Hello Program"),
        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)           //系统调用
{
    HDC            hdc;
    PAINSTRUCT    ps;
    RECT        rect;
    switch(message)
    {
        case WM_PAINT;
            hdc=BeginPaint(hwnd,&ps);
            GetClientRect(hwnd,&rect);
            DrawText(hdc,TEXT("Hello,Windows xp!"),-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);
}

error C2065: 'hIstance' : undeclared identifier  未定义的标记符?

大家帮下我表示  已经弄了一上午了
搜索更多相关主题的帖子: windows include 通用 
2016-08-08 12:13
as1069
Rank: 2
来 自:河北
等 级:论坛游民
威 望:1
帖 子:46
专家分:31
注 册:2014-6-10
收藏
得分:0 
难道我要一个宏一个宏的学吗
是这样吗

我已入坑
2016-08-08 12:24
as1069
Rank: 2
来 自:河北
等 级:论坛游民
威 望:1
帖 子:46
专家分:31
注 册:2014-6-10
收藏
得分:0 
再问一下C语言也能实现窗口的建立吗?

我已入坑
2016-08-08 12:26
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:4 
这样的窗口?
程序代码:
#include<conio.h>
#include<alloc.h>
#include<stdio.h>
#include<stdlib.h>

#define WIDTH 25 /*窗口宽度*/
#define HEIGHT 15 /*窗口宽度*/
#define START_X 10
#define START_Y 5  /* 窗口左上角坐标(START_X,START_Y) */
int main()
{
    int i;
    /*绘制窗口*/
    window(START_X,START_Y,START_X+WIDTH,START_Y+HEIGHT);
    textattr(128+BLACK+(WHITE<<4)); 
    clrscr();
    /*绘制横边框*/
    for(i = 2;i<=24;i++)
    {
        gotoxy(i,1);
        putch('=');
        gotoxy(i,15);
        putch('=');
    }
    /*绘制竖边框*/
    for(i = 2;i<=14;i++)
    {
        gotoxy(2,i);
        putch('|');
        gotoxy(24,i);
        putch('|');
    }
    gotoxy(START_X,START_Y);
    cputs("\n\nHello World");
    getch();
    return 0;
}

效果如下图:
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-08-08 12:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:4 
代码不评价,但很显然你没抄对。如果你不想用心地抄袭,不如直接拷贝粘贴好了。

程序代码:
#include <windows.h>
#include <tchar.h>

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

int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
{
    static TCHAR szAppName[] = TEXT("windows");
    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 xp!"), szAppName, MB_ICONERROR );
        return 0;
    }

    hwnd = CreateWindow( szAppName
        , TEXT("The Hello Program")
        , WS_OVERLAPPEDWINDOW
        , CW_USEDEFAULT
        , 0
        , CW_USEDEFAULT
        , 0
        , NULL
        , NULL
        , hInstance
        , NULL );
    if( !hwnd )
        return 0;

    ShowWindow( hwnd, nCmdShow );
    UpdateWindow( hwnd );
    while( GetMessage(&msg,NULL,0,0) )
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}

LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
    switch(message)
    {
    case WM_PAINT:
        {
            RECT rect;
            GetClientRect( hWnd, &rect );

            PAINTSTRUCT ps;
            HDC hdc = BeginPaint( hWnd, &ps );
            DrawText( hdc, TEXT("Hello,Windows xp!"), -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER );
            EndPaint( hWnd, &ps );
        }
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

2016-08-08 13:50
FQYB
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:43
专家分:130
注 册:2016-7-29
收藏
得分:4 
C语言肯定能做窗口程序,只不得调用API一步一步有点麻烦 注册窗口类,创建窗口,消息驱动,其他窗口组件
很多界面库把windowsAPI封装好,用起来方便不少

经典的MFC
潮一点GTK/QT/wxWidgets

做界面用C++面对对象语言比较好
2016-08-08 14:54
快速回复:关于windows api 窗口的建立
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017563 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved