第一个window 程序,用vc2005写的,错误全是类型转换.自己不知道要怎么改.

unhappyless_01 2006-08-05 12:08:29
#include<windows.h>
#include<stdio.h>

LRESULT CallWindowProc( WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );

int WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground =(HBRUSH)COLOR_ACTIVEBORDER;
wndclass.hCursor =LoadCursor(NULL,IDC_CROSS);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc =CallWindowProc;
wndclass.lpszClassName ="Myapplication";
wndclass.lpszMenuName =NULL;
wndclass.style =CS_HREDRAW |CS_VREDRAW;

RegisterClass(&wndclass);

HWND hwnd;
hwnd=CreatWindow("Myapplication","第一个window程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;//这里只是随便写上 return 0.
// MSDN 上写正常结束返回带wParam parameter的值,不知道要怎么写?
}

LRESULT CallWindowProc( WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
switch(Msg)
{
case WM_PAINT :
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
break;

case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);
MessageBox(hWnd,szChar,"Myapplication",0);
break;

case WM_LBUTTONDOWN:
MessageBox(hWnd,"mouse click","Myapplication",MB_OK);
HDC hDC;
hDC=GetDC(hWnd);
TextOut(hDC,0,50,"VC2005.net",strlen("VC2005.net"));
ReleaseDC(hWnd,hDC);
break;

case WM_CLOSE:
if(IDYES==MessageBox(hWnd,"你是否要退出程序?","Myapplication",MB_YESNO))
{
DestroyWindow(hWnd);
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hWnd,Msg,wParam,lParam);
}

return 0;

}


/* winmain return
If the function succeeds, terminating when it receives a WM_QUIT message, it should return the exit value contained in that message's wParam parameter. If the function terminates before entering the message loop, it should return zero.
*/
...全文
978 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
unhappyless 2006-08-06
  • 打赏
  • 举报
回复
我就是在vc2005建个W32 Application ,现在问题已在大家帮助下解决了.

再次谢谢大家
wudagang0123 2006-08-06
  • 打赏
  • 举报
回复
我不知道你是健的什么工程,如果你没建W32工程,只是自己在写.h,和.cpp文件的话,要在
工程-》设置 对话矿中的link中改个东西把,我忘记了,建议你建个W32 Application工程(在vc6中是,不知道2005还是不)在运行下吧
要是在不可以的话,我也不知道怎么回事了
嘿嘿
lyskyly 2006-08-05
  • 打赏
  • 举报
回复
如果是2005试试把 项目-属性-c/c++-将wchar_t视为内置类型该为否,不推荐这么做,程序中还有些其他错误
或者
#include<windows.h>
#include<stdio.h>
#include <tchar.h>

#ifndef _UNICODE
#define TSPRINTF sprintf
#define TSPRINTF strlen
#else
#define TSPRINTF swprintf
#define TSTRLEN wcslen
#endif

LRESULT CALLBACK WindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground =(HBRUSH)COLOR_ACTIVEBORDER;
wndclass.hCursor =LoadCursor(NULL,IDC_CROSS);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc = WindowProc;
wndclass.lpszClassName =_T("Myapplication");
wndclass.lpszMenuName =NULL;
wndclass.style =CS_HREDRAW |CS_VREDRAW;

RegisterClass(&wndclass);

HWND hwnd;
hwnd = CreateWindow(_T("Myapplication"),_T("第一个window程序"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;//这里只是随便写上 return 0.
// MSDN 上写正常结束返回带wParam parameter的值,不知道要怎么写?
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
switch(Msg)
{
case WM_PAINT :
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
break;

case WM_CHAR:
TCHAR szChar[20];
TSPRINTF(szChar,_T("char is %d"),wParam);
MessageBox(hWnd,szChar,_T("Myapplication"),0);
break;

case WM_LBUTTONDOWN:
MessageBox(hWnd,_T("mouse click"),_T("Myapplication"),MB_OK);
HDC hDC;
hDC=GetDC(hWnd);
TextOut(hDC,0,50,_T("VC2005.net"),TSTRLEN(_T("VC2005.net")));
ReleaseDC(hWnd,hDC);
break;

case WM_CLOSE:
if(IDYES==MessageBox(hWnd,_T("你是否要退出程序?"),_T("Myapplication"),MB_YESNO))
{
DestroyWindow(hWnd);
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hWnd,Msg,wParam,lParam);
}

return 0;

}
Torrice 2006-08-05
  • 打赏
  • 举报
回复
遇不到错误就不会成长,解决了错误就会有提高,楼主不要急.

给你个类型转化的文章:

VC常用数据类型使用转换详解
刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。

我们先定义一些常见类型变量借以说明

int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="女侠程佩君";
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;

一、其它数据类型转换为字符串


短整型(int)
itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制
itoa(i,temp,2); ///按二进制方式转换
长整型(long)
ltoa(l,temp,10);


二、从其它包含字符串的变量中获取指向该字符串的指针


CString变量
str = "2008北京奥运";
buf = (LPSTR)(LPCTSTR)str;
BSTR类型的_variant_t变量
v1 = (_bstr_t)"程序员";
buf = _com_util::ConvertBSTRToString((_bstr_t)v1);

三、字符串转换为其它数据类型
strcpy(temp,"123");

短整型(int)
i = atoi(temp);
长整型(long)
l = atol(temp);
浮点(double)
d = atof(temp);

四、其它数据类型转换到CString
使用CString的成员函数Format来转换,例如:


整数(int)
str.Format("%d",i);
浮点数(float)
str.Format("%f",i);
字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值
str = username;

五、BSTR、_bstr_t与CComBSTR


CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。
char *转换到BSTR可以这样: BSTR b=_com_util::ConvertStringToBSTR("数据");///使用前需要加上头文件comutil.h
反之可以使用char *p=_com_util::ConvertBSTRToString(b);


六、VARIANT 、_variant_t 与 COleVariant


VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。
对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:
VARIANT va;
int a=2001;
va.vt=VT_I4;///指明整型数据
va.lVal=a; ///赋值

对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:

unsigned char bVal; VT_UI1
short iVal; VT_I2
long lVal; VT_I4
float fltVal; VT_R4
double dblVal; VT_R8
VARIANT_BOOL boolVal; VT_BOOL
SCODE scode; VT_ERROR
CY cyVal; VT_CY
DATE date; VT_DATE
BSTR bstrVal; VT_BSTR
IUnknown FAR* punkVal; VT_UNKNOWN
IDispatch FAR* pdispVal; VT_DISPATCH
SAFEARRAY FAR* parray; VT_ARRAY|*
unsigned char FAR* pbVal; VT_BYREF|VT_UI1
short FAR* piVal; VT_BYREF|VT_I2
long FAR* plVal; VT_BYREF|VT_I4
float FAR* pfltVal; VT_BYREF|VT_R4
double FAR* pdblVal; VT_BYREF|VT_R8
VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL
SCODE FAR* pscode; VT_BYREF|VT_ERROR
CY FAR* pcyVal; VT_BYREF|VT_CY
DATE FAR* pdate; VT_BYREF|VT_DATE
BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR
IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN
IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH
SAFEARRAY FAR* FAR* pparray; VT_ARRAY|*
VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT
void FAR* byref; VT_BYREF


_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。
例如:
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;


COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:
COleVariant v3 = "字符串", v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;


七、其它

对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:
LPARAM lParam;
WORD loValue = LOWORD(lParam);///取低16位
WORD hiValue = HIWORD(lParam);///取高16位
对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///取低8位
BYTE hiValue = HIBYTE(wValue);///取高8位
chenhu_doc 2006-08-05
  • 打赏
  • 举报
回复
如果急的话,可以发到vc版块试试!
chenhu_doc 2006-08-05
  • 打赏
  • 举报
回复
没有接触。。
langzi8818 2006-08-05
  • 打赏
  • 举报
回复
关注。。。
believefym 2006-08-05
  • 打赏
  • 举报
回复
楼主没用向导生成工程?
jixingzhong 2006-08-05
  • 打赏
  • 举报
回复
TCHAR 、 TEXT 宏,
在你的 unicode 开关打开的情况下,
都是 wchat_t ....

楼主你把环境中的这个开关关闭就是了 ...

如果不知道如何操作,
看看工程选项,
或者Google 一下如何操作 ...
unhappyless_01 2006-08-05
  • 打赏
  • 举报
回复
为什么大家给的代码我这都会报错.
新手,对那些错误好无奈.
睡在床板下_ 2006-08-05
  • 打赏
  • 举报
回复
给你一个简单的程序 参考下吧 :
#include <windows.h>
#include <stdio.h>
#define ID_TIMER 1

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

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR 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 = szAppName ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName, TEXT ("Menu Demonstration"),
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;
char str[40];
TEXTMETRIC tm;
PAINTSTRUCT ps;
static int i=0;
static int cxlong,cylong,cxchar,cychar;
switch(message)
{
case WM_CREATE:
hdc=GetDC(hwnd);
cxlong=cylong=10;
GetTextMetrics(hdc,&tm);
cxchar=tm.tmAveCharWidth;
cychar=tm.tmHeight;
ReleaseDC(hwnd,hdc);
return 0;
case WM_CHAR:
hdc=GetWindowDC(hwnd);
cxlong++;
if(cxlong==20)
{
cylong++;
cxlong=10;
}
if(i==40)
{
MessageBox(hwnd,"is not enough",szAppName,MB_OK);
i=0;
}

str[i]=(TCHAR)wParam;
TextOut(hdc,cxlong*cxchar,cylong*cychar,(str+i),1);
++i;
ReleaseDC(hwnd,hdc);
return 0;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse click",szAppName,MB_OK);
hdc=GetWindowDC(hwnd);
// TextOut(hdc,20,100,
return 0;
case WM_CLOSE:
if(IDOK==MessageBox(NULL,"you really will go?","hi hi",MB_OKCANCEL))
{
DestroyWindow(hwnd);
}
return 0;
case WM_PAINT:
ps.fErase=0;
hdc=BeginPaint(hwnd,&ps);
//TextOut(hdc,20,20,"知识就使力量",strlen("知识就使力量"));
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}


YeTimmy 2006-08-05
  • 打赏
  • 举报
回复
不是应该把问题发到VC板块更好吗?
呵呵~
YeTimmy 2006-08-05
  • 打赏
  • 举报
回复
#include<windows.h>
#include<stdio.h>

//LRESULT MyWindowsProc( WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
LRESULT CALLBACK MyWindowProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground =(HBRUSH)COLOR_ACTIVEBORDER;
wndclass.hCursor =LoadCursor(NULL,IDC_CROSS);
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc =MyWindowProc;
wndclass.lpszClassName = TEXT("Myapplication");
wndclass.lpszMenuName =NULL;
wndclass.style =CS_HREDRAW |CS_VREDRAW;
/* wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
// wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hbrBackground = (HBRUSH)COLOR_ACTIVEBORDER;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = MyWindowProc;
wndclass.lpszClassName = TEXT("MyApplication");
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;*/

if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("Register Class Fail"), TEXT("ERROR"), MB_OK);
return -1;
}

HWND hwnd;
// hwnd=CreatWindow("Myapplication","第一个window程序",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
// CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
hwnd = ::CreateWindow(TEXT("Myapplication"),TEXT("第一个window程序"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
if (!hwnd)
{
MessageBox(NULL, TEXT("Create Window Fail"), TEXT("ERROR"), MB_OK);
return -1;
}
// ShowWindow(hwnd,SW_SHOWNORMAL);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;//这里只是随便写上 return 0.
// MSDN 上写正常结束返回带wParam parameter的值,不知道要怎么写?
}

//LRESULT MyWindowsProc( WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_PAINT :
HDC hdc;
PAINTSTRUCT ps;
hdc=BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
break;

case WM_CHAR:
TCHAR szChar[20];
// sprintf(szChar,"char is %d",wParam);
wsprintf(szChar, TEXT("char is %d"), wParam);
MessageBox(hWnd,szChar,TEXT("Myapplication"),0);
break;

case WM_LBUTTONDOWN:
MessageBox(hWnd,TEXT("mouse click"),TEXT("Myapplication"),MB_OK);
HDC hDC;
hDC=GetDC(hWnd);
TextOut(hDC,0,50,TEXT("VC2005.net"),strlen("VC2005.net"));
ReleaseDC(hWnd,hDC);
break;

case WM_CLOSE:
if(IDYES==MessageBox(hWnd,TEXT("你是否要退出程序?"),TEXT("Myapplication"),MB_YESNO))
{
DestroyWindow(hWnd);
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hWnd,Msg,wParam,lParam);
}

return 0;

}
lyskyly 2006-08-05
  • 打赏
  • 举报
回复
安这样该
项目-属性-链接器-系统-子系统-
把控制台该为windows
unhappyless_01 2006-08-05
  • 打赏
  • 举报
回复
winmain.cpp
正在链接...
MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
C:\Documents and Settings\tcl\My Documents\Visual Studio 2005\Projects\windows窗体程序\Debug\windows窗体程序.exe : fatal error LNK1120: 1 个无法解析的外部命令
生成日志保存在“file://c:\Documents and Settings\tcl\My Documents\Visual Studio 2005\Projects\windows窗体程序\windows窗体程序\Debug\BuildLog.htm”
windows窗体程序 - 2 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

错误少了很多,就剩一个无法解析的外部符号
a_b_c_abc1 2006-08-05
  • 打赏
  • 举报
回复
以下程序是根据楼主的程序修改,VC2005成功运行

#include<windows.h>
#include<stdio.h>
//CallWindowProc与已有的函数重名,改名,第一个参数不要
LRESULT WindowProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );

TCHAR szAppName[] = TEXT ("sample") ;
//要加函数调用方式WINAPI
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//WNDCLASS wndclass;
WNDCLASSEX wndclass;
wndclass.cbSize=sizeof(WNDCLASSEX);//
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground =(HBRUSH)COLOR_ACTIVEBORDER;
wndclass.hCursor =LoadCursor(NULL,IDC_CROSS);
wndclass.hIcon=NULL;//
wndclass.hIconSm=NULL;//
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc =(WNDPROC)WindowProc;
wndclass.lpszClassName =szAppName;//
wndclass.lpszMenuName =NULL;
wndclass.style =CS_HREDRAW |CS_VREDRAW;


//RegisterClass(&wndclass);
if (!RegisterClassEx (&wndclass))
{
MessageBox (NULL, TEXT ("!!!\nThis program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}

HWND hwnd;
hwnd=CreateWindow(
szAppName,
TEXT("第一个window程序"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);


ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;//这里只是随便写上 return 0.
// MSDN 上写正常结束返回带wParam parameter的值,不知道要怎么写?
}

LRESULT WindowProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam )
{
HDC hdc;
PAINTSTRUCT ps;
switch(Msg)
{
case WM_PAINT :
hdc=BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
break;

case WM_CHAR:
TCHAR szChar[20];
wsprintf(szChar,TEXT("char is %d"),wParam);
MessageBox(hWnd,szChar,TEXT("Myapplication"),0);
break;

case WM_LBUTTONDOWN:
MessageBox(hWnd,TEXT("mouse click"),TEXT("Myapplication"),MB_OK);
HDC hDC;
hDC=GetDC(hWnd);
TextOut(hDC,0,50,TEXT("VC2005.net"),(int)strlen("VC2005.net"));
ReleaseDC(hWnd,hDC);
break;

case WM_CLOSE:
if(IDYES==MessageBox(hWnd,TEXT("你是否要退出程序?"),TEXT("Myapplication"),MB_YESNO))
{
DestroyWindow(hWnd);
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hWnd,Msg,wParam,lParam);
}

return 0;

}


/* winmain return
If the function succeeds, terminating when it receives a WM_QUIT message, it should return the exit value contained in that message's wParam parameter. If the function terminates before entering the message loop, it should return zero.
*/
unhappyless_01 2006-08-05
  • 打赏
  • 举报
回复
谢谢大家,但我把Unicode设为否,结果还报错,而且还不知道这么设置是为什么.

郁闷,手头上没有vc2005教材,有一本vc2003 但2003 和2005 差别也太大了,连语法都改了.也就没看了

从网上看点 vc6.0的视频,在看看MSDN 后.整出的1楼代码.拜托高人能否就1楼代码改正过来?
pomelowu 2006-08-05
  • 打赏
  • 举报
回复
主要是VS2005默认是打开Unicode的,使用的是TCHAR,等价于wchar_t,而不是想以前的版本默认不使用UNICODE,使用的TCHAR等价于char

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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