关于WinMain的问题

babybear315 2003-04-30 07:56:07
最近在学windows编程,从api开始,
老书上写的是int PASCAL WinMain()
新书上是 int WinAPI WinMain()
请问这两个有什么区别,还有我在编译程序的时候声明函数
long FAR PASCAL_export WinPor()时就编译不过
而改为 long CALLBACK 就可以,为什么呢?
...全文
27 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2003-04-30
  • 打赏
  • 举报
回复
用WINAPI格式,简单书写如下

#include "stdafx.h"
#include <windows.h>
HWND hwnd;

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
void CALLBACK MyTimerProc( UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2 );
void
CALLBACK MyTimerProc( UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2 )
{
//::MessageBox( hwnd, "NULL", "NULL", MB_OK );
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow )
{
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="Class";
char lpszTitle[]="窗口示例";

wndclass.style=0;
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=lpszClassName;


if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
hwnd=CreateWindow(lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
::SetTimer( hwnd, 8888, 1000, ( TIMERPROC )MyTimerProc );
ShowWindow( hwnd,nCmdShow);
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_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
guanxg 2003-04-30
  • 打赏
  • 举报
回复
int PASCAL WinMain()中PASCAL调用是老的调用方式,在WIN32中已经废弃了,改为WinAPI了。
你的WinPor()是不是回调函数啊,如果是就不能long FAR PASCAL_export WinPor(),一定要改为long CALLBACK WinPor()或者long CALLBACK _export WinPor()

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧