⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_49816.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:49816 发表者:鹏程 发表日期:2003-08-14 04:07:48
<br>主题:有个问题请教?
<br>内容:为什么下面的程序(一)生成的EXE文件有1.23M呀?好大呀!<BR>而同样功能的用API编的程序(二)生成的EXE文件只有150K。<BR><BR><BR>程序(一):<BR>//HelloMFC.h<BR>//////////////////////////////////////////////////////////////////////<BR>class CMyApp : public CWinApp<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;virtual BOOL InitInstance();<BR>};<BR><BR>class CMainWindow : public CFrameWnd<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;CMainWindow();<BR>protected:<BR>&nbsp;&nbsp;&nbsp;&nbsp;afx_msg void OnPaint();<BR>&nbsp;&nbsp;&nbsp;&nbsp;DECLARE_MESSAGE_MAP()<BR>};<BR><BR>//HelloMFC.cpp<BR>//////////////////////////////////////////////////////////////////////<BR>#include &lt;afxwin.h&gt;<BR>#include "HelloMFC.h"<BR><BR>CMyApp&nbsp;&nbsp;theApp;<BR><BR>//////////////////////////////////////////////////////////////////////<BR>//<BR>//应用程序类CMyApp的成员函数<BR>BOOL CMyApp::InitInstance()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pMainWnd = new CMainWindow;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pMainWnd-&gt;ShowWindow(m_nCmdShow);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pMainWnd-&gt;UpdateWindow();<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR>//////////////////////////////////////////////////////////////////////<BR>//<BR>//主窗口类的消息映射和成员函数<BR>BEGIN_MESSAGE_MAP(CMainWindow,CFrameWnd)<BR>&nbsp;&nbsp;ON_WM_PAINT()<BR>END_MESSAGE_MAP()<BR><BR>CMainWindow::CMainWindow()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Create(NULL,_T("The Hello World Application!"));<BR>}<BR><BR>void CMainWindow::OnPaint()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CPaintDC dc(this);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CRect&nbsp;&nbsp;&nbsp;&nbsp;rect;<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetClientRect(&amp;rect);<BR>&nbsp;&nbsp;&nbsp;&nbsp;dc.TextOut(rect.Width()/2-60,rect.Height()/2,"Hello World MFC");<BR>}<BR><BR><BR><BR>程序(二):<BR>//HelloAPI.cpp<BR>//////////////////////////////////////////////////////////////////////<BR>#include &lt;windows.h&gt;<BR><BR>//窗口函数声明<BR>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);<BR><BR>//以下代码初始化窗口类<BR>//////////////////////////////////////////////////////////////////////<BR>int WINAPI WinMain(HINSTANCE hInstance,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE hPrevInstance,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPSTR&nbsp;&nbsp;&nbsp;&nbsp; lpCmdLine,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nCmdShow)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口类名<BR>&nbsp;&nbsp;&nbsp;&nbsp;static TCHAR szAppName[] = TEXT("HelloWorld");<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口标题名<BR>&nbsp;&nbsp;&nbsp;&nbsp;static TCHAR lpszTitle[] = TEXT("MY First Windows Program");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hWnd;&nbsp;&nbsp;&nbsp;&nbsp; //定义窗口句柄<BR>&nbsp;&nbsp;&nbsp;&nbsp;MSG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定义消息变量<BR>&nbsp;&nbsp;&nbsp;&nbsp;WNDCLASS&nbsp;&nbsp;WndClass; //定义窗口类<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口类没有扩展<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.cbClsExtra = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口类实例没有扩展<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.cbWndExtra = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口背景为白色<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口采用箭头光标<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.hCursor = LoadCursor(NULL,IDC_ARROW);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口的最小化图标为默认图标<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//当前实例句柄<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.hInstance = hInstance;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口处理函数为WndProc<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.lpfnWndProc = WndProc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口类名<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.lpszClassName = szAppName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口没有菜单<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.lpszMenuName = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//窗口类风格<BR>&nbsp;&nbsp;&nbsp;&nbsp;WndClass.style = CS_HREDRAW|CS_VREDRAW;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//如果注册失败则发出警告声<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!RegisterClass(&amp;WndClass))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEXT("This Program requires Windows NT!"),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; szAppName,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MB_ICONERROR);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;hWnd = CreateWindow(szAppName,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TEXT("The Hello Program"),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WS_OVERLAPPEDWINDOW,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CW_USEDEFAULT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hInstance,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//显示窗口<BR>&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(hWnd,nCmdShow);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//绘制用户区<BR>&nbsp;&nbsp;&nbsp;&nbsp;UpdateWindow(hWnd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;//消息循环<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(GetMessage(&amp;msg,NULL,0,0))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TranslateMessage(&amp;msg);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DispatchMessage(&amp;msg);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;//消息循环结束(即程序终止)时将信息返回系统<BR>&nbsp;&nbsp;&nbsp;&nbsp;return msg.wParam;<BR>}<BR><BR>//窗口函数定义<BR>//////////////////////////////////////////////////////////////////////<BR>LRESULT CALLBACK WndProc(HWND&nbsp;&nbsp; hWnd,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UINT&nbsp;&nbsp; message,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WPARAM wParam,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPARAM lParam)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HDC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hDC;<BR>&nbsp;&nbsp;&nbsp;&nbsp;PAINTSTRUCT ps;<BR>&nbsp;&nbsp;&nbsp;&nbsp;RECT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rect;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//消息处理语句<BR>&nbsp;&nbsp;&nbsp;&nbsp;switch (message)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;case WM_CREATE:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PlaySound(TEXT("helloworld.wav"),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NULL,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SND_FILENAME|SND_ASYNC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0 ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//当客户区的一部分或全部变为无效以致必须刷新时,将由这个消息通知程序<BR>&nbsp;&nbsp;&nbsp;&nbsp;case WM_PAINT:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hDC = BeginPaint(hWnd,&amp;ps);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetClientRect(hWnd,&amp;rect);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DrawText(hDC,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TEXT("Hello World!"),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -1,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;rect,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DT_SINGLELINE|DT_CENTER|DT_VCENTER);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EndPaint(hWnd,&amp;ps);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//退出窗口<BR>&nbsp;&nbsp;&nbsp;&nbsp;case WM_DESTROY:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调用PostQuitMessage函数发出WM_QUIT消息<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostQuitMessage(0); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return DefWindowProc(hWnd,message,wParam,lParam);<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:管理员 回复日期:2003-08-14 04:11:47
<br>内容:你利用了MFC<BR>但是你编译Debug版本时候选择了静态连接MFC<BR>所以很大。<BR><BR>如果是Release版本的静态连接MFC只有200K<BR>如果是动态连接MFC DLL就应该只有30K<BR><BR>VC6中,你在菜单project -》Setting中设置连接方式。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-08-14 08:50:11
<br>内容:很少看到老大出手了!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-08-14 08:52:01
<br>内容:提醒楼主:尽量别发重复的帖子!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:鹏程 回复日期:2003-08-14 12:03:49
<br>内容:谢谢老大!还有一点不明白,如果编译Debug版本时候选择了动态连接MFC,那么是不是生成的EXE文件有可能在其他的机器上不能运行呀?<BR><BR>我对重复发贴表示抱歉,当时连接提示出错,所以重复了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -