非模态对话框,PreTranslateMessage不响应!!! [问题点数:40分,结帖人sc_valentine21]

Bbs2
本版专家分:107
结帖率 100%
Bbs4
本版专家分:1290
Bbs2
本版专家分:107
Bbs4
本版专家分:1290
Bbs12
本版专家分:361543
版主
Blank
名人 2013年 荣获名人称号
Blank
探花 2011年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第三
Blank
进士 2012年 总版技术专家分年内排行榜第五
Blank
金牌 2012年1月 总版技术专家分月排行榜第一
Bbs2
本版专家分:107
Bbs2
本版专家分:107
Bbs4
本版专家分:1290
Bbs2
本版专家分:107
Bbs2
本版专家分:107
Bbs2
本版专家分:134
实现PreTranslateMessage,导致鼠标OnLButtonUp不响应
tag:我实现了PreTranslateMessage(),在函数里面加入如下代码:rn[code=C/C++]BOOL CPathCtrl::PreTranslateMessage(MSG* pMsg) rn rn // 设置控件拖动rn if (pMsg->message==WM_LBUTTONDOWN)rn rn FromHandle(pMsg->hwnd)->PostMessage(WM_SYSCOMMAND,SC_MOVE+1,0);rn rn return CWnd::PreTranslateMessage(pMsg);rn [/code]rn 加入如下代码导致鼠标OnLButtonUp<em>不响应</em>,我在OnLButtonUp加入MessageBox,没有弹出消息框,做测试中怎么解决?这段代码是什么意思?我也不太理解!希望解释下,谢谢。rnrnsearch result:在网上Google下,没有找到相关的解决方案。在QQ群里也问了,没有很好的解决,希望大家给我提供个解决方案,在一次谢谢大家了
为什么ActiveX中的对话框不响应PreTranslateMessage
我在ActiveX控件的OnCreate中创建对话框rnrn m_dlgMain.Create(IDD_DIALOG_MAIN,this);rn m_dlgMain.ShowWindow(SW_HIDE);rnrn然后在使用的时候显示出来rnrn发现这个对话框中的PreTranslateMessage虚函数根本不进。rn导致我的好多功能无法实现。有高手知道原因不?
MFC 模式对话框 不响应PreTranslateMessage消息函数
很奇怪,我做了一个简单的对话框例子,包含了编辑框控件,而且焦点在编辑框,这样也是可以响应PreTranslateMessage函数的。rn但是工程里面却响应不了。。
为什么我创建的非模态对话框不响应键盘事件?
无论是 按 Tab、回车、还是其他什么键,对话框都没反应,只有按空格还可以激活默认按钮。
pretranslatemessage
我想屏蔽掉鼠标双击事件,但是没成功。rn首先我在这个函数加如下rn[code=C/C++]rnBOOL CPOSBView::PreCreateWindow(CREATESTRUCT& cs)rnrn // TODO: Modify the Window class or styles here by modifyingrn // the CREATESTRUCT csrn cs.style &= ~CS_DBLCLKS; //屏蔽双击rn return CSuper::PreCreateWindow(cs);rnrnrn[/code]rnrnrn然后这样:rn[code=C/C++]rnBOOL CPOSBView::PreTranslateMessage(MSG *pMsg)rnrn if(pMsg->message == WM_LBUTTONDBLCLK)rn return FALSE;rn return CGoView::PreTranslateMessage(pMsg);rnrnrnrn[/code]rnrnrn 可是最后[code=C/C++]rnrnCGoView::OnLButtonDblClk(nFlags,point);rn[/code]rnrn还是响应了,我不知道是什么原因。有谁知道吗
PreTranslateMessage
MFC实现PreTranslateMessage消息重载
vs2005非模态对话框中的PreTranslateMessage函数不工作问题??
以前是2002建的工程,是dll,有对话框,非模态的,升级到2005后,PreTranslateMessage函数就不运行了,大家见过这个现象的来说一下把
重载后PreTranslateMessage不响应任何消息,请高手指点下谢谢,
重载后PreTranslateMessage<em>不响应</em>任何消息,请高手指点下谢谢,窗口为模态
有关DLL里创建无模式对话框不响应PreTranslateMessage的问题?
我在DLL里创建一无模式对话框,但居然<em>不响应</em>PreTranslateMessage,那我的快捷键,TOOLTIP咋整啊?请赐教。
在View中的PreTranslateMessage(MSG* pMsg)不响应,原因为何?
在CScrollView中定义了PreTranslateMessage(MSG* pMsg)用于处理功能键。rnrn但运行过程<em>不响应</em>(但曾经执行过,后来改动程序,导致不执行),原因为何?
非模态对话框出错,非模态对话框
我先说一下我创建<em>非模态对话框</em>的思路,rn资源视图中创建一个对话框并创建类Coption,在菜单中加入一个按键coption,rn在CChildView类中创建一个Coption类对象指针,在CChildView类中用Coption类对象指针创建<em>非模态对话框</em>,并判断Coption类对象指针是否为null,如果不为null,则不创建,将焦点给<em>非模态对话框</em>就行,创建的时候,将CChildView类作为Coption类构造参数传入Coption类中,当<em>非模态对话框</em>点击取消时,销毁<em>非模态对话框</em>,并发送消息给CChildView类,让他将Coption类对象指针赋值为null,否则<em>非模态对话框</em>只能出来一次,但是现在发送消息会报错,rn下面贴出四个文件代码:rnrn```rnCoption.h:rn#pragma oncernrnrn// Coption 对话框rnrnclass Coption : public CDialogExrnrn DECLARE_DYNAMIC(Coption)rnrnpublic:rn Coption(CWnd* pParent = nullptr); // 标准构造函数rn Coption(CView* pview); // 标准构造函数rn virtual ~Coption();rnrn// 对话框数据rn#ifdef AFX_DESIGN_TIMErn enum IDD = IDD_DIALOG1 ;rn#endifrnrnprotected:rn virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持rnrn DECLARE_MESSAGE_MAP()rnpublic:rn afx_msg void OnBnClickedCancel();rn virtual void PostNcDestroy();rnprivate:rn CView* p_view;rnpublic:rn afx_msg void OnBnClickedOk();rn;rnrn```rnCoption.cpp:rn// Coption.cpp: 实现文件rn//rnrn#include "stdafx.h"rn#include "MFCApplication5.h"rn#include "Coption.h"rn#include "afxdialogex.h"rnrnrn// Coption 对话框rnrnIMPLEMENT_DYNAMIC(Coption, CDialogEx)rnrnCoption::Coption(CWnd* pParent /*=nullptr*/)rn : CDialogEx(IDD_DIALOG1, pParent)rnrnrnrnrnCoption::Coption(CView* pview /*=nullptr*/)rnrn p_view = pview;rnrnrnCoption::~Coption()rnrnrnrnrnvoid Coption::DoDataExchange(CDataExchange* pDX)rnrn CDialogEx::DoDataExchange(pDX);rnrnrnrnBEGIN_MESSAGE_MAP(Coption, CDialogEx)rn ON_BN_CLICKED(IDCANCEL, &Coption::OnBnClickedCancel)rn ON_BN_CLICKED(IDOK, &Coption::OnBnClickedOk)rnEND_MESSAGE_MAP()rnrnrn// Coption 消息处理程序rnrnrnvoid Coption::OnBnClickedCancel()rnrn // TODO: 在此添加控件通知处理程序代码rn rn //CDialogEx::OnCancel();rn DestroyWindow();rnrnrnrnrnvoid Coption::PostNcDestroy()rnrn // TODO: 在此添加专用代码和/或调用基类rn CDialogEx::PostNcDestroy();rnrn p_view->SendMessage(WM_GOODBYE, 0,0); //屏蔽这一行就不会报错 rnrnrnrnrnrnvoid Coption::OnBnClickedOk()rnrn // TODO: 在此添加控件通知处理程序代码rn //CDialogEx::OnOK();rn DestroyWindow();rnrnrnrn```rnCChildView.cpp:rnrn// ChildView.cpp: CChildView 类的实现rn//rnrn#include "stdafx.h"rn#include "MFCApplication5.h"rn#include "ChildView.h"rn#include "resource.h" // 主符号rnrn#ifdef _DEBUGrn#define new DEBUG_NEWrn#endifrnrnrn// CChildViewrnrnCChildView::CChildView()rnrn m_option = NULL;rnrnrnrnCChildView::~CChildView()rnrnrnrnrnBEGIN_MESSAGE_MAP(CChildView, CWnd)rn ON_WM_PAINT()rn ON_COMMAND(ID_32771, &CChildView::On32771)rn ON_MESSAGE(WM_GOODBYE,ON_GOODBYE)rnEND_MESSAGE_MAP()rn rnLRESULT CChildView::ON_GOODBYE(WPARAM wparam, LPARAM lparam)rnrn /*delete m_option;*/rn m_option = NULL;rn rn return 0;rn rnrn// CChildView 消息处理程序rnrnBOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) rnrn if (!CWnd::PreCreateWindow(cs))rn return FALSE;rnrn cs.dwExStyle |= WS_EX_CLIENTEDGE;rn cs.style &= ~WS_BORDER;rn cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, rn ::LoadCursor(nullptr, IDC_ARROW), reinterpret_cast(COLOR_WINDOW+1), nullptr);rnrn return TRUE;rnrnrnvoid CChildView::OnPaint() rnrn CPaintDC dc(this); // 用于绘制的设备上下文rn rn // TODO: 在此处添加消息处理程序代码rn rn // 不要为绘制消息而调用 CWnd::OnPaint()rnrnrnrnrnvoid CChildView::On32771()rnrn if (NULL==m_option)rn rn /*SetFocus();rn MessageBox(_T("m_option不为空"));*/rn m_option = new Coption;rn m_option->Create(IDD_DIALOG1, this);rn MessageBox(_T("m_option为空"));rn rn rn rn m_option->ShowWindow(SW_SHOW);rn rn rn // TODO: 在此添加命令处理程序代码rnrnrnrn```rnCChildView.h:rnrn// ChildView.h: CChildView 类的接口rn//rnrnrn#pragma oncern#include"Coption.h"rnrn// CChildView 窗口rnrnclass CChildView : public CWndrnrn// 构造rnpublic:rn CChildView();rnrn// 特性rnpublic:rnrn// 操作rnpublic:rnrn// 重写rn protected:rn virtual BOOL PreCreateWindow(CREATESTRUCT& cs);rnrn// 实现rnpublic:rn virtual ~CChildView();rnrn // 生成的消息映射函数rnprotected:rn afx_msg void OnPaint();rn DECLARE_MESSAGE_MAP()rnprotected:rn Coption* m_option;rnpublic:rn afx_msg void On32771();rn afx_msg LRESULT ON_GOODBYE(WPARAM wparam, LPARAM lparam);rn;rnrnrn```rn报错如下:rn![图片说明](https://img-ask.csdn.net/upload/201908/15/1565872965_493989.png)rnrn如果实在没人愿意回答,讲一下编写<em>非模态对话框</em>心得也行
非模态对话框
我在主对话框中有两个单选按钮,想法是:按按钮A,弹出<em>非模态对话框</em>1,关闭或隐藏<em>非模态对话框</em>2;按按钮B,关闭或隐藏<em>非模态对话框</em>1(如果显示的话),弹出<em>非模态对话框</em>2,两个<em>非模态对话框</em>的生成和删除该写在哪里,怎么写?rn教程上方法一通过在<em>非模态对话框</em>中OK或CANCEL按钮中写上DestroyWindow()来删除窗口,重写ONDESTROY()加上DELETE THIS删除对象,如果我不点击OK或CANCEL按钮的话,会自动调用DestroyWindow()吗?rn教程上方法二是通过消息传递在父窗口中实现删除,如果我通过单选按钮的CLICKED事件CREATE的<em>非模态对话框</em>,他的父窗口是单选按钮吗?如果我是在主对话框初始化时就生成<em>非模态对话框</em>,他的父窗口是主对话框吗?如果我想通过一个消息传递,在父窗口中怎么判别删除的是哪个对话框?
非模态对话框做主窗口.窗口过程里面的消息不响应..
#include rn#include "resource.h"rnrnLRESULT CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM) ;rnrnint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,rn PSTR szCmdLine, int iCmdShow)rnrn MSG msg ;rn WNDCLASS wndclass ;rn HWND Dlghwnd ;rn static TCHAR szAppName[] = TEXT("DlgMainWindow") ;rnrn wndclass.style = CS_HREDRAW | CS_VREDRAW;rn wndclass.lpfnWndProc = DlgProc ;rn wndclass.cbClsExtra = 0 ;rn wndclass.cbWndExtra = DLGWINDOWEXTRA ; rn wndclass.hInstance = hInstance ;rn wndclass.hIcon = LoadIcon (hInstance, szAppName) ;rn wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;rn wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH) ;rn wndclass.lpszMenuName = NULL ;rn wndclass.lpszClassName = szAppName ;rnrn RegisterClass(&wndclass) ;rnrn Dlghwnd = CreateDialog(hInstance, TEXT("Dlg"), 0, NULL) ;rn rn ShowWindow(Dlghwnd,iCmdShow) ;rnrn while(GetMessage(&msg, Dlghwnd, 0, 0))rn rn TranslateMessage(&msg) ;rn DispatchMessage(&msg) ;rn rn rn return msg.wParam ;rnrnrnLRESULT CALLBACK DlgProc (HWND Dlghwnd, UINT message, WPARAM wParam, LPARAM lParam)rnrn switch(message)rn rnrn case WM_COMMAND :rn rn switch(wParam)rn rn case IDB_OK :rn MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), MB_OK) ;rn return 0 ;rn rn return 0 ;rn rn case WM_DESTROY :rn //DestroyWindow(Dlghwnd) ;rn PostQuitMessage(0) ;rn return 0;rn rn return DefWindowProc(Dlghwnd, message, wParam, lParam) ;rnrn为什么<em>不响应</em>..我连关闭都是开任务管理器关的.
关于PreTranslateMessage()
BOOL CEurekaDlg::PreTranslateMessage(MSG* pMsg) rnrn BOOL bHandledMsg = FALSE;rnrn switch (pMsg->message)rn rn case WM_KEYDOWN:rn rn switch (pMsg->wParam)rn rn case VK_ESCAPE: //键盘的ESC键rn if (m_bIsCapturing)rn rn StopCapture();rn bHandledMsg = TRUE;rn rn break;rn rn default:rn break;rn rn rn break;rn rn default: rn break; rn rnrn return (bHandledMsg ? TRUE : CDialog::PreTranslateMessage(pMsg));rnrnrn不太明白这段函数要表达意思?????rnrn此外,帮我通俗的解释一下PreTranslateMessage()的意思和如何使用他?
PreTranslateMessage疑问
我在程序中利用钩子捕获所有键盘消息,(钩子没有采用链接库方式)rn在程序中试用了两种方式:rn1。直接在钩子函数中响应我的按键事件,播放相应的声音文件,结果在运行时,声音文件播放了3次才停下来;rn2。在钩子函数中发送自定义的消息,由程序的PreTranslateMessage函数捕获自定义的消息,再进行声音文件的播放,结果该声音文件重复播放rnrn请问这两种情况是什么问题?在步采用链接库的方式下我该怎么解决,谢谢~~!
PreTranslateMessage的问题。
用TAB控件的属性页,为什么换属性页后PreTranslateMessage就不起作用了,除非是点下当前的属性页才起作用。不知道这个怎么做才不用先点属性页。
pretranslatemessage的用法
建立了一个基于对话框的工程,又加载了一个自己的CLabel类,基类CStatic,。然后在对话框中添加了一个CLabel m_label变量,我想在对话框中重载<em>pretranslatemessage</em>函数,在F2—F7键按下时响应相应事件,m_label自己也相应F2-F7的事件,但在对话框的按键不同,m_label的按键对应的事件不同,即:rntestDlg::<em>pretranslatemessage</em>()rnif(pMsg->wParam==VK_F3)rn //再按下F3见后,图片缩放rnif(pMsg->wParam==VK_F4)rn //再按下F4见后,图片漫游rn...rnrnCLabel::<em>pretranslatemessage</em>()rnif(pMsg->wParam==VK_F3)rnrn //放大图片rnrnif(pMsg->wParam==VK_F4)rnrn //缩小图片rnrnrn//漫游怎么实现,也用F3和F4键rnrn...rn
关于 PreTranslateMessage
为什么我重载了这个函数后,运行程序就很慢了,关闭应用程序都不起作用了?CPU使用率也很高,怎么解决。
关于pretranslatemessage
[color=#FF0000]描述[/color]:程序是基于对话框,上面有1 2 3 4个按钮,现在要求按4后播放动画(实际是使用定时器绘图),并隐藏1~4按钮(SHOWWINDOW),动画中有个物体,可以是用方向键控制移动.rncolor=#FF0000]处理消息代码[/color]:rn[code=C/C++]rnBOOL CMyDlg::PreTranslateMessage(MSG* pMsg)rnrn if(pMsg->message == WM_KEYDOWN )rn rn switch(pMsg->wParam)rn rn case VK_LEFT:rn m_pControl->SetOperator(0);rn return true;rn break;rn case VK_RIGHT:rn m_pControl->SetOperator(1);rn return true;rn break;rn case VK_SPACE:rn m_pControl->SetOperator(2);rn return true;rn break;rn case VK_DOWN: //the case is for debugrn MessageBox(L"f");rn return true;rn break;rn default:rn break;rn rn return true;rn rn return CDialog::PreTranslateMessage(pMsg);rnrn[/code]rn按钮4代码:rnvoid CMyDlg::OnBnClickedButton4()rnrn ShowControls(false);rn MSG msg;rn SetFocus();rn while (!m_bOver)rn rn while(PeekMessage(&msg,this->m_hWnd,0,0,PM_REMOVE))rn rn if(msg.message == WM_QUIT)rn rn m_bOver = true;rn rn elsern rn TranslateMessage(&msg);rn DispatchMessage(&msg);rn rn rn rn if(m_bTimeToUpdate)rn rn m_bTimeToUpdate = false;rn m_pControl->Update();rn Invalidate();rn rn rnrncolor=#FF0000]问题[/color]:程序开始运行的话,按VK_DOWN是有BOX出现的,但按按钮4后怎么按方向键都不会响应了.焦点似乎也设了...
ctrl+c PreTranslateMessage
BOOL CNewTransformDLG::PreTranslateMessage(MSG* pMsg) rnrn // TODO: Add your specialized code here and/or call the base classrn if (GetDlgItem(IDC_EDIT_RECORD)->m_hWnd==pMsg->hwnd)rn rn if (pMsg->message==WM_KEYDOWN)rn rn if (GetKeyState('c')message ==WM_LBUTTONDOWN||rn pMsg->message ==WM_LBUTTONUP||rn pMsg->message ==WM_RBUTTONDOWN||rn pMsg->message ==WM_RBUTTONUP||rn pMsg->message ==WM_PAINT||rn pMsg->message ==WM_MOUSEMOVE||rn pMsg->message ==WM_COPYDATA||rn pMsg->message ==WM_COPYrn )rn rn return CDialog::PreTranslateMessage(pMsg); rn rn return TRUE;rn rn return CDialog::PreTranslateMessage(pMsg);rnrnrn有检测到ctrl+c的信息,但是无法复制到数据。请告诉帮忙分析下……rn
请教PreTranslateMessage
rn请教什么时候用PreTranslateMessage呀?rnrn也就说什么时候必需用PreTranslateMessage?rnrn能用例子说明最好,谢谢
PreTranslateMessage()问题
在PreTranslateMessage中如下截取和处理WM_WTSSESSION_CHANGE消息,rnBOOL CMPEGPlayerDlg::PreTranslateMessage(LPMSG lpmsg)rnrn switch (lpmsg->message)rn rn ...rn case WM_WTSSESSION_CHANGE:rn switch( lpmsg->wParam )rn rn case WTS_SESSION_LOCK:rn MessageBox("WTS_SESSION_LOCK", MB_OK );rn break;rn case WTS_SESSION_UNLOCK:rn MessageBox("WTS_SESSION_UNLOCK", MB_OK );rn break;rn default:rn break;rn rn break;rn rn ...rnrn在XP下每次登出(或idle时间长了自动屏保)时,"WTS_SESSION_LOCK"正常被响应,可是再登入时WTS_SESSION_UNLOCK却未必被相应。为什么呢? 我想PreTranslateMessage是不是应该避免被调用? 那么,应该怎样响应WM_WTSSESSION_CHANGE呢? 谢谢。
MFC非模态对话框
功能:实现点击菜单,弹出一对话框,点击菜单XX-XA,弹出XX-XA设置对话框(通过<em>非模态对话框</em>创建) 过程: 在菜单里面加入XX-XA; 查看该菜单所在的类; 在该类里面,给该菜单添加消息映射,COMMAND消息对应OnXxxa()方法; 将消息与弹出的对话框关联起来:即点击菜单,弹出XX-XA对话框 通过下面函数来实现: 此函数将菜单和对话框连接起来 。。。 void 
【MFC】非模态对话框
1.打开VS2015 MFC 2.打开工具箱新建按钮button1 3.插入资源dialog1 4.dialog1添加类自动生成NonModal.h,NonModal.cpp 5.#include "NonModal.h"添加至MFCApplication1Dlg.h 6.MFCApplication1Dlg.h中定义NonModal类型的指针变量 class CMFCApplic
非模态对话框的消息循环
我是新手啊,rn想用Programming Windows教的方法生成一个<em>非模态对话框</em>,rnPazold说要改消息循环为rnwhile(GetMessage(&msg,NULL,0,0))rnrn if(hDlgModeless == 0||!IsDialogMessage(hDlgModeless,&msg))rn rn //translate and dispatch message rn rnrn这就是说要在WinMain里获得父窗口句柄以生成对话框,rn但是新版的VS2005自动生成的代码把registerClass封装成函数了,rn在WinMain里没有hWnd的……这样的话,在WinMain里就不能生成对话框,也就不能改消息循环了……rn我当然知道可以改一下VS2005的代码,让那个函数返回给我一个hWnd,rn但是我想知道在不修改他的代码的情况下怎么实现相同功能?
关于非模态对话框
请问,怎样将一个<em>非模态对话框</em>显示在一个文档的某个特定位置,随之而生,随之而灭。我已知这种对话框的显示是用Create()函数来完成的。此外,对话框的位置是否可以通过在资源中对话框的属性中来设置。
非模态对话框问题
自己创建了一个<em>非模态对话框</em>,这个对话框只有X和标题,不知道如何通过代码形式增加最大化和最小化按钮?rn还有一个问题是<em>非模态对话框</em>我不通过DESTORY函数把它销毁,在程序退出,堆里面的资源是不是会自动回收呢?
非模态对话框传递数据
我用<em>非模态对话框</em>传递参数,在CMainFrame中添加了一个指向<em>非模态对话框</em>的指针CPostMessage* m_pPostMessage;rn<em>非模态对话框</em>的类是CPostMessage继承自CDialog,但是在rnCMainFrame::CMainFrame()rnrn // TODO: add member initialization code herern m_pPostMessage=NULL;rn rnrnrnCMainFrame::~CMainFrame()rnrn if(m_pPostMessage!=NULL) rn delete m_pPostMessage;rnrn错误:rnE:\C++ Data\sample06022\MainFrm.cpp(42) : error C2582: 'CPostMessageDlg' : 'operator =' function is unavailablernE:\C++ Data\sample06022\MainFrm.cpp(48) : error C2666: '!=' : 2 overloads have similar conversions
非模态对话框置顶
我主对话框中有很多按钮,每个对应一个<em>非模态对话框</em>,现在要就一个<em>非模态对话框</em>置顶。rnSetWindowPos(&wndTopMost,0,0,0,0),SWP_NOSIZE|SWP_NOMOVE);rn虽可置顶,但打开其他程序也置顶了。怎么只在我这个程序中置顶啊,查不到答案,求助CSDN高手
非模态对话框的创建
CSocketPicDlg *dlg=new CSocketPicDlg();rn dlg->Create(IDD_SOCKETPIC_DIALOG,this);rn dlg->ShowWindow(SW_SHOW); rnrn这个是我的代码,写在另一个对话框的一个按键处理函数里的,按下键后,IDD_SOCKETPIC_DIALOG这个对话框闪了一下,所有的东西都被关闭了,包括先前的那个对话框。rn rn我是在别人的基础上写的,本来是SOCKETPIC的工程,自己建了一个dialog,把原来的IDD_SOCKETPIC_DIALOG通过新建的对话框来产生,请了解或者不了解的童鞋给点建议,谢谢了
非模态对话框 的问题!
<em>非模态对话框</em> 的问题!rnrnrn怎么给父窗口赋值???rnrnrn例如rnrnmain m;rnrnm.sub = true;rnrnrn这个方法在模态对话框可以用.rnrn但是非模态怎么设置不了呢??rnrn求答案
非模态对话框的销毁
我在一个对话框程序中新建了一个基类为CDialog的对话框类CItem,rn[code=C/C++]rnvoid CTest2Dlg::OnBnClickedButton1()rnrn // TODO: 在此添加控件通知处理程序代码rn m_pCItem = new CItem ;rn m_pCItem->m_strItem = "hello!" ;rn m_pCItem->Create( IDD_ITEM_DIALOG , this ) ;rn m_pCItem->ShowWindow(SW_SHOW) ;rnrn[/code]rn以上代码动态生成,我想知道弹出的这个对话框在点击该对框的OK或Cancel时如何销毁
非模态对话框???很急
小弟不是经常用VC,在VC中显示模态对话框是:rnCAboutDlg dlgAbout;rnrndlgAbout.DoModal();rn但是不知道<em>非模态对话框</em>具体怎么作请高手指点,谢谢了~~~~rn最好有代码
非模态对话框的消息处理
非模态显示对话框,<em>pretranslatemessage</em><em>不响应</em>,目前我用的hook处理,不知有什么其他好的办法处理这个问题???
非模态对话框问题?
使用<em>非模态对话框</em>编程,设置了一个全局CMyDialog的指针变量,在程序加载时调用Create,创建了一个<em>非模态对话框</em>,但是我当时并没有Showwindow,后来在程序的其他消息响应的时候我再用那个全局指针调用Showwindow,跟踪调试发现是在IsWindowEnabled中发现指针指向的好像已经不是window了,所以出错,我在对话框类中添加了PostNcDestroy消息响应函数后调试发现在Create的最后居然调用这个函数?不知道这是什么原因啊?
非模态对话框的烦恼
各位乡亲父老:rn 正如你们所知,<em>非模态对话框</em>是show后立即返回的,但是我想通过主对话框将一串CString字符传递给<em>非模态对话框</em>,并在其上的listbox控件上显示,是主对话框主动发给<em>非模态对话框</em>,所以在<em>非模态对话框</em>中调用主对话框函数是不行的。有没有什么方案可以帮助一下小弟,不甚感激!
创建非模态对话框
Windows的API(Application Programming Interface,应用程序编程接口),是Windows 操作系统提供给应用程序的大量函数,学习本课程,不仅可以掌握Windows界面编程,开发华丽的Windows桌面运用程序,也可以为MFC框架的学习奠定扎实的基础,同时是否熟练的掌握Windows API开发,也是企业考量优秀程序员一个非常重要的指标!
OnKillFocus 非模态对话框
一个对话框 上面加了些控件 对话框响应OnKillFocus 这样的话在Create的时候就失败了 如果把加上的控件删掉或者<em>不响应</em>OnKillFocus就没问题,请教下这是什么原因。(用这个是就是做表情和调色换肤的那个对话框,但是出现了这问题)
非模态对话框重定位
我写了个<em>非模态对话框</em>,然后用rn::SetWindowPos(m_hWnd,HWND_TOPMOST,rect.BottomRight().x-525,rect.BottomRight().y+200,rect.Width(),rect.Height(),SWP_SHOWWINDOW);rnrn给它重新定位,但是不行,我在模态对话框中是行的,不知道为什么,大家帮忙看下,谢谢rnrn
非模态对话框的消息响应
各位大虾好,我在做一个耗时操作时弹出一个<em>非模态对话框</em>提示“正在。。。",但是我想在这个<em>非模态对话框</em>上设置一个”取消"按钮,当我想取消这个操作时点击它则DestroyWindow(),但是现在当我点击后,它得等到执行完这个耗时操作后才会响应我在这个<em>非模态对话框</em>上点击的消息,请各位高手指点,我该如何让它及时响应呢?
关闭非模态对话框引起的模态对话框成了非模态对话框
先点工具栏按钮,生成一个<em>非模态对话框</em>,再点一个按钮,先PostMessage::FindWindow(NULL, "我的<em>非模态对话框</em>名"),WM_CLOSE, NULL,NULL);关闭此<em>非模态对话框</em>,再新生成一个模态对话框,可是此时新生成的模态对话框行为象<em>非模态对话框</em>一样了,此模态对话框未被处理,仍可点击主窗体中的其他按钮或在主窗体中做别的事。rn1.这是为什么?rn2.如何在这样的过程中使后来新生成的模态对话框表现地象模态对话框,得到所有的消息?
构建非模态对话框
关于非模态构建,做了个具体的示例。简单,明了。
关闭非模态对话框
大家好!rn我的对话框上没有OK和cancel按扭,所以我只能用标题栏上那个X来关闭。rn点X后,对话框是关闭了,可是下次再从Mainframe中启动后就出错了!rn请问点击X是对应的什么消息?rn我应该将destroywindow()函数放到mainframe类中,还是dialog类中?rn谢谢!
非模态对话框的问题
我要弹出几个非模态的对话框,这几个对话框需要设置为child样式。rn现在的问题是当有两个对话框重叠时,我点击上面的对话框会点到下面对话框的控件,这是怎么回事?
求助:非模态对话框
按下按钮,打开<em>非模态对话框</em>,同时使这个按钮失效rn当关闭打开的<em>非模态对话框</em>时,我想要使这个按钮有效,但是一直出错!rn我在<em>非模态对话框</em>类中定义了CWnd *p_Wnd;rnvoid C***1::OnCancel()rn rn ((CMyMp3Dlg *)m_pWnd)->FinishDlg(); //FinishDlg在主对话框中定义,使按钮有效rnrn DestroyWindow();rnrnrnvoid C***2::FinishDlg()rnrn GetDlgItem(IDC_BUTTON)->EnableWindow();rnrn调试到调用这个GetDlgItem(IDC_BUTTON)->EnableWindow();时出错!rn求解…………
非模态对话框数据传递
我在主对话框中有两个单选按钮,想法是:按按钮A,弹出<em>非模态对话框</em>1,关闭或隐藏<em>非模态对话框</em>2;按按钮B,关闭或隐藏<em>非模态对话框</em>1(如果显示的话),弹出<em>非模态对话框</em>2,如何把<em>非模态对话框</em>1和2的数据传到主对话框中(不想通过ok键或CANCEL键处理),还有在何处删除<em>非模态对话框</em>比较好
非模态对话框 显示
我在单文档程序中创建了一个非模态的对话框,对话框里有进度条,可是当我把他最小化后,再点还原的化,这个对话框就什么都没有了(原来有一个列表),如果我再点该对话框(不是点关闭按钮),他居然就不见了rn CprogressDlg *progressdlg1 = new CprogressDlg();rn progressdlg1->Create(IDD_PROGRESSDLG);rn progressdlg1->CenterWindow();rn progressdlg1->ShowWindow(SW_SHOW);rn我是这样创建的,能显示出来,就是最小化的时候就会有问题
销毁非模态对话框
在基于Dialog的MFC工程中,主窗口包含一个<em>非模态对话框</em>的成员,类型是类的实例(不是指针),rn在某一个Button的响应函数中显示这个<em>非模态对话框</em>,在另外某一个时刻要做如下2件事情:rn该窗口存在,则不做任何动作(实际代码做ShowWindow动作)。rn该窗口不存在,则创建一个新的窗口显示(各种状态都是新的)。rnrn现在对于窗口是否存在的判定是通过m_subdlg.GetSafeHwnd()实现的,发现的问题是rn当非模态窗口关闭(点击右上角的X),这个函数的返回值仍然不是NULL。rnrn这样的话问题就来了,从User看窗口已经关闭了,但是再次呼出该非模态窗口仍然是rn旧的状态。rnrn尝试在OnClose中给自己发送WM_NCDESTROY,发现窗口以空白状态一直挂在那里了。rn尝试在主窗口给其发送WM_NCDESTROY,倒是可以关闭但是GetSafeHwnd()返回值rn有异常,导致已经显示的<em>非模态对话框</em>被销毁了。rn概要代码:rn[code=c]rnif(m_subdlg.GetSafeHwnd() != NULL)rn m_subdlg.SendMessage(WM_NCDESTROY); //非模态窗口存在,仍然被销毁了。rnrnm_subdlg.Create(IDD_DIALOT1,this)rnm_subdlg.ShowWindow(SW_SHOW)rn*************************************************************************rnif(m_subdlg.GetSafeHwnd() == NULL)//只要创建了一次,永远不成立rn m_subdlg.Create(IDD_DIALOT1,this)rnrn[/code]
非模态对话框的问题?
在主框架类里面定义了两个对话框对象rnCDlg1 *p_dlg1; rnCDlg2 *p_dlg2rn主框架初始化时 创建了<em>非模态对话框</em>rn p_dlg1= new CDlg1 ;rn p_dlg1->Create(IDD_DLG_RECORD);rn p_dlg1->ShowWindow(SW_HIDE);rn rnp_dlg2= new CDlg2 ;rnp_dlg2->Create(IDD_WATCH_DIALOG);rnp_dlg2->ShowWindow(SW_HIDE); rn应用程序中有两个按钮 button1 和 button2对应的函数就是将两个对话框打开rn即button1 执行 p_dlg1->ShowWindow(SW_SHOW); rnbutton2执行 p_dlg2->ShowWindow(SW_SHOW); rn现在问题是:若两个对话框同时存在的话,必定是dlg2在dlg1前面,无论先打开谁!rn为什么?有什么办法可以激活谁谁就在前呢?
按钮闪烁处理PreTranslateMessage
按钮如何闪烁起来;串口发送数据;通过PreTranslateMessage事件来处理多个按钮的点击事件(而不是每一个写一个单击事件)
键盘消息响应PreTranslateMessage vc++
键盘消息响应PreTranslateMessage vc++
PreTranslateMessage的参数*pMsg
PreTranslateMessage的参数*pMsg是一个结构体rntypedef struct tagMSG // msg rn HWND hwnd;rn UINT message;rn WPARAM wParam;rn LPARAM lParam;rn DWORD time;rn POINT pt;rn MSG;rnrnMSDN中说到:rn hwnd:Identifies the window whose window procedure receives the message.rnrn[color=#FF0000]可是我调试的时候,发现hwnd一直在变啊。调试-》退出调试,然后再调试的时候,hwnd会变,而且也不等于主窗口句柄。请问*pMsg中的hwnd到底是谁的句柄?[/color]rn我的对话框如下图:rn[img=https://img-bbs.csdn.net/upload/201405/28/1401256806_363860.jpg][/img]rn我调试的程序如下:rn[code=c]rnBOOL CHotKeysAppDlg::PreTranslateMessage(MSG* pMsg)rnrn HWND hwnd;rn HWND wnd;rn if (pMsg->message==WM_KEYDOWN)rn rn hwnd=pMsg->hwnd;rn wnd=m_hWnd;rn rn return CDialogEx::PreTranslateMessage(pMsg);rnrn[/code]rn[color=#FF0000]我调试发现hwnd和wnd并不相等,CHotKeysAppDlg是我的主对话框[/color]rnrnrn
PreTranslateMessage键盘消息
例如:按下1键,提示MessageBox(“1”);rn按下ctrl+1+0,提示MessageBox(“10”);rn按下ctrl+1+1,提示MessageBox(“11”);rnrn。。。。。rn如何实现!????rnrn
cwinapp::pretranslateMessage 什么时候调用的
cwinapp::pretranslateMessage 什么时候调用的
PreTranslateMessage头疼问题
以前响应的系统软键盘,现在我用N个按钮做了一个键盘,界面上有一EDIT控件,此控件关联一个CString类型变量m_strInput,比如说按下a 时,m_strInput+="a";rn我的键盘响应函数现在是这么写的,可以按下按钮后并<em>不响应</em>,我觉得下面的函数有问题,又不知道如何改,请各位大侠指点rnBOOL CMyDlg::PreTranslateMessage(MSG* pMsg)rnrn if(pMsg->message==WM_KEYDOWN) rn rn switch(pMsg->wParam)rn rn case 0x41 :m_strText+="a"; ProcessFun();break;rn case 0x42 :m_strText++"b"; ProcessFun();break;rn …………………rn rn rn return CDialog::PreTranslateMessage(pMsg);rn
PreTranslateMessage处理消息的问题
我要实现的是按一下键盘 'A',就调用一次相应的函数;rnrn可是我测试的时候发现按一下,它就调用了3次;rnrn我在每次输入后面加入sleep函数也不行,rnrn有什么办法控制吗rn
PreTranslateMessage(MSG* pMsg) 的用法?
什么时候需要用到它呢?PreTranslateMessage(MSG* pMsg) rnrn用它能给写程序带来方便吗?
PreTranslateMessage中sendmessage
自定义的edit,输入格式如下rn00:00:00.000Ern就是输入东西经度、分、秒的rn其它的输入形式都已经做的差不多了,只差一些复制/粘贴了rn我定义的删除(回退键)效果是rn12:34:56.789Ern的时候,全选删,结果是rn00:00:00.000Ern选中34:56删,结果是rn12:00:00.789Ernrn我要贴切也是这个效果rnrn如rn12:34:56.789Ern选中34:56rnctrl+xrn34:56被复制rn12:34:56.789Ern变成rn12:00:00.789ErnrnPreTranslateMessage中我是这么写的rnif (pMsg->message == WM_CHAR)rnrnif (nChar>='0' && nCharmessage)rnrn这里处理剪切消息rnrn问题就在这里,我想先rnpMsg->message = WM_COPY,把剪切改成复制rn然后再rnthis->sendMesaage(VK_BACK...);或者postMessage(VK_BACK...);rn把按下回退键的消息再发给edit.这样合理吗,貌似好像不行.rnrnrnrnrn第二个方案=======================================================rnrnif (pMsg->message == WM_CHAR)rnrnif (nChar>='0' && nCharmessage)rnrn这里处理剪切消息rnrn问题就在这里,我想先rnpMsg->message = WM_COPY,把剪切改成复制rn然后再rnCEdit::PreTranslateMessage(pMsg);rn直接调用父类函数.rn然后再rnpMsg->message = WM_CHAR;rnpMsg->wParam = VK_BACK;rnrnrn最后有个rnreturn CEdit::PreTranslateMessage(pMsg);rnrn可行不可行?
请问一下关于PreTranslateMessage!
我看了MSDN,里面说这个函数在TranslateMessage和DispatchMessage之前进行消息转换,我不是太明白,请问一下这个函数有什么作用阿!
模态和非模态对话框
模态对话框:点击出来一个对话框后,背后的对话框不能点击<em>非模态对话框</em>:能点击#include &quot;mainwindow.h&quot;#include&amp;lt;QMenu&amp;gt;#include&amp;lt;QMenuBar&amp;gt;#include&amp;lt;QAction&amp;gt;#include&amp;lt;QDialog&amp;gt;#include&amp;lt;QDebug&amp;gt;MainWindow::MainWindow(QWid...
快速还原工具V4.0单机版下载
软件适用于个人电脑,让您的电脑更安全 绿色软件,让您更放心使用 保护您的系统安全 相关下载链接:[url=//download.csdn.net/download/m289065365/2191775?utm_source=bbsseo]//download.csdn.net/download/m289065365/2191775?utm_source=bbsseo[/url]
EditPlus 2.12 绿色破解最新下载
技巧中,基于平时我对EditPlus的摸索实践而成,在编译器集成例子中参照了部分官方的文献。有几篇是从网上搜集来的,这里我注明了来源或原始作者。如果你是相应作者,不希望文章放在这里,请通知我,我会及时删掉。 -----Liangjh 自己写的一些里面,不见得有多大的技术含量,只是希望有时能够节省大家的一些时间 如果你有好的见解分享,请发邮件至 liang.yeah@yeah.net ------------------------------------------------------ 文章或者技巧及原始作者或出处: 正则表达式类 【1】 正则表达式应用——替换指定内容到 相关下载链接:[url=//download.csdn.net/download/my100love/2472030?utm_source=bbsseo]//download.csdn.net/download/my100love/2472030?utm_source=bbsseo[/url]
算术编码介绍下载
算术编码的简单介绍,帮助入门及加深理解 算术编码是将一个符号序列表示成0和1之间的一个间隔(Interval),并用该间隔内的一个浮点小数表示,再将该小数转换成二进制数。符号序列越长,对应的间隔越小,表示这一间隔的二进制位数就越多。 相关下载链接:[url=//download.csdn.net/download/weixiaoxiangrikui/4789193?utm_source=bbsseo]//download.csdn.net/download/weixiaoxiangrikui/4789193?utm_source=bbsseo[/url]
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数
我们是很有底线的