我用下面语句生成一个窗口,程序编译连接正常,可是执行程序后却没有出现所要产生的窗口,是那里有问题吗?请指教!!
对于window的create函数其参数中的子窗口id是怎么定义的呀?想我这样随便设成1000,是不是有可能重复呀?
int CHelloView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
HWND hWnd = GetSafeHwnd();
CWnd Window;
CRect rc(0, 0, 0, 0);
//CWnd* pParentWnd = (CWnd*)hWnd;
CWnd* pParentWnd = CWnd::FromHandle(hWnd);
Window.Create(0, 0, WS_BORDER,rc,pParentWnd,1000, 0);
Window.MoveWindow(50, 50,//左上角在view的(50,50)处
100, 100);//窗口的高度和宽度
}
对于window的create函数其参数中的子窗口id是怎么定义的呀?想我这样随便设成1000,是不是有可能重复呀?
int CHelloView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
HWND hWnd = GetSafeHwnd();
CWnd Window;
CRect rc(0, 0, 0, 0);
//CWnd* pParentWnd = (CWnd*)hWnd;
CWnd* pParentWnd = CWnd::FromHandle(hWnd);
Window.Create(0, 0, WS_BORDER,rc,pParentWnd,1000, 0);
Window.MoveWindow(50, 50,//左上角在view的(50,50)处
100, 100);//窗口的高度和宽度
}
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rc(50, 50, 100, 100);
Window.Create(0, 0, WS_CHILD | WS_BORDER,rc,this,1000, 0);
}
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rc(50, 50, 100, 100);
Window.Create(0, 0, WS_CHILD | WS_BORDER,rc,this,1000, 0); Window.ShowWindow(SW_SHOW)
}
Window.Create( lpWndCls, 0 , WS_CHILD|WS_BORDER,rc,pParentWnd,10000, 0);
Window.Create( lpWndCls, 0 , WS_CHILD|WS_BORDER|WS_CAPTION|WS_VISIBLE,rc,m_hWnd,10000, 0);
Window.SetWindowPos( &wndNoTopMost, 0,0, 50,50, SWP_SHOWWINDOWSWP_DRAWFRAME );
Window.SetForegroundWindow();
如果这样还是显示不出来,就将WS_CHILD改为WS_POPUP试试
Window.SetWindowPos( &wndNoTopMost, 0,0, 50,50, SWP_SHOWWINDOW|SWP_DRAWFRAME );
CWnd Window; //// 問題在這里呀
//當這個過程執行完后Window 就被析构了
// 你把它改為 Protected 的就行了 CRect rc(0, 0, 0, 0);
//CWnd* pParentWnd = (CWnd*)hWnd;
CWnd* pParentWnd = CWnd::FromHandle(hWnd);
Window.Create(0, 0, WS_BORDER,rc,pParentWnd,1000, 0);
Window.MoveWindow(50, 50,//左上角在view的(50,50)处
100, 100);//窗口的高度和宽度
CWnd Window;
你将Window申明成为了一个局部变量,当OnCreate函数结束后,Window也就消亡了,故此每能够显示出来,你将CWnd Window;这句放到CHelloView的.h文件中,把Window申明成为一个成员变量就行了。