MFC開發常見問題的回答2 (轉)
第一輯在/develop/read_article.?id=6676">http://www.csdn.net/develop/read_article.asp?id=6676
1.如何讓我的執行的時候最大化?
(1)在appwizard第4步選擇“advanced"從中選擇Mainframe的Maximized
(2)對於MDI程式,在CWinApp::InitInstance() 中做下面改動
// Create main MDI Frame window.
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_nCmdShow = SW_SHOWMAXIMIZED; // 注意新增此行!!!
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
m_pMainWnd = pMainFrame;
(3)對於SDI程式,在CWinApp::InitInstance() 中的OnFileNew()之前
m_nCmdShow = SW_SHOWMAXIMIZED;
// 下面建立空文件
OnFileNew();
2,如何給其他執行緒發訊息?
用SendNotifyMessage() 。
3,如何讓我的程式只執行一次?
const char* MyMainWndClassName = "MyMainWndXQW"
BOOL CMyApp::InitApplication()
{
// Call base class. Default version does nothing.
CWinApp::InitApplication();
WNDCLASS wndcls;
// Start with NULL defaults.
memset(&wndcls, 0, sizeof(WNDCLASS));
// Get class information for default window class.
::GetClassInfo(AfxGetInstanceHandle(),"AfxFrameOrView",&wndcls);
// Substitute unique class name for new class.
wndcls.lpszClassName = MyMainWndClassName;
// Register new class and return the result code.
return ::RegisterClass(&wndcls);
}
BOOL CMyApp::FirstInstance()
{
CWnd *PrevCWnd, *ChildCWnd;
// Detene if another window with our class name exists.
PrevCWnd = CWnd::FindWindow(MyMainWndClassName, NULL);
if (PrevCWnd != NULL)
{
// If so, does it have any pop-ups?
ChildCWnd=PrevCWnd->GetLastActivePopup();
// Bring the main window to the top.
PrevCWnd->BringWindowToTop();
// If iconic, restore the main window.
if (PrevCWnd->IsIconic())
PrevCWnd->ShowWindow(SW_RESTORE);
// If there are pop-ups, bring them along too!
if (PrevCWnd != ChildCWnd)
ChildCWnd->BringWindowToTop();
// Return FALSE. This isn't the first instance
// and we are done activating the previous one.
return FALSE;
}
else
// First instance. Proceed as normal.
return TRUE;
}
CMyApp::InitInstance()
{
if (!FirstInstance())
return FALSE;
// ...
}
4,MDI程式,關閉子視窗同時關閉父視窗,該如何做?
在子視窗的OnClose函式里新增
ASSERT(AfxGetMainWnd() != NULL);
AfxGetMainWnd()->SendMessage(WM_CLOSE);
選單問題:
1,我在程式中用了MenuBar,結果找不到選單了,我的方法是:
CMenu *menu;
menu = GetMenu()->GetSubMenu(0);
答:
AfxGetApp()->m_pMainWnd->GetMenu()->GetSubMenu(0);
2,如何動態修改MainFrame的選單?
CMenu newMenu;
newMenu.LoadMenu (IDR_MENU1);
AfxGetMainWnd()->SetMenu( &newMenu );
AfxGetMainWnd()->DrawMenuBar();
newMenu.Detach ();
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-996104/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MFC開發常見問題的回答3 (轉)
- HTTP/2 常見問題回答HTTP
- 常見的前端開發CSS 面試題及回答策略前端CSS面試題
- 常見的前端開發:Javascript 面試題及回答策略前端JavaScript面試題
- DELPHI開發Web程式常見問題 (轉)Web
- Oracle面試常見的二十個問題及回答Oracle面試
- JAVA常見開發問題Java
- XML入門常見問題(2)(轉)XML
- Laravel 個人開發常見問題Laravel
- 近期BSN開發常見問題
- DDC/NFT開發常見問題
- 近期BSN開發常見問題答疑
- DDC開發常見問題答疑(二)
- Vue.js開發常見問題Vue.js
- Oracle常見提問2(轉)Oracle
- HTML常見小問題2HTML
- db2常見問題DB2
- vue.js 前端開發常見問題Vue.js前端
- 開發過程中mysql常見問題MySql
- 微信小程式中開發常見問題微信小程式
- react-native開發常見問題React
- 前端開發常見問題精選(五)前端
- 微信小程式開發常見問題(四)微信小程式
- 微信小程式開發常見問題(五)微信小程式
- 微信小程式開發常見問題(七)微信小程式
- iOS開發常見問題之綜合篇iOS
- VueJS 開發常見問題集錦VueJS
- 使用ActiveX控制元件開發網頁常見的問題 (轉)控制元件網頁
- [譯] HTTP/2 常見問題解答HTTP
- redis持久化開發運維常見問題Redis持久化運維
- Vue.JS 開發常見問題集錦Vue.js
- vue專案開發過程常見問題Vue
- iOS開發執行報錯、常見問題iOS
- 軟體開發中存在的25個常見問題
- iOS開發中兩個常見問題的處理iOS
- 敏捷擁護者眼中敏捷開發的常見問題敏捷
- vi 命令常見問題解答(轉)
- Java常見問題集錦(轉)Java