|
Thanks Iain.
It just bugged me, I kept thinking there got to be some “index” somewhere to keep track of the range.
So – I made three major mistakes -
I have no clue why I thought PostMessage(ID_whatever) would work.
Second mistake and third – I thought the the MFC will route the message thru main frame first.
So if I do PostMessage(WM_COMMAND, ID_STATUS_99) it works only when posted in main frame.
I'll admit – most of the time I just do not understand how MFC routes the messages!
In this “case” I have a Cview in splitter and maybe that is the “problem”.
I guess I need to look it up somewhere , again!
I was planning to have the actual text in the function which updates the status text.
Anyway – I'll take a look at registered message as you suggested.
Cheers
Vaclav
In the mean time I cheated this way
AfxGetMainWnd()->PostMessage(WM_COMMAND ,ID_STATUS_99);
but there is still a problem - the status update is called when anything is updated ( duh) and the text goes back to the first index in range.
Working on that. Perhaps static text variable will do.
-- modified 24-Jan-13 11:47am.
|
|
|
|
|
I would recommend against using WM_COMMAND for your status update message, and go for the registered window message:
1/ It saves command collision
2/ MFC does a LOT of work routing command messages about. This is one of its great strengths, and makes many things nice and elegant, but it can be confusing too.
3/ As long as you use the same string id for the message, you don't have to share header files, making code independence a bit cleaner.
Doing AfxGetMainWnd()->PostMessage is not cheating at all! Just change from WM_COMMAND and I'll be happy with you.
As you why the status bit is being reset? No idea, that will depend on the details of your code. I bet your command handler is being called from places you didn't expect. (See point 1 above).
Iain.
I am one of "those foreigners coming over here and stealing our jobs". Yay me!
|
|
|
|
|
I wrote one application. The main frame is a form without border. So it donot have the task bar mouse click function. The first mouse click on the application icon in the task bar, the application will hide. The second mouse click, this application will show.
After I debug in the OnActiveApp, I find that sometime one OnActiveApp called, the other two OnActiveApp called when use mouse click the taskbar icon. How to filter the useless OnActiveApp event?
|
|
|
|
|
What is it that you're trying to do?
If you want the alter the minimize and restore operations that happen when you click on the task bar button, handle the WM_SYSCOMMAND message and check for SC_MINIMIZE and SC_RESTORE in its wParam argument.
You then simply return 0 to prevent the default action from being performed.
|
|
|
|
|
I tryed it. But when click there is no message can be accepted in the mainframe.
|
|
|
|
|
hi all,
i like the left side panel view of control panel in windows 7.
is this possible to use or draw this type of panel in dialog based application?
if yes please help me from where i can start for this?
thanks in advance.
|
|
|
|
|
|
what about its glassy effect?
|
|
|
|
|
|
i already work with aero glass theme, and DWM (Desktop Window Manager)
Use DwmExtendFrameIntoClientArea and other function for aero glass theme and its works.
but this works only when aero theme and its drier properly istalled.
but the glassy look of list box with sys links (left panel) of the control panel looks glassy even aero theme is available or not.
so how can i draw this even aero theme is not available .
thanks.
|
|
|
|
|
VCProgrammer wrote: so how can i draw this even aero theme is not available . Sorry, I don't know about that one. Try searching the articles section to see if there are any suggestions there.
|
|
|
|
|
Pardon me!! I am new here. I am unable to use addNode function. When i declare Node* it doesnt compile.
I am trying to implement a linked list in c++ without
using structures and only use pure classes.I am rusty here. Any help would be great.
head->addNode() and head.addNode() doesnt work.
#include<iostream>
#include<cstdlib>
using namespace std;
class Node
{
int data;
Node* next;
public:
Node()
{
data=0;
next=NULL;
}
void addNode(int a)
{
if(this!=NULL)
{
data=a;
next=NULL;
}
}
};
void main()
{
Node* head;
head.addNode(10);
}
|
|
|
|
|
addNode is not a member of the Node class.
class Node
{
public:
void addNode(int a);
};
void Node::addNode( int a )
{
}
your addNode is not good, you need to think things over; you do not allocate a new node; you do not assign the next pointer ...
I find that using free functions instead of class methods makes things easier when doing this; a node only contains the data (and the next pointer).
if all fails, use std::vector.
Good luck.
Nihil obstat
|
|
|
|
|
void main()
{
Node* head;
head.addNode(10);
}
Create the object in the heap first. You just declared a variable stating "I will hold address of Node object in a variable head". But, where does that object? When there is no object head-> will not work. Head.addNode() also wont work as the object is not in stack.
Correction:
void main()
{
Node* head = new Node();
head->addNode(10);
}
Object will be created in heap.
or
void main()
{
Node head;
head.addNode(10);
}
Object will allocated on stack
|
|
|
|
|
I try to change CScrollBar's interface (MySkinScrollbar is delivered MFC's CScrollBar).
I loaded image to draw over the windows's classic interface -> It's done.
But when I click on "UpArrow" button in ScrollBar. The windows's classic interface is drawn over my image.
I think I should catch WM_LBUTTONDOWN and WM_LBUTTONUP message to redraw (calling Invalidate()).
I'm success in catching WM_LBUTTONDOWN message.
But I can't catch WM_LBUTTONUP message.
Please help me to solve this problem!
You can search with key word "//Why don't show message ?????". Jump to my problem.
This is my project (use VS 2003):
Download Project
By the way, please tell me the way to reset default the Visual Studio 2003 (like has just installed)!
Thanks for all !!!!!
(I'm Vietnamese. So my English is not good. If I make some mistakes, please help me out.)
|
|
|
|
|
|
Richard MacCutchan wrote: You may want to look into the Custom draw[^] or Subclassing Controls[^] features of Windows controls.
Would you show me the detail?
I use MFC to "remix" control. I don't use WINAPI.
Please help me!
My deadline is no longer !!!!!
Thanks for all !
|
|
|
|
|
Weird, I have tested myself your application, and another one from [here], and WM_LBUTTONUP mapped does not function ... why do you need this handler ? Maybe you can slove your task in another way ...
|
|
|
|
|
Flaviu2 wrote: why do you need this handler ? Maybe you can slove your task in another way ...
First, I thank you for replying !
I need WM_LBUTTONUP to solve my problem: When I click on "Up/Left Arrow Button" or "Down Arrow Button", my scroll bar's interface become a window classic interface.
I have a mini clip to explain my problem.
|
|
|
|
|
I don't know if it's suitable for you, but why don't change the scrollbar style on left button down ? It's just an ideea ...
|
|
|
|
|
Flaviu2 wrote: I don't know if it's suitable for you, but why don't change the scrollbar style on left button down ? It's just an ideea ...
Thanks for your great idea!
I solved this problem, other problem is appeared.
Could you tell how to "redraw the thumb" in my skin scroll bar (with ListBox) ?
I don't have a algorithm to solve
This is a mini clip to explain my trouble ! (The thumb isn't moved ????? )
Please help me!
Thanks for all!
|
|
|
|
|
Bee cute wrote: Would you show me the detail? What detail? I have given you links to the two features you need to investigate for Win32 controls. You can follow up by checking the documentation for the MFC classes.
|
|
|
|
|
Richard MacCutchan wrote: What detail? I have given you links to the two features you need to investigate for Win32 controls. You can follow up by checking the documentation for the MFC classes.
I have visited your link but I understood a little. I am bad at Win32 (WinAPI). I only know MFC.
Thanks so much for your help!
|
|
|
|
|
Bee cute wrote: I only know MFC You can still inherit from MFC classes and change their behaviour.
|
|
|
|
|
Richard MacCutchan wrote: You can still inherit from MFC classes and change their behaviour.
Thank you for your enthusiasm so much !
I solved this problem and I have other problem.
Could you tell how to "redraw the thumb" in my skin scroll bar (with ListBox) ?
I don't have a algorithm to solve
This is a mini clip to explain my trouble ! (The thumb isn't moved ????? )
Please help me!
Thanks for all!
|
|
|
|