m_nCmdShow在哪赋的初值

lcrain428 2010-05-15 02:59:29
m_nCmdShow是CWinApp的一个public成员变量,不知道他的初值在哪赋的。
大家帮忙找找啊
...全文
492 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcrain428 2010-05-18
  • 打赏
  • 举报
回复
5楼的辛苦了,其实你说一句话就ok了,就是m_nCmdShow是作为一个参数传入的就可以了,贴了那么多我就看了第一句
浩南_哥 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cometnet 的回复:]
写过SDK程序的应该都知道:是在WinMain入口函数里传入的,一般在快捷方式里指定窗口显示方式,或者WinExec、ShellExecute等函数创建进程时,也可以指定窗口显示方式,就会传递到WinMain的nCmdShow。当然,MFC把这些都封装了,但原理是不变的。

WinMain

  函数功能:
  该函数被系统调用,作为一个32位应用程序的入口点。
  函数原型:
  ……
[/Quote]
正解 MFC 只是封装了一下这个函数 参数什么的都是一样的
lcrain428 2010-05-16
  • 打赏
  • 举报
回复
2楼那位,赋初值是哪一句啊
邓学彬 2010-05-16
  • 打赏
  • 举报
回复
写过SDK程序的应该都知道:是在WinMain入口函数里传入的,一般在快捷方式里指定窗口显示方式,或者WinExec、ShellExecute等函数创建进程时,也可以指定窗口显示方式,就会传递到WinMain的nCmdShow。当然,MFC把这些都封装了,但原理是不变的。

WinMain

  函数功能:
  该函数被系统调用,作为一个32位应用程序的入口点。
  函数原型:
  int WINAPI WinMain(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpCmdLine,
  int nCmdShow
  );
  (在Visual Studio 2005下则为int APIENTRY WinMain...)
  参数;
  hInstance:应用程序当前实例的句柄。
  hPrevlnstance:应用程序的先前实例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32位程序,该参数总为NULL。
  如果需要检测另外一个实例是否已经存在,则使用CreateMutex函数创建一个独一无二的名字。即使互斥名已经存在,CreateMutex函数也是成功的,但是GetLastError函数将返回 ERROR_ALREADY_EXISTS,这就表明应用程序有另外一个实例存在,因为它首先创建了互斥名。
  lpCmdLine:指向应用程序命令行的字符串的指针,不包括执行文件名。获得整个命令行,参看GetCommandLine。
  第三个参数lpCmdLine是一个以空终止的字符串,指定传递给应用程序的命令行参数。例如:在D盘下有一个sunxin.txt文件,当我们用鼠标双击这个文件时将启动记事本程序(notepad.exe),此时系统会将D:\sunxin.txt作为命令行参数传递给记事本程序的WinMain函数,记事本程序在得到这个文件的全路径名后,就在窗口中显示该文件的内容。要在VC++开发环境中向应用程序传递参数,可以单击菜单【Project】→【Settings】,选择“Debug”选项卡,在“Program arguments”编辑框中输入你想传递给应用程序的参数。
  nCmdShow:指明窗口如何显示。该参数可以是下列值之一:
  SW_HIDE:隐藏窗口并且激活另外一个窗口。
  SW_MINIMIZE:最小化指定的窗口,并且激活在系统表中的顶层窗口。
  SW_RESTORE:激活并显示窗口。如果窗口已经最小化或最大化,系统将以恢复到原来的尺寸和位置显示窗口(与SW_SHOWNORMAL相同)。
  SW_SHOW:激活一个窗口并以原来的尺寸和位置显示窗口。
  SW_SHOWMAXIMIZED:激活窗口并且将其最大化。
  SW_SHOWMINIMIZED:激活窗口并将其目标化。
  SW_SHOWMINNOACTIVE:将一个窗口显示为图标。激活窗口维持活动状态。
  SW_SHOWNA:以窗口的当前状态显示窗口。激活窗口保持活动状态。
  SW_SHOWNOACTIVATE:以窗口的最近一次的尺寸和位置显示窗口。激活窗口维持激活状态。
  SW_SHOWNORMAL:激活并显示窗口。如果窗口最大化或最小化,系统将其恢复到原来的尺寸和位置(与SW_RESTORE相同)。
  返回值:如果函数成功,当它接收到一个WM_QUIT消息时就中止,函数应该返回在该消息的wParam参数的退出值。如果函数在进入消息循环时退出,应该返回零。
  备注:WinMain函数应初始化应用程序,显示主窗口,进入一个消息接收一发送循环,这个循环是应用程序执行的其余部分的顶级控制结构。当接收到一个WM_QUIT消息时,程序就中止。这时,WinMain函数应退出应用程序,并且返回传递给WM_QUIT消息的wParam参数的值。如果由于调用PostQuitMessage函数而接收到WM_QUIT消息,wParam的值是PostQuiMessage函数的nExitCode的值。请参看“创建一个窗口循环”。
  ANSI应用程序可以使用WinMain函数的lpCmdLine参数进入命令行字符串(除了程序名之外)。WinMain不能返回Unicode字符串的原因是IpCmdLine使用的是LPSTR数据类型,而不是LPTSTR类型。GetCommandLine函数可以用于进入命令行的Unicode字符串,因为它使用的是LPTSTR类型。
  Windows CE:Windows CE不支持下列 nCmdLine参数值:
  SW_MINIMIZE;SW_RESTORE;SW_RESTORE;SW_SHOWMAXMIZED
  SW_SHOWMINIMIZED;SW_SHOWMINNOACTIVE
  速查:Windows NT:3.1以上版本;Windows:95以上版本:Windows CE:1.0以上版本;头文件:Winbase.h库文件:用户自定义。
dahaiI0 2010-05-16
  • 打赏
  • 举报
回复
AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))里面有句pApp->m_nCmdShow = nCmdShow;不知道是不是你想要的,在SRC文件中多搜下就能查到你想要的
zwfgdlc 2010-05-15
  • 打赏
  • 举报
回复
看下VS安装目录下的MFC的部分源码
appinit.cpp
winmain.cpp
这两个文件有关于m_nCmdShow的信息。

int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
__in LPTSTR lpCmdLine, int nCmdShow)
{
ASSERT(hPrevInstance == NULL);

int nReturnCode = -1;
CWinThread* pThread = AfxGetThread();
CWinApp* pApp = AfxGetApp();

// AFX internal initialization
if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
goto InitFailure;

// App global initializations (rare)
if (pApp != NULL && !pApp->InitApplication())
goto InitFailure;

// Perform specific initializations
if (!pThread->InitInstance())
{
if (pThread->m_pMainWnd != NULL)
{
TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd\n");
pThread->m_pMainWnd->DestroyWindow();
}
nReturnCode = pThread->ExitInstance();
goto InitFailure;
}
nReturnCode = pThread->Run();

InitFailure:
#ifdef _DEBUG
// Check for missing AfxLockTempMap calls
if (AfxGetModuleThreadState()->m_nTempMapLock != 0)
{
TRACE(traceAppMsg, 0, "Warning: Temp map lock count non-zero (%ld).\n",
AfxGetModuleThreadState()->m_nTempMapLock);
}
AfxLockTempMaps();
AfxUnlockTempMaps(-1);
#endif

AfxWinTerm();
return nReturnCode;
}

lcrain428 2010-05-15
  • 打赏
  • 举报
回复
一个回答的都没有呢!!

16,472

社区成员

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

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

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